Author: Ernesto Posse Description:
Category of finite sets
Typical use:
Cat = DefaultFiniteSetCategory S1 = Set([‘a’,’b’,’c’]) S2 = Set([0,1]) f = Function(S1, S2, {‘a’:0, ‘b’:1, ‘c’:0}) P = S1 * S2 # equivalent to P = DefaultFiniteSetCategory.cartesian_product(S1,S2) D = S1 + S2 # equivalent to P = DefaultFiniteSetCategory.disjoint_union(S1,S2) x = P.proj1((‘b’,0)) y = S.inj1(‘c’) z = S.inj2(1) u = P.unique_arrow(D.vertex) w = u((‘a’,1)) g = Function(S1, S2, {‘a’:1, b:‘1’, ‘c’:0}) Q1 = Cat.equalizer(f, g) Q2 = Cat.coequalizer(f, g) S3 = Set([‘x’,’y’,’z’]) h = Function(S3, S2, {‘x’:0, ‘y’:0, ‘z’:0}) P2 = Cat.pullback(f, g) k = Function(S1, S3, {‘a’:’y’, ‘b’:’y’, ‘c’:’x’}) P3 = Cat.pushout(f, k)
Cat = FiniteSetCategory() Cat.add_object(S1) Cat.add_object(S2) Cat.add_arrow(f)