| Safe Haskell | None |
|---|---|
| Language | GHC2024 |
Proarrow.Category.Instance.Rel
Description
Relations as profunctors: a Relation is a thin profunctor between discrete categories,
and this module collects the standard vocabulary of properties (Functional, Total,
Injective, Surjective, Reflexive, Transitive, Symmetric, up to Preorder and
Equivalence), together with the Converse relation.
Synopsis
- class (ThinProfunctor p, Discrete j, Discrete k) => Relation (p :: j +-> k)
- data Converse (p :: j +-> k) (a :: j) (b :: k) where
- asImplication :: forall {k1} {k2} (a :: k1) (b :: k2) (p :: k2 +-> k1) (q :: k2 +-> k1) r. (Relation p, Relation q) => (p :~> q) -> (Ob a, Ob b, HasArrow p a b) => ((HasArrow q a b, Ob a, Ob b) => r) -> r
- class Relation p => Functional (p :: j +-> k1) where
- reprIsFunctional :: forall {j} {k1} (p :: j +-> k1). (Relation p, Representable p) => (p :.: Converse p) :~> ((~>) :: CAT k1)
- class Relation p => Total (p :: k1 +-> j) where
- reprIsTotal :: forall {k1} {j} (p :: k1 +-> j). (Relation p, Representable p) => ((~>) :: CAT k1) :~> (Converse p :.: p)
- class Relation p => Injective (p :: k1 +-> j) where
- class Relation p => Surjective (p :: j +-> k1) where
- class Relation p => Reflexive (p :: k1 +-> k1) where
- isReflexive :: ((~>) :: CAT k1) :~> p
- class Relation p => Transitive (p :: k1 +-> k1) where
- isTransitive :: (p :.: p) :~> p
- adjToConverse :: forall {j} {k} (p :: j +-> k) (q :: k +-> j). (Relation p, Relation q, Proadjunction p q) => q :~> Converse p
- adjFromConverse :: forall {k} {k1} (p :: k +-> k1) (q :: k1 +-> k). (Relation p, Relation q, Proadjunction p q) => Converse p :~> q
- class (Relation p, Promonad p) => Preorder (p :: k +-> k)
- class (Relation p, DaggerProfunctor p) => Symmetric (p :: k +-> k)
- class (Preorder p, Symmetric p) => Equivalence (p :: k +-> k)
Documentation
class (ThinProfunctor p, Discrete j, Discrete k) => Relation (p :: j +-> k) Source Github #
Instances
| (ThinProfunctor p, Discrete j, Discrete k) => Relation (p :: j +-> k) Source Github # | |
Defined in Proarrow.Category.Instance.Rel | |
data Converse (p :: j +-> k) (a :: j) (b :: k) where Source Github #
The converse relation: relates Converse p a ba to b exactly when p relates b
to a.
Instances
| (Relation p, DecidableProfunctor p) => DecidableProfunctor (Converse p :: k -> j -> Type) Source Github # | |
| Relation p => ThinProfunctor (Converse p :: k -> j -> Type) Source Github # | |
| Relation p => Profunctor (Converse p :: k -> j -> Type) Source Github # | |
Defined in Proarrow.Category.Instance.Rel Methods dimap :: forall (c :: k) (a :: k) (b :: j) (d :: j). (c ~> a) -> (b ~> d) -> Converse p a b -> Converse p c d Source Github # lmap :: forall (c :: k) (a :: k) (b :: j). (c ~> a) -> Converse p a b -> Converse p c b Source Github # rmap :: forall (b :: j) (d :: j) (a :: k). (b ~> d) -> Converse p a b -> Converse p a d Source Github # (\\) :: forall (a :: k) (b :: j) r. ((Ob a, Ob b) => r) -> Converse p a b -> r Source Github # | |
| (Relation p, Representable p) => Corepresentable (Converse p :: k -> j -> Type) Source Github # | |
Defined in Proarrow.Category.Instance.Rel Methods coindex :: forall (a :: k) (b :: j). Converse p a b -> (Converse p %% a) ~> b Source Github # cotabulate :: forall (a :: k) (b :: j). Ob a => ((Converse p %% a) ~> b) -> Converse p a b Source Github # corepMap :: forall (a :: k) (b :: k). (a ~> b) -> (Converse p %% a) ~> (Converse p %% b) Source Github # corepUniv :: forall (a :: k). Ob a => Converse p a (Converse p %% a) Source Github # | |
| type (Converse p :: k -> j -> Type) %% (a :: k) Source Github # | |
Defined in Proarrow.Category.Instance.Rel | |
| type HasArrow (Converse p :: k -> j -> Type) (a :: k) (b :: j) Source Github # | |
Defined in Proarrow.Category.Instance.Rel | |
| type Holds (Converse p :: k -> j -> Type) (a :: k) (b :: j) Source Github # | |
Defined in Proarrow.Category.Instance.Rel | |
asImplication :: forall {k1} {k2} (a :: k1) (b :: k2) (p :: k2 +-> k1) (q :: k2 +-> k1) r. (Relation p, Relation q) => (p :~> q) -> (Ob a, Ob b, HasArrow p a b) => ((HasArrow q a b, Ob a, Ob b) => r) -> r Source Github #
reprIsFunctional :: forall {j} {k1} (p :: j +-> k1). (Relation p, Representable p) => (p :.: Converse p) :~> ((~>) :: CAT k1) Source Github #
reprIsTotal :: forall {k1} {j} (p :: k1 +-> j). (Relation p, Representable p) => ((~>) :: CAT k1) :~> (Converse p :.: p) Source Github #
adjToConverse :: forall {j} {k} (p :: j +-> k) (q :: k +-> j). (Relation p, Relation q, Proadjunction p q) => q :~> Converse p Source Github #
adjFromConverse :: forall {k} {k1} (p :: k +-> k1) (q :: k1 +-> k). (Relation p, Relation q, Proadjunction p q) => Converse p :~> q Source Github #
class (Relation p, DaggerProfunctor p) => Symmetric (p :: k +-> k) Source Github #
Instances
| (Relation p, DaggerProfunctor p) => Symmetric (p :: k +-> k) Source Github # | |
Defined in Proarrow.Category.Instance.Rel | |
class (Preorder p, Symmetric p) => Equivalence (p :: k +-> k) Source Github #
Instances
| (Preorder p, Symmetric p) => Equivalence (p :: k +-> k) Source Github # | |
Defined in Proarrow.Category.Instance.Rel | |