Processing math: 100%
monoidal-functors-0.2.0.0: Monoidal Functors Library
Safe HaskellSafe-Inferred
LanguageHaskell2010

Data.Trifunctor.Monoidal

Synopsis

Semigroupal

class (Associative cat t1, Associative cat t2, Associative cat t3, Associative cat to) => Semigroupal cat t1 t2 t3 to f where Source #

Given monoidal categories (C,,IC) and (D,,ID). A bifunctor F:C1×C2×C3D is Semigroupal if it supports a natural transformation ϕABC,XYZ:F A B CF X Y ZF (AX) (BY) (CZ), which we call combine.

Laws

Associativity:

(FABCFXYZ)FPQRαDFABC(FXYZFPQR)ϕABC,XYZ11ϕXYZ,PQRF(AX)(BY)(CZ)FPQRFABC(F(XP)(YQ)(ZR)ϕ(AX)(BY)(CZ),PQRϕABC,(XP)(YQ)(ZR)F((AX)P)((BY)Q)((CZ)R)FαC1αC2αC3F(A(XP))(B(YQ))(C(ZR))

combine . grmap combine . bwd assocfmap (bwd assoc) . combine . glmap combine

Methods

combine :: to (f x y z) (f x' y' z') `cat` f (t1 x x') (t2 y y') (t3 z z') Source #

A natural transformation ϕABC,XYZ:F A B CF X Y ZF (AX) (BY)(CZ).

Unital

class Unital cat i1 i2 i3 o f where Source #

Given monoidal categories (C,,IC) and (D,,ID). A bifunctor F:C1×C2×C3D is Unital if it supports a morphism ϕ:IDF IC1 IC2 IC3, which we call introduce.

Methods

introduce :: o `cat` f i1 i2 i3 Source #

introduce maps from the identity in C1×C2×C3 to the identity in D.

Monoidal

class (Tensor cat t1 i1, Tensor cat t2 i2, Tensor cat t3 i3, Tensor cat to io, Semigroupal cat t1 t2 t3 to f, Unital cat i1 i2 i3 io f) => Monoidal cat t1 i1 t2 i2 t3 i3 to io f Source #

Given monoidal categories (C,,IC) and (D,,ID). A bifunctor F:C1×C2×C3D is Monoidal if it maps between C1×C2 ×C3 and D while preserving their monoidal structure. Eg., a homomorphism of monoidal categories.

See NCatlab for more details.

Laws

Right Unitality:

FABCID1ϕFABFIC1IC2IC3ρDϕABC,IC1IC2IC3FABCFρC1ρC2ρC3F(AIC1)(BIC2)(CIC3)

combine . grmap introducebwd unitr . fwd unitr

Left Unitality:

IDFABCϕ1FIC1IC2FABCλDIC1IC2IC3,ϕABCFABCFλC1λC2λC3F(IC1A)(IC2B)(IC3C)

combine . glmap introducefmap (bwd unitl) . fwd unitl