| Safe Haskell | None |
|---|---|
| Language | GHC2024 |
Proarrow.Colimit.BinaryCoproduct
Contents
Description
Binary coproducts: HasBinaryCoproducts provides a with injections || blft/rgt and
copairing (, and |||)HasCoproducts adds the initial object. Also biproducts (HasBiproducts)
and the COPROD kind wrapper, which makes ( the tensor of a monoidal structure on the same
objects.||)
Synopsis
- class CategoryOf k => HasBinaryCoproducts k where
- type (a :: k) || (b :: k) :: k
- withObCoprod :: forall (a :: k) (b :: k) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r
- lft :: forall (a :: k) (b :: k). (Ob a, Ob b) => a ~> (a || b)
- rgt :: forall (a :: k) (b :: k). (Ob a, Ob b) => b ~> (a || b)
- (|||) :: forall (x :: k) (a :: k) (y :: k). (x ~> a) -> (y ~> a) -> (x || y) ~> a
- (+++) :: forall (a :: k) (b :: k) (x :: k) (y :: k). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y)
- lft' :: forall {k} (a :: k) (a' :: k) (b :: k). HasBinaryCoproducts k => (a ~> a') -> Obj b -> a ~> (a' || b)
- rgt' :: forall {k} (a :: k) (b :: k) (b' :: k). HasBinaryCoproducts k => Obj a -> (b ~> b') -> b ~> (a || b')
- left :: forall {k} (c :: k) (a :: k) (b :: k). (HasBinaryCoproducts k, Ob c) => (a ~> b) -> (a || c) ~> (b || c)
- right :: forall {k} (c :: k) (a :: k) (b :: k). (HasBinaryCoproducts k, Ob c) => (a ~> b) -> (c || a) ~> (c || b)
- codiag :: forall {k} (a :: k). (HasBinaryCoproducts k, Ob a) => (a || a) ~> a
- swapCoprod' :: forall {k} (a :: k) (a' :: k) (b :: k) (b' :: k). HasBinaryCoproducts k => (a ~> a') -> (b ~> b') -> (a || b) ~> (b' || a')
- swapCoprod :: forall {k} (a :: k) (b :: k). (HasBinaryCoproducts k, Ob a, Ob b) => (a || b) ~> (b || a)
- data PlusRep (a :: k) (b :: (k, k))
- data family Coproduct :: k -> k +-> k
- type HasCoproducts k = (HasInitialObject k, HasBinaryCoproducts k)
- class (a ** b) ~ (a || b) => TensorIsCoproduct (a :: k) (b :: k)
- class (HasCoproducts k, Monoidal k, (Unit :: k) ~ (InitialObject :: k), forall (a :: k) (b :: k). TensorIsCoproduct a b) => Cocartesian k
- parCorepCocartesian :: forall {j} {k} (p :: j +-> k) (a :: k) (b :: k) (a' :: j) (b' :: j). (Corepresentable p, Cocartesian j, Cocartesian k, TensorIsCoproduct a b, TensorIsCoproduct a' b', Ob a, Ob b) => (a' ~> (p %% a)) -> (b' ~> (p %% b)) -> (a' ** b') ~> (p %% (a ** b))
- data COPROD k = COPR k
- data Coprod (p :: j +-> k) (a :: COPROD k) (b :: COPROD j) where
- nil :: MonoidalProfunctor (Coprod p) => p (InitialObject :: k) (InitialObject :: j)
- (++) :: forall {k1} {k2} p (a :: k2) (b :: k1) (c :: k2) (d :: k1). MonoidalProfunctor (Coprod p) => p a b -> p c d -> p (a || c) (b || d)
- leftUnitorCoprod :: forall {k} (a :: k). (HasCoproducts k, Ob a) => ((InitialObject :: k) || a) ~> a
- leftUnitorCoprodInv :: forall {k} (a :: k). (HasCoproducts k, Ob a) => a ~> ((InitialObject :: k) || a)
- rightUnitorCoprod :: forall {k} (a :: k). (HasCoproducts k, Ob a) => (a || (InitialObject :: k)) ~> a
- rightUnitorCoprodInv :: forall {k} (a :: k). (HasCoproducts k, Ob a) => a ~> (a || (InitialObject :: k))
- associatorCoprod :: forall {k} (a :: k) (b :: k) (c :: k). (HasCoproducts k, Ob a, Ob b, Ob c) => ((a || b) || c) ~> (a || (b || c))
- associatorCoprodInv :: forall {k} (a :: k) (b :: k) (c :: k). (HasCoproducts k, Ob a, Ob b, Ob c) => (a || (b || c)) ~> ((a || b) || c)
- data Uncoprod (p :: COPROD j +-> COPROD k) (a :: k) (b :: j) where
- data family (a :: k) + (b :: k) :: k
- class (a && b) ~ (a || b) => CheckBiproduct (a :: k) (b :: k)
- class (HasBinaryCoproducts k, HasBinaryProducts k, forall (a :: k) (b :: k). (Ob a, Ob b) => CheckBiproduct a b) => HasBiproducts k where
Documentation
class CategoryOf k => HasBinaryCoproducts k where Source Github #
Binary coproducts, dual to HasBinaryProducts: an object
a with injections || blft and rgt, universal among all pairs of arrows into a common
target. Each such pair factors through it uniquely via (|||).
Laws:
Checked by testBinaryCoproducts.
Minimal complete definition
withObCoprod, lft, rgt, (|||)
Methods
withObCoprod :: forall (a :: k) (b :: k) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github #
Recovers from the objecthood of the summands.Ob (a || b)
lft :: forall (a :: k) (b :: k). (Ob a, Ob b) => a ~> (a || b) Source Github #
The left injection.
rgt :: forall (a :: k) (b :: k). (Ob a, Ob b) => b ~> (a || b) Source Github #
The right injection.
(|||) :: forall (x :: k) (a :: k) (y :: k). (x ~> a) -> (y ~> a) -> (x || y) ~> a infixl 4 Source Github #
The mediating arrow: case-splits two arrows into a common target.
(+++) :: forall (a :: k) (b :: k) (x :: k) (y :: k). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) infixl 4 Source Github #
The coproduct of two arrows, acting on each summand independently.
Instances
| HasBinaryCoproducts BOOL Source Github # | |||||||||||||||||
Defined in Proarrow.Colimit.BinaryCoproduct Associated Types
Methods withObCoprod :: forall (a :: BOOL) (b :: BOOL) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github # lft :: forall (a :: BOOL) (b :: BOOL). (Ob a, Ob b) => a ~> (a || b) Source Github # rgt :: forall (a :: BOOL) (b :: BOOL). (Ob a, Ob b) => b ~> (a || b) Source Github # (|||) :: forall (x :: BOOL) (a :: BOOL) (y :: BOOL). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Github # (+++) :: forall (a :: BOOL) (b :: BOOL) (x :: BOOL) (y :: BOOL). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) Source Github # | |||||||||||||||||
| HasBinaryCoproducts COST Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Instance.Cost Associated Types
Methods withObCoprod :: forall (a :: COST) (b :: COST) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github # lft :: forall (a :: COST) (b :: COST). (Ob a, Ob b) => a ~> (a || b) Source Github # rgt :: forall (a :: COST) (b :: COST). (Ob a, Ob b) => b ~> (a || b) Source Github # (|||) :: forall (x :: COST) (a :: COST) (y :: COST). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Github # (+++) :: forall (a :: COST) (b :: COST) (x :: COST) (y :: COST). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) Source Github # | |||||||||||||||||
| HasBinaryCoproducts FINHASK Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Instance.FinHask Methods withObCoprod :: forall (a :: FINHASK) (b :: FINHASK) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github # lft :: forall (a :: FINHASK) (b :: FINHASK). (Ob a, Ob b) => a ~> (a || b) Source Github # rgt :: forall (a :: FINHASK) (b :: FINHASK). (Ob a, Ob b) => b ~> (a || b) Source Github # (|||) :: forall (x :: FINHASK) (a :: FINHASK) (y :: FINHASK). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Github # (+++) :: forall (a :: FINHASK) (b :: FINHASK) (x :: FINHASK) (y :: FINHASK). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) Source Github # | |||||||||||||||||
| HasBinaryCoproducts FINREL Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Instance.FinRel Methods withObCoprod :: forall (a :: FINREL) (b :: FINREL) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github # lft :: forall (a :: FINREL) (b :: FINREL). (Ob a, Ob b) => a ~> (a || b) Source Github # rgt :: forall (a :: FINREL) (b :: FINREL). (Ob a, Ob b) => b ~> (a || b) Source Github # (|||) :: forall (x :: FINREL) (a :: FINREL) (y :: FINREL). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Github # (+++) :: forall (a :: FINREL) (b :: FINREL) (x :: FINREL) (y :: FINREL). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) Source Github # | |||||||||||||||||
| HasBinaryCoproducts FINSET Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Instance.FinSet Methods withObCoprod :: forall (a :: FINSET) (b :: FINSET) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github # lft :: forall (a :: FINSET) (b :: FINSET). (Ob a, Ob b) => a ~> (a || b) Source Github # rgt :: forall (a :: FINSET) (b :: FINSET). (Ob a, Ob b) => b ~> (a || b) Source Github # (|||) :: forall (x :: FINSET) (a :: FINSET) (y :: FINSET). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Github # (+++) :: forall (a :: FINSET) (b :: FINSET) (x :: FINSET) (y :: FINSET). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) Source Github # | |||||||||||||||||
| HasBinaryCoproducts LINEAR Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Instance.Linear Methods withObCoprod :: forall (a :: LINEAR) (b :: LINEAR) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github # lft :: forall (a :: LINEAR) (b :: LINEAR). (Ob a, Ob b) => a ~> (a || b) Source Github # rgt :: forall (a :: LINEAR) (b :: LINEAR). (Ob a, Ob b) => b ~> (a || b) Source Github # (|||) :: forall (x :: LINEAR) (a :: LINEAR) (y :: LINEAR). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Github # (+++) :: forall (a :: LINEAR) (b :: LINEAR) (x :: LINEAR) (y :: LINEAR). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) Source Github # | |||||||||||||||||
| HasBinaryCoproducts POINTED Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Instance.PointedHask Methods withObCoprod :: forall (a :: POINTED) (b :: POINTED) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github # lft :: forall (a :: POINTED) (b :: POINTED). (Ob a, Ob b) => a ~> (a || b) Source Github # rgt :: forall (a :: POINTED) (b :: POINTED). (Ob a, Ob b) => b ~> (a || b) Source Github # (|||) :: forall (x :: POINTED) (a :: POINTED) (y :: POINTED). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Github # (+++) :: forall (a :: POINTED) (b :: POINTED) (x :: POINTED) (y :: POINTED). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) Source Github # | |||||||||||||||||
| HasBinaryCoproducts () Source Github # | |||||||||||||||||
Defined in Proarrow.Colimit.BinaryCoproduct Associated Types
Methods withObCoprod :: forall (a :: ()) (b :: ()) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github # lft :: forall (a :: ()) (b :: ()). (Ob a, Ob b) => a ~> (a || b) Source Github # rgt :: forall (a :: ()) (b :: ()). (Ob a, Ob b) => b ~> (a || b) Source Github # (|||) :: forall (x :: ()) (a :: ()) (y :: ()). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Github # (+++) :: forall (a :: ()) (b :: ()) (x :: ()) (y :: ()). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) Source Github # | |||||||||||||||||
| HasBinaryCoproducts Type Source Github # | |||||||||||||||||
Defined in Proarrow.Colimit.BinaryCoproduct Associated Types
Methods withObCoprod :: (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github # lft :: (Ob a, Ob b) => a ~> (a || b) Source Github # rgt :: (Ob a, Ob b) => b ~> (a || b) Source Github # (|||) :: (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Github # (+++) :: forall a b x y. (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) Source Github # | |||||||||||||||||
| Indexed k => HasBinaryCoproducts (CODISCRETE k) Source Github # | Dual to the | ||||||||||||||||
Defined in Proarrow.Category.Instance.Discrete Methods withObCoprod :: forall (a :: CODISCRETE k) (b :: CODISCRETE k) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github # lft :: forall (a :: CODISCRETE k) (b :: CODISCRETE k). (Ob a, Ob b) => a ~> (a || b) Source Github # rgt :: forall (a :: CODISCRETE k) (b :: CODISCRETE k). (Ob a, Ob b) => b ~> (a || b) Source Github # (|||) :: forall (x :: CODISCRETE k) (a :: CODISCRETE k) (y :: CODISCRETE k). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Github # (+++) :: forall (a :: CODISCRETE k) (b :: CODISCRETE k) (x :: CODISCRETE k) (y :: CODISCRETE k). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) Source Github # | |||||||||||||||||
| CategoryOf k => HasBinaryCoproducts (FAM k) Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Instance.Fam Methods withObCoprod :: forall (a :: FAM k) (b :: FAM k) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github # lft :: forall (a :: FAM k) (b :: FAM k). (Ob a, Ob b) => a ~> (a || b) Source Github # rgt :: forall (a :: FAM k) (b :: FAM k). (Ob a, Ob b) => b ~> (a || b) Source Github # (|||) :: forall (x :: FAM k) (a :: FAM k) (y :: FAM k). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Github # (+++) :: forall (a :: FAM k) (b :: FAM k) (x :: FAM k) (y :: FAM k). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) Source Github # | |||||||||||||||||
| Num a => HasBinaryCoproducts (MatK a) Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Instance.Mat Methods withObCoprod :: forall (a0 :: MatK a) (b :: MatK a) r. (Ob a0, Ob b) => (Ob (a0 || b) => r) -> r Source Github # lft :: forall (a0 :: MatK a) (b :: MatK a). (Ob a0, Ob b) => a0 ~> (a0 || b) Source Github # rgt :: forall (a0 :: MatK a) (b :: MatK a). (Ob a0, Ob b) => b ~> (a0 || b) Source Github # (|||) :: forall (x :: MatK a) (a0 :: MatK a) (y :: MatK a). (x ~> a0) -> (y ~> a0) -> (x || y) ~> a0 Source Github # (+++) :: forall (a0 :: MatK a) (b :: MatK a) (x :: MatK a) (y :: MatK a). (a0 ~> x) -> (b ~> y) -> (a0 || b) ~> (x || y) Source Github # | |||||||||||||||||
| HasBinaryProducts k => HasBinaryCoproducts (OPPOSITE k) Source Github # | |||||||||||||||||
Defined in Proarrow.Colimit.BinaryCoproduct Methods withObCoprod :: forall (a :: OPPOSITE k) (b :: OPPOSITE k) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github # lft :: forall (a :: OPPOSITE k) (b :: OPPOSITE k). (Ob a, Ob b) => a ~> (a || b) Source Github # rgt :: forall (a :: OPPOSITE k) (b :: OPPOSITE k). (Ob a, Ob b) => b ~> (a || b) Source Github # (|||) :: forall (x :: OPPOSITE k) (a :: OPPOSITE k) (y :: OPPOSITE k). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Github # (+++) :: forall (a :: OPPOSITE k) (b :: OPPOSITE k) (x :: OPPOSITE k) (y :: OPPOSITE k). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) Source Github # | |||||||||||||||||
| HasBinaryCoproducts (ORDINAL ('S n)) => HasBinaryCoproducts (ORDINAL ('S ('S n))) Source Github # | Maximum | ||||||||||||||||
Defined in Proarrow.Category.Instance.Ordinal Methods withObCoprod :: forall (a :: ORDINAL ('S ('S n))) (b :: ORDINAL ('S ('S n))) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github # lft :: forall (a :: ORDINAL ('S ('S n))) (b :: ORDINAL ('S ('S n))). (Ob a, Ob b) => a ~> (a || b) Source Github # rgt :: forall (a :: ORDINAL ('S ('S n))) (b :: ORDINAL ('S ('S n))). (Ob a, Ob b) => b ~> (a || b) Source Github # (|||) :: forall (x :: ORDINAL ('S ('S n))) (a :: ORDINAL ('S ('S n))) (y :: ORDINAL ('S ('S n))). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Github # (+++) :: forall (a :: ORDINAL ('S ('S n))) (b :: ORDINAL ('S ('S n))) (x :: ORDINAL ('S ('S n))) (y :: ORDINAL ('S ('S n))). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) Source Github # | |||||||||||||||||
| HasBinaryCoproducts (ORDINAL ('S 'Z)) Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Instance.Ordinal Methods withObCoprod :: forall (a :: ORDINAL ('S 'Z)) (b :: ORDINAL ('S 'Z)) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github # lft :: forall (a :: ORDINAL ('S 'Z)) (b :: ORDINAL ('S 'Z)). (Ob a, Ob b) => a ~> (a || b) Source Github # rgt :: forall (a :: ORDINAL ('S 'Z)) (b :: ORDINAL ('S 'Z)). (Ob a, Ob b) => b ~> (a || b) Source Github # (|||) :: forall (x :: ORDINAL ('S 'Z)) (a :: ORDINAL ('S 'Z)) (y :: ORDINAL ('S 'Z)). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Github # (+++) :: forall (a :: ORDINAL ('S 'Z)) (b :: ORDINAL ('S 'Z)) (x :: ORDINAL ('S 'Z)) (y :: ORDINAL ('S 'Z)). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) Source Github # | |||||||||||||||||
| HasBinaryCoproducts (ORDINAL 'Z) Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Instance.Ordinal Methods withObCoprod :: forall (a :: ORDINAL 'Z) (b :: ORDINAL 'Z) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github # lft :: forall (a :: ORDINAL 'Z) (b :: ORDINAL 'Z). (Ob a, Ob b) => a ~> (a || b) Source Github # rgt :: forall (a :: ORDINAL 'Z) (b :: ORDINAL 'Z). (Ob a, Ob b) => b ~> (a || b) Source Github # (|||) :: forall (x :: ORDINAL 'Z) (a :: ORDINAL 'Z) (y :: ORDINAL 'Z). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Github # (+++) :: forall (a :: ORDINAL 'Z) (b :: ORDINAL 'Z) (x :: ORDINAL 'Z) (y :: ORDINAL 'Z). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) Source Github # | |||||||||||||||||
| HasBinaryCoproducts k => HasBinaryCoproducts (COPROD k) Source Github # | |||||||||||||||||
Defined in Proarrow.Colimit.BinaryCoproduct Methods withObCoprod :: forall (a :: COPROD k) (b :: COPROD k) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github # lft :: forall (a :: COPROD k) (b :: COPROD k). (Ob a, Ob b) => a ~> (a || b) Source Github # rgt :: forall (a :: COPROD k) (b :: COPROD k). (Ob a, Ob b) => b ~> (a || b) Source Github # (|||) :: forall (x :: COPROD k) (a :: COPROD k) (y :: COPROD k). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Github # (+++) :: forall (a :: COPROD k) (b :: COPROD k) (x :: COPROD k) (y :: COPROD k). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) Source Github # | |||||||||||||||||
| HasBinaryCoproducts k => HasBinaryCoproducts (PROD k) Source Github # | |||||||||||||||||
Defined in Proarrow.Colimit.BinaryCoproduct Methods withObCoprod :: forall (a :: PROD k) (b :: PROD k) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github # lft :: forall (a :: PROD k) (b :: PROD k). (Ob a, Ob b) => a ~> (a || b) Source Github # rgt :: forall (a :: PROD k) (b :: PROD k). (Ob a, Ob b) => b ~> (a || b) Source Github # (|||) :: forall (x :: PROD k) (a :: PROD k) (y :: PROD k). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Github # (+++) :: forall (a :: PROD k) (b :: PROD k) (x :: PROD k) (y :: PROD k). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) Source Github # | |||||||||||||||||
| (CategoryOf j, CategoryOf k) => HasBinaryCoproducts (FINITARY j k) Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Enriched.Finitary.Topos Methods withObCoprod :: forall (a :: FINITARY j k) (b :: FINITARY j k) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github # lft :: forall (a :: FINITARY j k) (b :: FINITARY j k). (Ob a, Ob b) => a ~> (a || b) Source Github # rgt :: forall (a :: FINITARY j k) (b :: FINITARY j k). (Ob a, Ob b) => b ~> (a || b) Source Github # (|||) :: forall (x :: FINITARY j k) (a :: FINITARY j k) (y :: FINITARY j k). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Github # (+++) :: forall (a :: FINITARY j k) (b :: FINITARY j k) (x :: FINITARY j k) (y :: FINITARY j k). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) Source Github # | |||||||||||||||||
| (HasBinaryCoproducts k, Monad p, MonoidalProfunctor (Coprod p)) => HasBinaryCoproducts (KLEISLI p) Source Github # | Coproducts lift for the same reason as the initial object: for a | ||||||||||||||||
Defined in Proarrow.Category.Instance.Kleisli Methods withObCoprod :: forall (a :: KLEISLI p) (b :: KLEISLI p) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github # lft :: forall (a :: KLEISLI p) (b :: KLEISLI p). (Ob a, Ob b) => a ~> (a || b) Source Github # rgt :: forall (a :: KLEISLI p) (b :: KLEISLI p). (Ob a, Ob b) => b ~> (a || b) Source Github # (|||) :: forall (x :: KLEISLI p) (a :: KLEISLI p) (y :: KLEISLI p). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Github # (+++) :: forall (a :: KLEISLI p) (b :: KLEISLI p) (x :: KLEISLI p) (y :: KLEISLI p). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) Source Github # | |||||||||||||||||
| (CategoryOf j, CategoryOf k) => HasBinaryCoproducts (j +-> k) Source Github # | |||||||||||||||||
Defined in Proarrow.Colimit.BinaryCoproduct Methods withObCoprod :: forall (a :: j +-> k) (b :: j +-> k) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github # lft :: forall (a :: j +-> k) (b :: j +-> k). (Ob a, Ob b) => a ~> (a || b) Source Github # rgt :: forall (a :: j +-> k) (b :: j +-> k). (Ob a, Ob b) => b ~> (a || b) Source Github # (|||) :: forall (x :: j +-> k) (a :: j +-> k) (y :: j +-> k). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Github # (+++) :: forall (a :: j +-> k) (b :: j +-> k) (x :: j +-> k) (y :: j +-> k). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) Source Github # | |||||||||||||||||
| (HasBinaryCoproducts j, HasBinaryCoproducts k) => HasBinaryCoproducts (j, k) Source Github # | Coproducts in a product category are componentwise. Through the projections, as products are
there, so that | ||||||||||||||||
Defined in Proarrow.Colimit.BinaryCoproduct Methods withObCoprod :: forall (a :: (j, k)) (b :: (j, k)) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github # lft :: forall (a :: (j, k)) (b :: (j, k)). (Ob a, Ob b) => a ~> (a || b) Source Github # rgt :: forall (a :: (j, k)) (b :: (j, k)). (Ob a, Ob b) => b ~> (a || b) Source Github # (|||) :: forall (x :: (j, k)) (a :: (j, k)) (y :: (j, k)). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Github # (+++) :: forall (a :: (j, k)) (b :: (j, k)) (x :: (j, k)) (y :: (j, k)). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) Source Github # | |||||||||||||||||
| HasBinaryCoproducts (k1 -> Type) Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Instance.Nat Methods withObCoprod :: forall (a :: k1 -> Type) (b :: k1 -> Type) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github # lft :: forall (a :: k1 -> Type) (b :: k1 -> Type). (Ob a, Ob b) => a ~> (a || b) Source Github # rgt :: forall (a :: k1 -> Type) (b :: k1 -> Type). (Ob a, Ob b) => b ~> (a || b) Source Github # (|||) :: forall (x :: k1 -> Type) (a :: k1 -> Type) (y :: k1 -> Type). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Github # (+++) :: forall (a :: k1 -> Type) (b :: k1 -> Type) (x :: k1 -> Type) (y :: k1 -> Type). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) Source Github # | |||||||||||||||||
| (HasFiniteCovers t k, FiniteCat j, FiniteCat k) => HasBinaryCoproducts (SHEAVES t j k) Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Enriched.Finitary.Sheaf Methods withObCoprod :: forall (a :: SHEAVES t j k) (b :: SHEAVES t j k) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github # lft :: forall (a :: SHEAVES t j k) (b :: SHEAVES t j k). (Ob a, Ob b) => a ~> (a || b) Source Github # rgt :: forall (a :: SHEAVES t j k) (b :: SHEAVES t j k). (Ob a, Ob b) => b ~> (a || b) Source Github # (|||) :: forall (x :: SHEAVES t j k) (a :: SHEAVES t j k) (y :: SHEAVES t j k). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Github # (+++) :: forall (a :: SHEAVES t j k) (b :: SHEAVES t j k) (x :: SHEAVES t j k) (y :: SHEAVES t j k). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) Source Github # | |||||||||||||||||
| (HasBinaryCoproducts p, Adjunction adj) => HasBinaryCoproducts (DUPLOID adj) Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Instance.Duploid Methods withObCoprod :: forall (a :: DUPLOID adj) (b :: DUPLOID adj) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github # lft :: forall (a :: DUPLOID adj) (b :: DUPLOID adj). (Ob a, Ob b) => a ~> (a || b) Source Github # rgt :: forall (a :: DUPLOID adj) (b :: DUPLOID adj). (Ob a, Ob b) => b ~> (a || b) Source Github # (|||) :: forall (x :: DUPLOID adj) (a :: DUPLOID adj) (y :: DUPLOID adj). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Github # (+++) :: forall (a :: DUPLOID adj) (b :: DUPLOID adj) (x :: DUPLOID adj) (y :: DUPLOID adj). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) Source Github # | |||||||||||||||||
| Elem HasBinaryCoproducts cs => HasBinaryCoproducts (FREE cs p) Source Github # | |||||||||||||||||
Defined in Proarrow.Colimit.BinaryCoproduct Methods withObCoprod :: forall (a :: FREE cs p) (b :: FREE cs p) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github # lft :: forall (a :: FREE cs p) (b :: FREE cs p). (Ob a, Ob b) => a ~> (a || b) Source Github # rgt :: forall (a :: FREE cs p) (b :: FREE cs p). (Ob a, Ob b) => b ~> (a || b) Source Github # (|||) :: forall (x :: FREE cs p) (a :: FREE cs p) (y :: FREE cs p). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Github # (+++) :: forall (a :: FREE cs p) (b :: FREE cs p) (x :: FREE cs p) (y :: FREE cs p). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) Source Github # | |||||||||||||||||
lft' :: forall {k} (a :: k) (a' :: k) (b :: k). HasBinaryCoproducts k => (a ~> a') -> Obj b -> a ~> (a' || b) Source Github #
rgt' :: forall {k} (a :: k) (b :: k) (b' :: k). HasBinaryCoproducts k => Obj a -> (b ~> b') -> b ~> (a || b') Source Github #
left :: forall {k} (c :: k) (a :: k) (b :: k). (HasBinaryCoproducts k, Ob c) => (a ~> b) -> (a || c) ~> (b || c) Source Github #
right :: forall {k} (c :: k) (a :: k) (b :: k). (HasBinaryCoproducts k, Ob c) => (a ~> b) -> (c || a) ~> (c || b) Source Github #
swapCoprod' :: forall {k} (a :: k) (a' :: k) (b :: k) (b' :: k). HasBinaryCoproducts k => (a ~> a') -> (b ~> b') -> (a || b) ~> (b' || a') Source Github #
swapCoprod :: forall {k} (a :: k) (b :: k). (HasBinaryCoproducts k, Ob a, Ob b) => (a || b) ~> (b || a) Source Github #
data PlusRep (a :: k) (b :: (k, k)) Source Github #
The coproduct as a functor from the product category, '(a, b) ↦ a || b. The coproduct
analogue of MultRep.
Instances
| (FoldFl p1 q1, FoldFl p2 q2, HasBinaryCoproducts k) => FoldFl (BesideSum p1 p2 :: k -> k -> Type) (CoBesideSum q1 q2 :: k -> k -> Type) Source Github # | |
| (SetterFl p1 q1, SetterFl p2 q2, HasBinaryCoproducts k) => SetterFl (BesideSum p1 p2 :: k -> k -> Type) (CoBesideSum q1 q2 :: k -> k -> Type) Source Github # | |
Defined in Proarrow.Optic.Traversal | |
| (MonTravFl p1 q1, MonTravFl p2 q2, HasBinaryCoproducts k) => MonTravFl (BesideSum p1 p2 :: k -> k -> Type) (CoBesideSum q1 q2 :: k -> k -> Type) Source Github # | |
Defined in Proarrow.Optic.Traversal Methods monTravP :: forall r (s :: k) (a :: k) (b :: k) (t :: k). StrongDistributiveProfunctor r => BesideSum p1 p2 s a -> CoBesideSum q1 q2 b t -> r a b -> r s t Source Github # | |
| (TravFl p1 q1, TravFl p2 q2, HasBinaryCoproducts k) => TravFl (BesideSum p1 p2 :: k -> k -> Type) (CoBesideSum q1 q2 :: k -> k -> Type) Source Github # | |
Defined in Proarrow.Optic.Traversal Methods travP :: forall r (s :: k) (a :: k) (b :: k) (t :: k). (StrongDistributiveProfunctor r, Strong (ProdAction :: k -> (PROD k, k) -> Type) r) => BesideSum p1 p2 s a -> CoBesideSum q1 q2 b t -> r a b -> r s t Source Github # | |
| HasBinaryCoproducts k => FunctorForRep (PlusRep :: k -> (k, k) -> Type) Source Github # | |
| type (PlusRep :: k -> (k, k) -> Type) @ ('(a, b) :: (k, k)) Source Github # | |
Defined in Proarrow.Colimit.BinaryCoproduct | |
data family Coproduct :: k -> k +-> k Source Github #
Instances
type HasCoproducts k = (HasInitialObject k, HasBinaryCoproducts k) Source Github #
class (a ** b) ~ (a || b) => TensorIsCoproduct (a :: k) (b :: k) Source Github #
Instances
| (a ** b) ~ (a || b) => TensorIsCoproduct (a :: k) (b :: k) Source Github # | |
Defined in Proarrow.Colimit.BinaryCoproduct | |
class (HasCoproducts k, Monoidal k, (Unit :: k) ~ (InitialObject :: k), forall (a :: k) (b :: k). TensorIsCoproduct a b) => Cocartesian k Source Github #
Instances
| (HasCoproducts k, Monoidal k, (Unit :: k) ~ (InitialObject :: k), forall (a :: k) (b :: k). TensorIsCoproduct a b) => Cocartesian k Source Github # | |
Defined in Proarrow.Colimit.BinaryCoproduct | |
parCorepCocartesian :: forall {j} {k} (p :: j +-> k) (a :: k) (b :: k) (a' :: j) (b' :: j). (Corepresentable p, Cocartesian j, Cocartesian k, TensorIsCoproduct a b, TensorIsCoproduct a' b', Ob a, Ob b) => (a' ~> (p %% a)) -> (b' ~> (p %% b)) -> (a' ** b') ~> (p %% (a ** b)) Source Github #
Constructors
| COPR k |
Instances
data Coprod (p :: j +-> k) (a :: COPROD k) (b :: COPROD j) where Source Github #
Lifts a profunctor to the COPROD-wrapped kinds, where the monoidal structure is the
coproduct.
Constructors
| Coprod | |
Instances
| MonoidalProfunctor (Coprod (Rep Fun)) Source Github # | |
Defined in Proarrow.Category.Instance.FinRel Methods one :: Coprod (Rep Fun) (Unit :: COPROD FINREL) (Unit :: COPROD FINSET) Source Github # (**) :: forall (x1 :: COPROD FINREL) (x2 :: COPROD FINSET) (y1 :: COPROD FINREL) (y2 :: COPROD FINSET). Coprod (Rep Fun) x1 x2 -> Coprod (Rep Fun) y1 y2 -> Coprod (Rep Fun) (x1 ** y1) (x2 ** y2) Source Github # | |
| MonoidalProfunctor (Coprod Linear) Source Github # | |
Defined in Proarrow.Category.Instance.Linear | |
| MonadPlus m => MonoidalProfunctor (Coprod (Kleisli m) :: COPROD Type -> COPROD Type -> Type) Source Github # | |
Defined in Proarrow.Profunctor.Instance.Arrow Methods one :: Coprod (Kleisli m) (Unit :: COPROD Type) (Unit :: COPROD Type) Source Github # (**) :: forall (x1 :: COPROD Type) (x2 :: COPROD Type) (y1 :: COPROD Type) (y2 :: COPROD Type). Coprod (Kleisli m) x1 x2 -> Coprod (Kleisli m) y1 y2 -> Coprod (Kleisli m) (x1 ** y1) (x2 ** y2) Source Github # | |
| ArrowChoice arr => MonoidalProfunctor (Coprod (Arr arr) :: COPROD Type -> COPROD Type -> Type) Source Github # | |
Defined in Proarrow.Profunctor.Instance.Arrow | |
| (HasCoproducts j, HasCoproducts k, Representable p) => MonoidalProfunctor (Coprod (Adj p) :: COPROD k -> COPROD j -> Type) Source Github # | |
Defined in Proarrow.Profunctor.Instance.Adj | |
| (Functor f, HasCoproducts j, HasCoproducts k) => MonoidalProfunctor (Coprod (Star f) :: COPROD k -> COPROD j -> Type) Source Github # | |
Defined in Proarrow.Profunctor.Instance.Star | |
| (HasCoproducts j, HasCoproducts k) => MonoidalProfunctor (Coprod (TerminalProfunctor :: k -> j -> Type) :: COPROD k -> COPROD j -> Type) Source Github # | |
Defined in Proarrow.Colimit.BinaryCoproduct Methods one :: Coprod (TerminalProfunctor :: k -> j -> Type) (Unit :: COPROD k) (Unit :: COPROD j) Source Github # (**) :: forall (x1 :: COPROD k) (x2 :: COPROD j) (y1 :: COPROD k) (y2 :: COPROD j). Coprod (TerminalProfunctor :: k -> j -> Type) x1 x2 -> Coprod (TerminalProfunctor :: k -> j -> Type) y1 y2 -> Coprod (TerminalProfunctor :: k -> j -> Type) (x1 ** y1) (x2 ** y2) Source Github # | |
| (Profunctor f, Profunctor g, MonoidalProfunctor (Coprod f), MonoidalProfunctor (Coprod g)) => MonoidalProfunctor (Coprod (f :.: g) :: COPROD k -> COPROD j2 -> Type) Source Github # | |
Defined in Proarrow.Colimit.BinaryCoproduct | |
| (HasCoproducts k, Ob a, Ob b, w (ZeroW :: k -> k -> Type) (CoZeroW :: k -> k -> Type), forall (p1 :: k -> k -> Type) (p2 :: k -> k -> Type) (q1 :: k -> k -> Type) (q2 :: k -> k -> Type). (w p1 q1, w p2 q2, Profunctor p1, Profunctor p2, Profunctor q1, Profunctor q2) => w (BesideSum p1 p2) (CoBesideSum q1 q2)) => MonoidalProfunctor (Coprod (ExOptic w a b) :: COPROD k -> COPROD k -> Type) Source Github # | |
Defined in Proarrow.Optic.MonoidalTraversal | |
| (SymMonoidal k, HasCoproducts k, SNatI n) => MonoidalProfunctor (Coprod (Pow n :: k -> k -> Type) :: COPROD k -> COPROD k -> Type) Source Github # | |
Defined in Proarrow.Optic.PowerGrate Methods one :: Coprod (Pow n :: k -> k -> Type) (Unit :: COPROD k) (Unit :: COPROD k) Source Github # (**) :: forall (x1 :: COPROD k) (x2 :: COPROD k) (y1 :: COPROD k) (y2 :: COPROD k). Coprod (Pow n :: k -> k -> Type) x1 x2 -> Coprod (Pow n :: k -> k -> Type) y1 y2 -> Coprod (Pow n :: k -> k -> Type) (x1 ** y1) (x2 ** y2) Source Github # | |
| HasCoproducts k => MonoidalProfunctor (Coprod (Id :: k -> k -> Type) :: COPROD k -> COPROD k -> Type) Source Github # | |
Defined in Proarrow.Colimit.BinaryCoproduct Methods one :: Coprod (Id :: k -> k -> Type) (Unit :: COPROD k) (Unit :: COPROD k) Source Github # (**) :: forall (x1 :: COPROD k) (x2 :: COPROD k) (y1 :: COPROD k) (y2 :: COPROD k). Coprod (Id :: k -> k -> Type) x1 x2 -> Coprod (Id :: k -> k -> Type) y1 y2 -> Coprod (Id :: k -> k -> Type) (x1 ** y1) (x2 ** y2) Source Github # | |
| (Monoidal k, HasCoproducts k, Ob m) => MonoidalProfunctor (Coprod (Rep (ActionAt (Tensor :: k -> (k, k) -> Type) m)) :: COPROD k -> COPROD k -> Type) Source Github # | |
Defined in Proarrow.Monoid Methods one :: Coprod (Rep (ActionAt (Tensor :: k -> (k, k) -> Type) m)) (Unit :: COPROD k) (Unit :: COPROD k) Source Github # (**) :: forall (x1 :: COPROD k) (x2 :: COPROD k) (y1 :: COPROD k) (y2 :: COPROD k). Coprod (Rep (ActionAt (Tensor :: k -> (k, k) -> Type) m)) x1 x2 -> Coprod (Rep (ActionAt (Tensor :: k -> (k, k) -> Type) m)) y1 y2 -> Coprod (Rep (ActionAt (Tensor :: k -> (k, k) -> Type) m)) (x1 ** y1) (x2 ** y2) Source Github # | |
| (Closed k, HasCoproducts k, Ob m) => MonoidalProfunctor (Coprod (Rep (Exp m)) :: COPROD k -> COPROD k -> Type) Source Github # | |
Defined in Proarrow.Monoid | |
| (HasCoproducts k, Ob r) => MonoidalProfunctor (Coprod (Rep (Constant r)) :: COPROD k -> COPROD k -> Type) Source Github # | |
Defined in Proarrow.Monoid Methods one :: Coprod (Rep (Constant r)) (Unit :: COPROD k) (Unit :: COPROD k) Source Github # (**) :: forall (x1 :: COPROD k) (x2 :: COPROD k) (y1 :: COPROD k) (y2 :: COPROD k). Coprod (Rep (Constant r)) x1 x2 -> Coprod (Rep (Constant r)) y1 y2 -> Coprod (Rep (Constant r)) (x1 ** y1) (x2 ** y2) Source Github # | |
| HasCoproducts k => MonoidalProfunctor (Coprod (Cont r) :: COPROD k -> COPROD k -> Type) Source Github # | |
Defined in Proarrow.Promonad.Cont | |
| (HasCoproducts k, cat ~ Hom k) => MonoidalProfunctor (Coprod cat :: COPROD k -> COPROD k -> Type) Source Github # | |
| Profunctor p => Profunctor (Coprod p :: COPROD k -> COPROD j -> Type) Source Github # | |
Defined in Proarrow.Colimit.BinaryCoproduct Methods dimap :: forall (c :: COPROD k) (a :: COPROD k) (b :: COPROD j) (d :: COPROD j). (c ~> a) -> (b ~> d) -> Coprod p a b -> Coprod p c d Source Github # lmap :: forall (c :: COPROD k) (a :: COPROD k) (b :: COPROD j). (c ~> a) -> Coprod p a b -> Coprod p c b Source Github # rmap :: forall (b :: COPROD j) (d :: COPROD j) (a :: COPROD k). (b ~> d) -> Coprod p a b -> Coprod p a d Source Github # (\\) :: forall (a :: COPROD k) (b :: COPROD j) r. ((Ob a, Ob b) => r) -> Coprod p a b -> r Source Github # | |
| Representable p => Representable (Coprod p :: COPROD k -> COPROD j -> Type) Source Github # | |
Defined in Proarrow.Colimit.BinaryCoproduct Methods index :: forall (a :: COPROD k) (b :: COPROD j). Coprod p a b -> a ~> (Coprod p % b) Source Github # tabulate :: forall (b :: COPROD j) (a :: COPROD k). Ob b => (a ~> (Coprod p % b)) -> Coprod p a b Source Github # repMap :: forall (a :: COPROD j) (b :: COPROD j). (a ~> b) -> (Coprod p % a) ~> (Coprod p % b) Source Github # repUniv :: forall (a :: COPROD j). Ob a => Coprod p (Coprod p % a) a Source Github # | |
| Promonad p => Promonad (Coprod p :: COPROD j -> COPROD j -> Type) Source Github # | |
| type (Coprod p :: COPROD k -> COPROD j -> Type) % ('COPR a :: COPROD j) Source Github # | |
nil :: MonoidalProfunctor (Coprod p) => p (InitialObject :: k) (InitialObject :: j) Source Github #
(++) :: forall {k1} {k2} p (a :: k2) (b :: k1) (c :: k2) (d :: k1). MonoidalProfunctor (Coprod p) => p a b -> p c d -> p (a || c) (b || d) Source Github #
leftUnitorCoprod :: forall {k} (a :: k). (HasCoproducts k, Ob a) => ((InitialObject :: k) || a) ~> a Source Github #
leftUnitorCoprodInv :: forall {k} (a :: k). (HasCoproducts k, Ob a) => a ~> ((InitialObject :: k) || a) Source Github #
rightUnitorCoprod :: forall {k} (a :: k). (HasCoproducts k, Ob a) => (a || (InitialObject :: k)) ~> a Source Github #
rightUnitorCoprodInv :: forall {k} (a :: k). (HasCoproducts k, Ob a) => a ~> (a || (InitialObject :: k)) Source Github #
associatorCoprod :: forall {k} (a :: k) (b :: k) (c :: k). (HasCoproducts k, Ob a, Ob b, Ob c) => ((a || b) || c) ~> (a || (b || c)) Source Github #
associatorCoprodInv :: forall {k} (a :: k) (b :: k) (c :: k). (HasCoproducts k, Ob a, Ob b, Ob c) => (a || (b || c)) ~> ((a || b) || c) Source Github #
data Uncoprod (p :: COPROD j +-> COPROD k) (a :: k) (b :: j) where Source Github #
Constructors
| Uncoprod :: forall {j} {k} (p :: COPROD j +-> COPROD k) (a :: k) (b :: j). p ('COPR a) ('COPR b) -> Uncoprod p a b |
Instances
| (Profunctor p, CategoryOf j, CategoryOf k) => Profunctor (Uncoprod p :: k -> j -> Type) Source Github # | |
Defined in Proarrow.Colimit.BinaryCoproduct Methods dimap :: forall (c :: k) (a :: k) (b :: j) (d :: j). (c ~> a) -> (b ~> d) -> Uncoprod p a b -> Uncoprod p c d Source Github # lmap :: forall (c :: k) (a :: k) (b :: j). (c ~> a) -> Uncoprod p a b -> Uncoprod p c b Source Github # rmap :: forall (b :: j) (d :: j) (a :: k). (b ~> d) -> Uncoprod p a b -> Uncoprod p a d Source Github # (\\) :: forall (a :: k) (b :: j) r. ((Ob a, Ob b) => r) -> Uncoprod p a b -> r Source Github # | |
class (a && b) ~ (a || b) => CheckBiproduct (a :: k) (b :: k) Source Github #
Instances
| (a && b) ~ (a || b) => CheckBiproduct (a :: k) (b :: k) Source Github # | |
Defined in Proarrow.Colimit.BinaryCoproduct | |
class (HasBinaryCoproducts k, HasBinaryProducts k, forall (a :: k) (b :: k). (Ob a, Ob b) => CheckBiproduct a b) => HasBiproducts k where Source Github #
Minimal complete definition
Nothing
Orphan instances
| (Corepresentable p, Cocartesian j, Cocartesian k) => MonoidalProfunctor (CorepStar p :: j -> k -> Type) Source Github # | Every functor between cocartesian categories is lax monoidal, |
| (HasBinaryCoproducts j, Corepresentable p, Corepresentable q) => Corepresentable (p :*: q :: k -> j -> Type) Source Github # | |
Methods coindex :: forall (a :: k) (b :: j). (p :*: q) a b -> ((p :*: q) %% a) ~> b Source Github # cotabulate :: forall (a :: k) (b :: j). Ob a => (((p :*: q) %% a) ~> b) -> (p :*: q) a b Source Github # corepMap :: forall (a :: k) (b :: k). (a ~> b) -> ((p :*: q) %% a) ~> ((p :*: q) %% b) Source Github # corepUniv :: forall (a :: k). Ob a => (p :*: q) a ((p :*: q) %% a) Source Github # | |
| HasBinaryCoproducts k => Corepresentable (Rep (Diag :: k +-> (k, k)) :: (k, k) -> k -> Type) Source Github # | The left adjoint to the diagonal functor. |
Methods coindex :: forall (a :: (k, k)) (b :: k). Rep (Diag :: k +-> (k, k)) a b -> (Rep (Diag :: k +-> (k, k)) %% a) ~> b Source Github # cotabulate :: forall (a :: (k, k)) (b :: k). Ob a => ((Rep (Diag :: k +-> (k, k)) %% a) ~> b) -> Rep (Diag :: k +-> (k, k)) a b Source Github # corepMap :: forall (a :: (k, k)) (b :: (k, k)). (a ~> b) -> (Rep (Diag :: k +-> (k, k)) %% a) ~> (Rep (Diag :: k +-> (k, k)) %% b) Source Github # corepUniv :: forall (a :: (k, k)). Ob a => Rep (Diag :: k +-> (k, k)) a (Rep (Diag :: k +-> (k, k)) %% a) Source Github # | |
| HasBinaryCoproducts k => HasBinaryProducts (OPPOSITE k) Source Github # | |
Methods withObProd :: forall (a :: OPPOSITE k) (b :: OPPOSITE k) r. (Ob a, Ob b) => (Ob (a && b) => r) -> r Source Github # fst :: forall (a :: OPPOSITE k) (b :: OPPOSITE k). (Ob a, Ob b) => (a && b) ~> a Source Github # snd :: forall (a :: OPPOSITE k) (b :: OPPOSITE k). (Ob a, Ob b) => (a && b) ~> b Source Github # (&&&) :: forall (a :: OPPOSITE k) (x :: OPPOSITE k) (y :: OPPOSITE k). (a ~> x) -> (a ~> y) -> a ~> (x && y) Source Github # (***) :: forall (a :: OPPOSITE k) (b :: OPPOSITE k) (x :: OPPOSITE k) (y :: OPPOSITE k). (a ~> x) -> (b ~> y) -> (a && b) ~> (x && y) Source Github # | |