Skip to content

Commit

Permalink
Fix pregroup swap rotation (#258)
Browse files Browse the repository at this point in the history
  • Loading branch information
nikhilkhatri committed Jan 12, 2024
2 parents bf9ded1 + 6d098e6 commit ec3c570
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 0 deletions.
3 changes: 3 additions & 0 deletions discopy/grammar/pregroup.py
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,9 @@ class Swap(frobenius.Swap, Box):
"""
A pregroup swap is a frobenius swap in a pregroup diagram.
"""
def rotate(self, left=False):
return (type(self)(self.left.l, self.right.l) if left else
type(self)(self.left.r, self.right.r))


class Spider(frobenius.Spider, Box):
Expand Down
8 changes: 8 additions & 0 deletions test/grammar/pregroup.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,3 +61,11 @@ def test_from_tree():
loves = Word('loves', n.r @ s @ n.l)
sentence = Alice @ loves @ Bob >> Cup(n, n.r) @ Id(s) @ Cup(n.l, n)
assert sentence == from_tree(sentence.to_tree())


def test_pregroup_swap_rotation():
s, n = Ty('s'), Ty('n')
assert Swap(n, s).r.dom == Swap(n, s).cod.r
assert Swap(n, s).l.dom == Swap(n, s).cod.l
assert Swap(n, s).l.cod == Swap(n, s).dom.l
assert Swap(n, s).r.cod == Swap(n, s).dom.r

0 comments on commit ec3c570

Please sign in to comment.