| Safe Haskell | None |
|---|---|
| Language | GHC2024 |
Proarrow.Category.Monoidal.IsoMix
Description
Isomix categories: *-autonomous categories whose two units agree, , the unit of
par, being isomorphic to Dual UnitUnit (dualUnit). Then a dual and its object can be joined into the
unit of the tensor, not just into the unit of par. Every compact closed category is isomix, and
so is LINEAR, where tensor and par still differ.
Synopsis
- class StarAutonomous k => IsoMix k where
- dualityCounitDefault :: forall {k} (a :: k). (IsoMix k, Ob a) => (Dual a ** a) ~> (Unit :: k)
- type IsoMixStructures = '[Monoidal, SymMonoidal, Closed, StarAutonomous, IsoMix]
Documentation
class StarAutonomous k => IsoMix k where Source Github #
Methods
dualUnit :: Dual (Unit :: k) ~> (Unit :: k) Source Github #
The unit of par is isomorphic to the unit of the tensor.
dualUnitInv :: (Unit :: k) ~> Dual (Unit :: k) Source Github #
The inverse of dualUnit.
dualityCounit :: forall (a :: k). Ob a => (Dual a ** a) ~> (Unit :: k) Source Github #
Join a dual and its object into the unit. dualityCounitDefault gives it from the
*-autonomous structure; a compact closed category has a counit of its own. (There is no
default method: a occurs only under type families, so GHC could not instantiate one.)
Instances
| IsoMix Nat Source Github # | |
| IsoMix FINREL Source Github # | |
| IsoMix LINEAR Source Github # | The unit of par is |
| IsoMix DOT Source Github # | |
| IsoMix SVG Source Github # | |
| IsoMix () Source Github # | |
| (HasPushouts k, HasCoproducts k) => IsoMix (COSPAN k) Source Github # | |
Defined in Proarrow.Category.Instance.Cospan | |
| TracedMonoidal k => IsoMix (INT k) Source Github # | |
| Num a => IsoMix (MatK a) Source Github # | |
| (HasPullbacks k, HasProducts k) => IsoMix (SPAN k) Source Github # | |
| CommutativeMonoid m => IsoMix (MONOID m) Source Github # | |
Defined in Proarrow.Category.Instance.Monoid | |
| (IsoMix j, IsoMix k) => IsoMix (j, k) Source Github # | |
| Elems IsoMixStructures cs => IsoMix (FREE cs p) Source Github # | |
Defined in Proarrow.Category.Monoidal.IsoMix | |
dualityCounitDefault :: forall {k} (a :: k). (IsoMix k, Ob a) => (Dual a ** a) ~> (Unit :: k) Source Github #
dualityCounit from the *-autonomous structure: into the unit of par, then dualUnit.
type IsoMixStructures = '[Monoidal, SymMonoidal, Closed, StarAutonomous, IsoMix] Source Github #
The structures the free category needs for IsoMix, and those its laws are stated for.