| Safe Haskell | None |
|---|---|
| Language | GHC2024 |
Proarrow.Colimit.Pushout
Contents
Synopsis
- class CategoryOf k => HasPushouts k where
- thinPushout :: forall {k} (o :: k) (a :: k) (b :: k) r. (Thin k, HasCoproducts k) => (o ~> a) -> (o ~> b) -> (forall (p :: k). (a ~> p) -> (b ~> p) -> r) -> r
- coequalizerDefault :: forall {k} (a :: k) (b :: k) r. (HasPushouts k, HasCoproducts k) => (a ~> b) -> (a ~> b) -> (forall (c :: k). (b ~> c) -> r) -> r
- cokernelPair :: forall k (a :: k) (b :: k) r. HasPushouts k => (a ~> b) -> (forall (p :: k). (b ~> p) -> (b ~> p) -> r) -> r
- isEpi :: forall k (a :: k) (b :: k). (HasPushouts k, Eq2 (Hom k)) => (a ~> b) -> Bool
Documentation
class CategoryOf k => HasPushouts k where Source Github #
Pushouts are an inherently dependently typed concept: The type of the apex object depends on the values of the given arrows. But at runtime we can still calculate the arrows and the type, which we hide behind an existential.
Methods
pushout :: forall (o :: k) (a :: k) (b :: k) r. (o ~> a) -> (o ~> b) -> (forall (p :: k). (a ~> p) -> (b ~> p) -> r) -> r Source Github #
Instances
| HasPushouts BOOL Source Github # | |
| HasPushouts FINSET Source Github # | |
| HasPushouts () Source Github # | |
| HasPushouts k => HasPushouts (COSPAN k) Source Github # | |
| HasPullbacks k => HasPushouts (OPPOSITE k) Source Github # | |
| HasPullbacks k => HasPushouts (SPAN k) Source Github # | |
| (HasPushouts k1, HasPushouts k2) => HasPushouts (k1, k2) Source Github # | |
thinPushout :: forall {k} (o :: k) (a :: k) (b :: k) r. (Thin k, HasCoproducts k) => (o ~> a) -> (o ~> b) -> (forall (p :: k). (a ~> p) -> (b ~> p) -> r) -> r Source Github #
In a thin category, arrows don't carry information, so pushouts are just coproducts.
coequalizerDefault :: forall {k} (a :: k) (b :: k) r. (HasPushouts k, HasCoproducts k) => (a ~> b) -> (a ~> b) -> (forall (c :: k). (b ~> c) -> r) -> r Source Github #
cokernelPair :: forall k (a :: k) (b :: k) r. HasPushouts k => (a ~> b) -> (forall (p :: k). (b ~> p) -> (b ~> p) -> r) -> r Source Github #
isEpi :: forall k (a :: k) (b :: k). (HasPushouts k, Eq2 (Hom k)) => (a ~> b) -> Bool Source Github #