Idris2Doc : Control.Category.Bimonoidal

Control.Category.Bimonoidal

(source)

Definitions

interfaceBimonoidal : Homobj-> (obj->obj->obj) -> (obj->obj->obj) ->obj->obj->Type
  A *bimonoidal category* is a category with two monoidal structures,
one additive and one multiplicative, that are compatible with each
other in a similar way to elementary algebra.

This is the interface-style definition of a bimonoidal category.
For the record-style definition, see `Control.Category.Records.BimonoidalR`.

As for coherence laws: they do exist, but they are so numerous as
to be impractical to write here. (You wouldn't check them anyway.)
If you do wish to be fully rigorous, here's a textbook on
bimonoidal categories to read:
* https://nilesjohnson.net/En-monoidal.html

Parameters: cat, add, mul, z, i
Constraints: Monoidal cat add z, Monoidal cat mul i
Constructor: 
MkBimonoidal

Methods:
distribl : cat (mula (addbc)) (add (mulab) (mulac))
  The left distributor.
distribl' : cat (add (mulab) (mulac)) (mula (addbc))
  The inverse of `distribl`, the left distributor.
distribr : cat (mul (addab) c) (add (mulac) (mulbc))
  The right distributor.
distribr' : cat (add (mulac) (mulbc)) (mul (addab) c)
  The inverse of `distribr`, the right distributor.
absorbl : cat (mulaz) z
  The left absorbor.
absorbl' : catz (mulaz)
  The inverse of `absorbl`, the left absorbor.
absorbr : cat (mulza) z
  The right absorbor.
absorbr' : catz (mulza)
  The inverse of `absorbr`, the right absorbor.

Implementations:
BimonoidalMorphismEitherPairVoid ()
Monadm=>Bimonoidal (Kleislimorphismm) EitherPairVoid ()
distribl : Bimonoidalcataddmulzi=>cat (mula (addbc)) (add (mulab) (mulac))
  The left distributor.

Totality: total
Visibility: public export
distribl' : Bimonoidalcataddmulzi=>cat (add (mulab) (mulac)) (mula (addbc))
  The inverse of `distribl`, the left distributor.

Totality: total
Visibility: public export
distribr : Bimonoidalcataddmulzi=>cat (mul (addab) c) (add (mulac) (mulbc))
  The right distributor.

Totality: total
Visibility: public export
distribr' : Bimonoidalcataddmulzi=>cat (add (mulac) (mulbc)) (mul (addab) c)
  The inverse of `distribr`, the right distributor.

Totality: total
Visibility: public export
absorbl : Bimonoidalcataddmulzi=>cat (mulaz) z
  The left absorbor.

Totality: total
Visibility: public export
absorbl' : Bimonoidalcataddmulzi=>catz (mulaz)
  The inverse of `absorbl`, the left absorbor.

Totality: total
Visibility: public export
absorbr : Bimonoidalcataddmulzi=>cat (mulza) z
  The right absorbor.

Totality: total
Visibility: public export
absorbr' : Bimonoidalcataddmulzi=>catz (mulza)
  The inverse of `absorbr`, the right absorbor.

Totality: total
Visibility: public export
PreBimonoidal : Homobj-> (obj->obj->obj) -> (obj->obj->obj) ->obj->obj->Type
  A pre-bimonoidal category has a multiplicative structure that is
premonoidal. See `PreMonoidal`.

Totality: total
Visibility: public export
RigCategory : Homobj-> (obj->obj->obj) -> (obj->obj->obj) ->obj->obj->Type
  A rig category is a bimonoidal category whose additive structure
is symmetric. The name "rig" comes from the algebraic structure
the definition is based on (a ring without negatives).

This is the interface-style definition of a rig category. For the
record-style definition, see `Control.Category.Records.RigCategoryR`.

Totality: total
Visibility: public export
PreRigCategory : Homobj-> (obj->obj->obj) -> (obj->obj->obj) ->obj->obj->Type
  A pre-bimonoidal category has a multiplicative structure that is
premonoidal. See `PreMonoidal`.

Totality: total
Visibility: public export
SymRigCategory : Homobj-> (obj->obj->obj) -> (obj->obj->obj) ->obj->obj->Type
  A symmetric rig category is a bimonoidal category where both the
additive and multiplicative structures are symmetric.

This is the interface-style definition of a symmetric rig category.
For the record-style definition, see `Control.Category.Records.SymRigCategoryR`.

Totality: total
Visibility: public export
PreSymRigCategory : Homobj-> (obj->obj->obj) -> (obj->obj->obj) ->obj->obj->Type
  A pre-bimonoidal category has a multiplicative structure that is
premonoidal. See `PreMonoidal`.

Totality: total
Visibility: public export
Distributive : Homobj-> (obj->obj->obj) -> (obj->obj->obj) ->obj->obj->Type
  A distributive category is a bimonoidal category whose
multiplicative and additive structures are cartesian and
cocartesian respectively.

This is the interface-style definition of a distributuve category.
For the record-style definition, see `Control.Category.Records.DistributiveR`.

Totality: total
Visibility: public export
PreDistributive : Homobj-> (obj->obj->obj) -> (obj->obj->obj) ->obj->obj->Type
  A pre-bimonoidal category has a multiplicative structure that is
premonoidal. See `PreMonoidal`.

Totality: total
Visibility: public export
Function : RigCategory(~~>)EitherPairVoid ()
Totality: total
Visibility: public export
Function : SymRigCategory(~~>)EitherPairVoid ()
Totality: total
Visibility: public export
Function : Distributive(~~>)EitherPairVoid ()
Totality: total
Visibility: public export