proarrow
Safe HaskellNone
LanguageGHC2024

Proarrow.Category.Monoidal.CompactClosed

Documentation

class (StarAutonomous k, SymMonoidal k) => CompactClosed k where Source Github #

Methods

distribDual :: forall (a :: k) (b :: k). (Ob a, Ob b) => Dual (a ** b) ~> (Dual a ** Dual b) Source Github #

dualUnit :: Dual (Unit :: k) ~> (Unit :: k) Source Github #

Instances

Instances details
CompactClosed Nat Source Github # 
Instance details

Defined in Proarrow.Category.Instance.ZX

Methods

distribDual :: forall (a :: Nat) (b :: Nat). (Ob a, Ob b) => Dual (a ** b) ~> (Dual a ** Dual b) Source Github #

dualUnit :: Dual (Unit :: Nat) ~> (Unit :: Nat) Source Github #

CompactClosed KIND Source Github # 
Instance details

Defined in Proarrow.Category.Instance.CatProf

Methods

distribDual :: forall (a :: KIND) (b :: KIND). (Ob a, Ob b) => Dual (a ** b) ~> (Dual a ** Dual b) Source Github #

dualUnit :: Dual (Unit :: KIND) ~> (Unit :: KIND) Source Github #

CompactClosed FINREL Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Methods

distribDual :: forall (a :: FINREL) (b :: FINREL). (Ob a, Ob b) => Dual (a ** b) ~> (Dual a ** Dual b) Source Github #

dualUnit :: Dual (Unit :: FINREL) ~> (Unit :: FINREL) Source Github #

CompactClosed () Source Github # 
Instance details

Defined in Proarrow.Category.Monoidal.CompactClosed

Methods

distribDual :: forall (a :: ()) (b :: ()). (Ob a, Ob b) => Dual (a ** b) ~> (Dual a ** Dual b) Source Github #

dualUnit :: Dual (Unit :: ()) ~> (Unit :: ()) Source Github #

(HasPushouts k, HasCoproducts k) => CompactClosed (COSPAN k) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Cospan

Methods

distribDual :: forall (a :: COSPAN k) (b :: COSPAN k). (Ob a, Ob b) => Dual (a ** b) ~> (Dual a ** Dual b) Source Github #

dualUnit :: Dual (Unit :: COSPAN k) ~> (Unit :: COSPAN k) Source Github #

TracedMonoidal k => CompactClosed (INT k) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.IntConstruction

Methods

distribDual :: forall (a :: INT k) (b :: INT k). (Ob a, Ob b) => Dual (a ** b) ~> (Dual a ** Dual b) Source Github #

dualUnit :: Dual (Unit :: INT k) ~> (Unit :: INT k) Source Github #

Num a => CompactClosed (MatK a) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Mat

Methods

distribDual :: forall (a0 :: MatK a) (b :: MatK a). (Ob a0, Ob b) => Dual (a0 ** b) ~> (Dual a0 ** Dual b) Source Github #

dualUnit :: Dual (Unit :: MatK a) ~> (Unit :: MatK a) Source Github #

(HasPullbacks k, HasProducts k) => CompactClosed (SPAN k) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Span

Methods

distribDual :: forall (a :: SPAN k) (b :: SPAN k). (Ob a, Ob b) => Dual (a ** b) ~> (Dual a ** Dual b) Source Github #

dualUnit :: Dual (Unit :: SPAN k) ~> (Unit :: SPAN k) Source Github #

CommutativeMonoid m => CompactClosed (MONOIDK m) Source Github # 
Instance details

Defined in Proarrow.Monoid

Methods

distribDual :: forall (a :: MONOIDK m) (b :: MONOIDK m). (Ob a, Ob b) => Dual (a ** b) ~> (Dual a ** Dual b) Source Github #

dualUnit :: Dual (Unit :: MONOIDK m) ~> (Unit :: MONOIDK m) Source Github #

(CompactClosed j, CompactClosed k) => CompactClosed (j, k) Source Github # 
Instance details

Defined in Proarrow.Category.Monoidal.CompactClosed

Methods

distribDual :: forall (a :: (j, k)) (b :: (j, k)). (Ob a, Ob b) => Dual (a ** b) ~> (Dual a ** Dual b) Source Github #

dualUnit :: Dual (Unit :: (j, k)) ~> (Unit :: (j, k)) Source Github #

distribDualInv :: forall {k} (a :: k) (b :: k). (CompactClosed k, Ob a, Ob b) => (Dual a ** Dual b) ~> Dual (a ** b) Source Github #

dualityUnit :: forall {k} (a :: k). (CompactClosed k, Ob a) => (Unit :: k) ~> (a ** Dual a) Source Github #

dualityUnitS :: forall {k} (a :: k). (CompactClosed k, Ob a) => ('[] :: [k]) ~> '[a, Dual a] Source Github #

dualityCounit :: forall {k} (a :: k). (CompactClosed k, Ob a) => (Dual a ** a) ~> (Unit :: k) Source Github #

dualityCounitS :: forall {k} (a :: k). (CompactClosed k, Ob a) => '[Dual a, a] ~> ('[] :: [k]) Source Github #

combineDual :: forall {k} (a :: k) (b :: k). (CompactClosed k, Ob a, Ob b) => (Dual a ** Dual b) ~> Dual (a ** b) Source Github #

combineDualS :: forall {k} (a :: k) (b :: k). (CompactClosed k, Ob a, Ob b) => '[Dual a, Dual b] ~> '[Dual (a ** b)] Source Github #

dimension :: forall {k} (a :: k). (CompactClosed k, Ob a) => (Unit :: k) ~> (Unit :: k) Source Github #

traceCCS :: forall {k} (u :: k) (x :: k) (y :: k). (CompactClosed k, Ob x, Ob y, Ob u) => ('[x, u] ~> '[y, u]) -> '[x] ~> '[y] Source Github #

traceCC :: forall {k} (u :: k) (x :: k) (y :: k). (CompactClosed k, Ob x, Ob y, Ob u) => ((x ** u) ~> (y ** u)) -> x ~> y Source Github #

coactCC :: forall {m} {k} (t :: (m, k) +-> k) (u :: m) (x :: k) (y :: k). (CompactClosed m, MonoidalAction t, Ob x, Ob y, Ob u) => (Act t u x ~> Act t u y) -> x ~> y Source Github #