Functor

Contents

Functor#

class discopy.feedback.Functor(ob=None, ar=None, dom=None, cod=None)[source]#

Bases: discopy.markov.Functor

A feedback functor is a markov one that preserves delay and feedback.

Parameters:

Example

>>> x, y, m = [Ty(Ob(n, is_constant=False)) for n in "xym"]
>>> f = Box('f', x @ m.d, y @ m)
>>> g = Box('g', y.d @ m.d.d, x.d @ m.d)
>>> F = Functor({x: y.d, y: x.d, m: m.d}, {f: g})
>>> assert F(f.delay()) == F(f).delay()
>>> assert F(f.feedback()) == F(f).feedback()
>>> assert F(x.head) == F(x).head and F(x.tail) == F(x).tail
>>> assert F(FollowedBy(x)) == FollowedBy(F(x))
>>> assert F(f.head) == F(f).head and F(f.tail) == F(f).tail