úÎP´J»O      !"#$%&'()*+,-./01234567 8 9 : ; < = > ? @ A B C D E F G H I J K L M N 2008-2010 Edward KmettBSDEdward Kmett <ekmett@gmail.com> experimentalportable Safe-Inferred!"JKBCategory of discrete objects. The only arrows are identity arrows.VDiscrete a b acts as a proof that a = b, lift that proof into something of kind * -> *4Lower the proof that a ~ b to an arbitrary category.OO2010-2012 Edward KmettBSDEdward Kmett <ekmett@gmail.com> experimentalBnon-portable (either class-associated types or MPTCs with fundeps) Safe-Inferred=JKThe  Category (~>)$ has an initial (coterminal) object  Initial (~>) such that for all objects a in (~>)&, there exists a unique morphism from  Initial (~>)  to a.The  Category (~>) has a terminal object  Terminal (~>) such that for all objects a in (~>)', there exists a unique morphism from a to  Terminal (~>).    2008-2010 Edward KmettBSDEdward Kmett <ekmett@gmail.com> experimentalportable Trustworthy+3JK PQRS    PQRS2008-2010 Edward KmettBSD3Edward Kmett <ekmett@gmail.com> experimental&non-portable (functional-dependencies) Trustworthy368Minimal definition: bimap TUVWXYZ TUVWXYZ2008 Edward KmettBSDEdward Kmett <ekmett@gmail.com> experimentalportable Trustworthy6aA category with an associative bifunctor satisfying Mac Lane's pentagonal coherence identity law: ¦bimap id associate . associate . bimap associate id = associate . associate bimap disassociate id . disassociate . bimap id disassociate = disassociate . disassociate[\[\2008,2012 Edward KmettBSDEdward Kmett <ekmett@gmail.com> experimental%non-portable (class-associated types) Safe-Inferred6=K/Denotes that we have some reasonable notion of Identity for a particular  Bifunctor in this Category). This notion is currently used by both  and  ComonoidalA monoidal category.  and H are traditionally denoted lambda and rho the triangle identities hold: Õfirst idr = second idl . associate second idl = first idr . associate first idr = disassociate . second idl second idl = disassociate . first idr idr . coidr = id idl . coidl = id coidl . idl = id coidr . idr = id]^]^2008-2012 Edward KmettBSDEdward Kmett <ekmett@gmail.com> experimentalportable Trustworthy6If we have a symmetric (co)Monoidal& category, you get the additional law: swap . swap = id qA braided (co)(monoidal or associative) category can commute the arguments of its bi-endofunctor. Obeys the laws: –associate . braid . associate = second braid . associate . first braid disassociate . braid . disassociate = first braid . disassociate . second braidBIf the category is Monoidal the following laws should be satisfied #idr . braid = idl idl . braid = idrDIf the category is Comonoidal the following laws should be satisfied +braid . coidr = coidl braid . coidl = coidr !"_`ab !" !" !"_`ab2008-2010 Edward KmettBSDEdward Kmett <ekmett@gmail.com> experimental%non-portable (class-associated types) Trustworthy 2346=JK )Minimum definition: fst, snd, diag fst, snd, (&&&)/free construction of  for the product   Product k if (&&&) is known0free construction of   for the product   Product k1free construction of  Associative for the product   Product k2free construction of Disassociative for the product   Product k3free construction of  for the coproduct  Sum k if (|||) is known4free construction of   for the coproduct  Sum k5free construction of  Associative for the coproduct  Sum k6free construction of Disassociative for the coproduct  Sum k#$%&'()*+,-./0123456cd#$%&'()*+,-./0123456)*+,-./012#$%&'(3456 #$%&'()*+,-./0123456cd(. 2008 Edward KmettBSDEdward Kmett <ekmett@gmail.com> experimental%non-portable (class-associated types) Trustworthy36=JK7IA Co-CCC has full-fledged comonoidal finite coproducts and coexponentials<A <; has full-fledged monoidal finite products and exponentials789:;<=>?@ABCDe789:;<=>?@ABCD<=>?@AB789:;CD789:;<=>?@ABCDe 2008 Edward KmettBSDEdward Kmett <ekmett@gmail.com> experimental%non-portable (class-associated types) TrustworthyJKEA category in which G is an isomorphismG!The canonical factoring morphism.EFGfEFGGEFEFGf 2008-2010 Edward KmettBSD3Edward Kmett <ekmett@gmail.com> experimental&non-portable (functional-dependencies) Trustworthy+23468HIJKLMNghijklmnopqrstHIJKLMNIJHMNKLHIJKLMNghijklmnopqrstu   !"#$%&'()*+,-./0123456789:;<=>?@A B C D E F G H I J K L M N O P Q R S T U V V W WXYZ[\]^_`abcdefghijklm n o p q r s t u v w x y z { | }~categories-1.0.7Control.Category.DiscreteControl.Categorical.ObjectControl.Category.DualControl.Categorical.BifunctorControl.Category.AssociativeControl.Category.MonoidalControl.Category.BraidedControl.Category.Cartesian!Control.Category.Cartesian.ClosedControl.Category.DistributiveControl.Categorical.FunctorDiscreteRefl liftDiscretecastinverseHasInitialObjectInitialinitiateHasTerminalObjectTerminal terminateDualrunDual BifunctorbimapQFunctorsecondPFunctorfirstdifirstdimap Associative associate disassociateMonoidalIdidlidrcoidlcoidr SymmetricBraidedbraidswap CoCartesianSuminlinrcodiag||| CartesianProductfstsnddiag&&& bimapProduct braidProductassociateProductdisassociateProductbimapSumbraidSum associateSumdisassociateSumCoCCCCoexpcoapplycocurry uncocurryCCCExpapplycurryuncurryunitCCC counitCCC unitCoCCC counitCoCCC Distributive distributefactor EndofunctorFunctorfmapLoweredFunctor LiftedFunctor$fCategory*Discrete dualConstr dataDataType $fDataDual$fCategory*Dual$fQFunctor(->)(->)(->)$fBifunctorEither(->)(->)(->)$fQFunctorEither(->)(->)$fPFunctorEither(->)(->)$fBifunctor(,)(->)(->)(->)$fQFunctor(,)(->)(->)$fPFunctor(,)(->)(->)$fAssociative(->)Either$fAssociative(->)(,)$fMonoidal(->)Either$fMonoidal(->)(,)$fSymmetric(->)(,)$fSymmetric(->)Either$fBraided(->)(,)$fBraided(->)Either$fCoCartesian(->)$fCartesian(->) $fCCC(->)$fDistributive(->) liftedConstrliftedDataType loweredConstrloweredDataType$fEndofunctorfa$fFunctorIO(->)(->)$fFunctor[](->)(->)$fFunctorMaybe(->)(->)$fFunctorEither(->)(->)$fFunctor(,)(->)(->)$fFunctorLiftedFunctor(->)(->)$fFunctorLoweredFunctor$fDataLoweredFunctor$fDataLiftedFunctor