def test_draw_who(): n, s = Ty('n'), Ty('s') copy, update = Box('copy', n, n @ n), Box('update', n @ s, s) return Cap(n.r, n)\ >> Id(n.r) @ copy\ >> Id(n.r @ n) @ Cap(s, s.l) @ Id(n)\ >> Id(n.r) @ update @ Id(s.l @ n)
def test_who_ansatz_to_tikz(): s, n = Ty('s'), Ty('n') who = Word('who', n.r @ n @ s.l @ n) who_ansatz = Cap(n.r, n)\ >> Id(n.r) @ Box('copy', n, n @ n)\ >> Id(n.r @ n) @ Cap(s, s.l) @ Id(n)\ >> Id(n.r) @ Box('update', n @ s, n) @ Id(s.l @ n) return who, who_ansatz
def test_draw_eggs(): def merge(x): return Box('merge', x @ x, x) egg, white, yolk = Ty('egg'), Ty('white'), Ty('yolk') crack = Box('crack', egg, white @ yolk) crack_two_eggs = crack @ crack\ >> Id(white) @ Swap(yolk, white) @ Id(yolk)\ >> merge(white) @ merge(yolk) return crack_two_eggs
def test_pregroup_draw(): s, n = Ty('s'), Ty('n') Alice, Bob = Word('Alice', n), Word('Bob', n) loves = Word('loves', n.r @ s @ n.l) return Alice @ loves @ Bob >> Cup(n, n.r) @ Id(s) @ Cup(n.l, n)
def test_snake_equation_to_tikz(): x = Ty('x') return Id(x.r).transpose(left=True), Id(x), Id(x.l).transpose()
def test_sentence_to_tikz(): s, n = Ty('s'), Ty('n') Alice, Bob = Word('Alice', n), Word('Bob', n) loves = Word('loves', n.r @ s @ n.l) return Alice @ loves @ Bob >> Cup(n, n.r) @ Id(s) @ Cup(n.l, n)
def test_copy_to_tikz(): x, y = map(Ty, ("$x$", "$y$")) copy_x, copy_y = Box('COPY', x, x @ x), Box('COPY', y, y @ y) copy_x.draw_as_spider, copy_y.draw_as_spider = True, True copy_x.color, copy_y.color = "black", "black" return copy_x @ copy_y >> Id(x) @ Swap(x, y) @ Id(y)
def test_draw_typed_snake(): x = Ty('x') return Id(x.r).transpose(left=True), Id(x), Id(x.l).transpose()
def test_draw_bialgebra(): from discopy.quantum.zx import Z, X, Id, SWAP bialgebra = Z(1, 2) @ Z(1, 2) >> Id(1) @ SWAP @ Id(1) >> X(2, 1) @ X(2, 1) return bialgebra + bialgebra