| Safe Haskell | None |
|---|---|
| Language | GHC2024 |
Proarrow.Category.Instance.Ordinal
Description
Synopsis
- data ORDINAL (n :: Nat) where
- type ORDINAL0 = ORDINAL 'Z
- type ORDINAL1 = ORDINAL ('S 'Z)
- type ORDINAL2 = ORDINAL ('S ('S 'Z))
- type ORDINAL3 = ORDINAL ('S ('S ('S 'Z)))
- data LTE (a :: ORDINAL n) (b :: ORDINAL n) where
- ZEQ :: forall {n1 :: Nat}. LTE ('OZ :: ORDINAL ('S n1)) ('OZ :: ORDINAL ('S n1))
- ZLT :: forall {n1 :: Nat} (b1 :: ORDINAL ('S n1)). LTE ('OZ :: ORDINAL ('S n1)) b1 -> LTE ('OZ :: ORDINAL ('S ('S n1))) ('OS b1)
- SLT :: forall {n1 :: Nat} (a1 :: ORDINAL ('S n1)) (b1 :: ORDINAL ('S n1)). LTE a1 b1 -> LTE ('OS a1) ('OS b1)
- absurdL :: forall (a :: ORDINAL 'Z) (b :: ORDINAL 'Z). Ob a => a ~> b
- absurdR :: forall (a :: ORDINAL 'Z) (b :: ORDINAL 'Z). Ob b => a ~> b
- data SOrdinal (a :: ORDINAL n) where
- class IsOrdinal (a :: ORDINAL n) where
- singOrdinal :: SOrdinal a
- type family OrdIndex (a :: ORDINAL n) :: Nat where ...
- type family OrdAt (n :: Nat) (i :: Nat) :: Maybe (ORDINAL n) where ...
- type family OrdObjects (n :: Nat) :: [ORDINAL n] where ...
- ordSize :: forall (n :: Nat) r. SNatI n => (n ~ 'Z => r) -> (n ~ 'S 'Z => r) -> (forall (m :: Nat). (n ~ 'S ('S m), SNatI m) => r) -> r
- withOrdObjects :: forall (n :: Nat) (i :: Nat) r. SNatI n => SNat i -> (Lookup (OrdObjects n) i ~ OrdAt n i => IndexedList (OrdObjects n) -> r) -> r
- ordAtOb :: forall (n :: Nat) (i :: Nat). SNatI n => SNat i -> AtOb (ORDINAL n) (OrdAt n i)
- type family OrdLeq (a :: ORDINAL n) (b :: ORDINAL n) :: BOOL where ...
- type MonoidalOrdinal (n :: Nat) = (HasProducts (ORDINAL n), Ob (TerminalObject :: ORDINAL n))
Documentation
data ORDINAL (n :: Nat) where Source Github #
Constructors
| OZ :: forall (n1 :: Nat). ORDINAL ('S n1) | |
| OS :: forall (n1 :: Nat). ORDINAL ('S n1) -> ORDINAL ('S ('S n1)) |
Instances
| SNatI n => Enumerable (ORDINAL n) Source Github # | |||||
Defined in Proarrow.Category.Instance.Ordinal | |||||
| SNatI n => Finite (ORDINAL n) Source Github # | |||||
Defined in Proarrow.Category.Instance.Ordinal Associated Types
| |||||
| Indexed (ORDINAL n) Source Github # | |||||
Defined in Proarrow.Category.Instance.Ordinal | |||||
| MonoidalOrdinal n => Monoidal (ORDINAL n) Source Github # | |||||
Defined in Proarrow.Category.Instance.Ordinal Associated Types
Methods withOb2 :: forall (a :: ORDINAL n) (b :: ORDINAL n) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Github # leftUnitor :: forall (a :: ORDINAL n). Ob a => ((Unit :: ORDINAL n) ** a) ~> a Source Github # leftUnitorInv :: forall (a :: ORDINAL n). Ob a => a ~> ((Unit :: ORDINAL n) ** a) Source Github # rightUnitor :: forall (a :: ORDINAL n). Ob a => (a ** (Unit :: ORDINAL n)) ~> a Source Github # rightUnitorInv :: forall (a :: ORDINAL n). Ob a => a ~> (a ** (Unit :: ORDINAL n)) Source Github # associator :: forall (a :: ORDINAL n) (b :: ORDINAL n) (c :: ORDINAL n). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Github # associatorInv :: forall (a :: ORDINAL n) (b :: ORDINAL n) (c :: ORDINAL n). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Github # | |||||
| MonoidalOrdinal n => SymMonoidal (ORDINAL n) Source Github # | |||||
| MonoidalOrdinal n => CopyDiscard (ORDINAL n) Source Github # | |||||
| (Distributive (ORDINAL ('S n)), MonoidalOrdinal ('S n)) => Distributive (ORDINAL ('S ('S n))) Source Github # | A chain is a distributive lattice: the meet is the minimum and the join the maximum. By recursion on the objects, as the products and coproducts are. A bottom on either side makes both sides the same object, and otherwise both sides are a successor. | ||||
Defined in Proarrow.Category.Instance.Ordinal Methods distL :: forall (a :: ORDINAL ('S ('S n))) (b :: ORDINAL ('S ('S n))) (c :: ORDINAL ('S ('S n))). (Ob a, Ob b, Ob c) => (a ** (b || c)) ~> ((a ** b) || (a ** c)) Source Github # distR :: forall (a :: ORDINAL ('S ('S n))) (b :: ORDINAL ('S ('S n))) (c :: ORDINAL ('S ('S n))). (Ob a, Ob b, Ob c) => ((a || b) ** c) ~> ((a ** c) || (b ** c)) Source Github # absorbL :: forall (a :: ORDINAL ('S ('S n))). Ob a => (a ** (InitialObject :: ORDINAL ('S ('S n)))) ~> (InitialObject :: ORDINAL ('S ('S n))) Source Github # absorbR :: forall (a :: ORDINAL ('S ('S n))). Ob a => ((InitialObject :: ORDINAL ('S ('S n))) ** a) ~> (InitialObject :: ORDINAL ('S ('S n))) Source Github # | |||||
| Distributive (ORDINAL ('S 'Z)) Source Github # | |||||
Defined in Proarrow.Category.Instance.Ordinal Methods distL :: forall (a :: ORDINAL ('S 'Z)) (b :: ORDINAL ('S 'Z)) (c :: ORDINAL ('S 'Z)). (Ob a, Ob b, Ob c) => (a ** (b || c)) ~> ((a ** b) || (a ** c)) Source Github # distR :: forall (a :: ORDINAL ('S 'Z)) (b :: ORDINAL ('S 'Z)) (c :: ORDINAL ('S 'Z)). (Ob a, Ob b, Ob c) => ((a || b) ** c) ~> ((a ** c) || (b ** c)) Source Github # absorbL :: forall (a :: ORDINAL ('S 'Z)). Ob a => (a ** (InitialObject :: ORDINAL ('S 'Z))) ~> (InitialObject :: ORDINAL ('S 'Z)) Source Github # absorbR :: forall (a :: ORDINAL ('S 'Z)). Ob a => ((InitialObject :: ORDINAL ('S 'Z)) ** a) ~> (InitialObject :: ORDINAL ('S 'Z)) Source Github # | |||||
| HasEpiMonoFactorization (ORDINAL n) 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 # | |||||
| HasCoequalizers (ORDINAL n) Source Github # | Dual to the | ||||
Defined in Proarrow.Category.Instance.Ordinal | |||||
| HasInitialObject (ORDINAL ('S n)) Source Github # | |||||
Defined in Proarrow.Category.Instance.Ordinal Associated Types
| |||||
| HasPushouts (ORDINAL n) Source Github # | Dual to the | ||||
Defined in Proarrow.Category.Instance.Ordinal Methods pushout :: forall (o :: ORDINAL n) (a :: ORDINAL n) (b :: ORDINAL n) r. (o ~> a) -> (o ~> b) -> (forall (p :: ORDINAL n). (a ~> p) -> (b ~> p) -> r) -> r Source Github # factorPushout :: forall (a :: ORDINAL n) (b :: ORDINAL n) (p :: ORDINAL n) (q :: ORDINAL n). (a ~> p) -> (b ~> p) -> (a ~> q) -> (b ~> q) -> p ~> q Source Github # | |||||
| CategoryOf (ORDINAL n) Source Github # | The (thin) category of finite ordinals. An arrow from a to b means that a is less than or equal to b. | ||||
Defined in Proarrow.Category.Instance.Ordinal | |||||
| HasBinaryProducts (ORDINAL ('S n)) => HasBinaryProducts (ORDINAL ('S ('S n))) Source Github # | Minimum | ||||
Defined in Proarrow.Category.Instance.Ordinal Methods withObProd :: forall (a :: ORDINAL ('S ('S n))) (b :: ORDINAL ('S ('S n))) r. (Ob a, Ob b) => (Ob (a && b) => r) -> r Source Github # fst :: forall (a :: ORDINAL ('S ('S n))) (b :: ORDINAL ('S ('S n))). (Ob a, Ob b) => (a && b) ~> a Source Github # snd :: forall (a :: ORDINAL ('S ('S n))) (b :: ORDINAL ('S ('S n))). (Ob a, Ob b) => (a && b) ~> b Source Github # (&&&) :: forall (a :: ORDINAL ('S ('S n))) (x :: ORDINAL ('S ('S n))) (y :: ORDINAL ('S ('S n))). (a ~> x) -> (a ~> y) -> a ~> (x && y) 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 # | |||||
| HasBinaryProducts (ORDINAL ('S 'Z)) Source Github # | |||||
Defined in Proarrow.Category.Instance.Ordinal Methods withObProd :: forall (a :: ORDINAL ('S 'Z)) (b :: ORDINAL ('S 'Z)) r. (Ob a, Ob b) => (Ob (a && b) => r) -> r Source Github # fst :: forall (a :: ORDINAL ('S 'Z)) (b :: ORDINAL ('S 'Z)). (Ob a, Ob b) => (a && b) ~> a Source Github # snd :: forall (a :: ORDINAL ('S 'Z)) (b :: ORDINAL ('S 'Z)). (Ob a, Ob b) => (a && b) ~> b Source Github # (&&&) :: forall (a :: ORDINAL ('S 'Z)) (x :: ORDINAL ('S 'Z)) (y :: ORDINAL ('S 'Z)). (a ~> x) -> (a ~> y) -> a ~> (x && y) 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 # | |||||
| HasBinaryProducts (ORDINAL 'Z) Source Github # | |||||
Defined in Proarrow.Category.Instance.Ordinal Methods withObProd :: forall (a :: ORDINAL 'Z) (b :: ORDINAL 'Z) r. (Ob a, Ob b) => (Ob (a && b) => r) -> r Source Github # fst :: forall (a :: ORDINAL 'Z) (b :: ORDINAL 'Z). (Ob a, Ob b) => (a && b) ~> a Source Github # snd :: forall (a :: ORDINAL 'Z) (b :: ORDINAL 'Z). (Ob a, Ob b) => (a && b) ~> b Source Github # (&&&) :: forall (a :: ORDINAL 'Z) (x :: ORDINAL 'Z) (y :: ORDINAL 'Z). (a ~> x) -> (a ~> y) -> a ~> (x && y) 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 # | |||||
| HasEqualizers (ORDINAL n) Source Github # |
| ||||
Defined in Proarrow.Category.Instance.Ordinal | |||||
| HasPullbacks (ORDINAL n) Source Github # | Pullbacks in a thin category are just meets. Computed directly, not via
| ||||
Defined in Proarrow.Category.Instance.Ordinal Methods pullback :: forall (o :: ORDINAL n) (a :: ORDINAL n) (b :: ORDINAL n) r. (a ~> o) -> (b ~> o) -> (forall (p :: ORDINAL n). (p ~> a) -> (p ~> b) -> r) -> r Source Github # factorPullback :: forall (a :: ORDINAL n) (b :: ORDINAL n) (p :: ORDINAL n) (q :: ORDINAL n). (p ~> a) -> (p ~> b) -> (q ~> a) -> (q ~> b) -> q ~> p Source Github # | |||||
| HasTerminalObject (ORDINAL ('S n)) => HasTerminalObject (ORDINAL ('S ('S n))) Source Github # | |||||
Defined in Proarrow.Category.Instance.Ordinal Associated Types
| |||||
| HasTerminalObject (ORDINAL ('S 'Z)) Source Github # | |||||
Defined in Proarrow.Category.Instance.Ordinal Associated Types
| |||||
| (MonoidalOrdinal n, Ob a) => CocommutativeComonoid (a :: ORDINAL n) Source Github # | |||||
Defined in Proarrow.Category.Instance.Ordinal | |||||
| (MonoidalOrdinal n, Ob a) => Comonoid (a :: ORDINAL n) Source Github # | Every object is a comonoid by the diagonal and the map to the top. So the chain is
| ||||
| Promonad (LTE :: ORDINAL n -> ORDINAL n -> Type) Source Github # | |||||
| Finitary (LTE :: ORDINAL n -> ORDINAL n -> Type) Source Github # | The ordinals are thin too, so the same three lines serve. So a chain can be used as a site: a cover there can have a leg that is itself covered, which no coverage on a two-object category can arrange. | ||||
Defined in Proarrow.Category.Enriched.Finitary Methods size :: forall (a :: ORDINAL n) (b :: ORDINAL n). (Ob a, Ob b) => Natural Source Github # toIndex :: forall (a :: ORDINAL n) (b :: ORDINAL n). (Ob a, Ob b) => LTE a b -> Natural Source Github # fromIndex :: forall (a :: ORDINAL n) (b :: ORDINAL n). (Ob a, Ob b) => Natural -> LTE a b Source Github # elements :: forall (a :: ORDINAL n) (b :: ORDINAL n). (Ob a, Ob b) => [LTE a b] Source Github # | |||||
| DecidableProfunctor (LTE :: ORDINAL n -> ORDINAL n -> Type) Source Github # | |||||
Defined in Proarrow.Category.Instance.Ordinal Methods decide :: forall (a :: ORDINAL n) (b :: ORDINAL n). (Ob a, Ob b) => Decision (LTE :: ORDINAL n -> ORDINAL n -> Type) a b (Holds (LTE :: ORDINAL n -> ORDINAL n -> Type) a b) Source Github # toHolds :: forall (a :: ORDINAL n) (b :: ORDINAL n) r. LTE a b -> ((Holds (LTE :: ORDINAL n -> ORDINAL n -> Type) a b ~ 'TRU, Ob a, Ob b) => r) -> r Source Github # | |||||
| ThinProfunctor (LTE :: ORDINAL n -> ORDINAL n -> Type) Source Github # | |||||
Defined in Proarrow.Category.Instance.Ordinal Methods arr :: forall (a :: ORDINAL n) (b :: ORDINAL n). (Ob a, Ob b, HasArrow (LTE :: ORDINAL n -> ORDINAL n -> Type) a b) => LTE a b Source Github # withArr :: forall (a :: ORDINAL n) (b :: ORDINAL n) r. LTE a b -> ((HasArrow (LTE :: ORDINAL n -> ORDINAL n -> Type) a b, Ob a, Ob b) => r) -> r Source Github # | |||||
| MonoidalOrdinal n => MonoidalProfunctor (LTE :: ORDINAL n -> ORDINAL n -> Type) Source Github # | |||||
| Profunctor (LTE :: ORDINAL n -> ORDINAL n -> Type) Source Github # | |||||
Defined in Proarrow.Category.Instance.Ordinal Methods dimap :: forall (c :: ORDINAL n) (a :: ORDINAL n) (b :: ORDINAL n) (d :: ORDINAL n). (c ~> a) -> (b ~> d) -> LTE a b -> LTE c d Source Github # lmap :: forall (c :: ORDINAL n) (a :: ORDINAL n) (b :: ORDINAL n). (c ~> a) -> LTE a b -> LTE c b Source Github # rmap :: forall (b :: ORDINAL n) (d :: ORDINAL n) (a :: ORDINAL n). (b ~> d) -> LTE a b -> LTE a d Source Github # (\\) :: forall (a :: ORDINAL n) (b :: ORDINAL n) r. ((Ob a, Ob b) => r) -> LTE a b -> r Source Github # | |||||
| type Objects (ORDINAL n) Source Github # | |||||
Defined in Proarrow.Category.Instance.Ordinal | |||||
| type Unit Source Github # | |||||
Defined in Proarrow.Category.Instance.Ordinal | |||||
| type InitialObject Source Github # | |||||
Defined in Proarrow.Category.Instance.Ordinal | |||||
| type (~>) Source Github # | |||||
| type TerminalObject Source Github # | |||||
Defined in Proarrow.Category.Instance.Ordinal | |||||
| type TerminalObject Source Github # | |||||
Defined in Proarrow.Category.Instance.Ordinal | |||||
| type At (ORDINAL n) i Source Github # | |||||
Defined in Proarrow.Category.Instance.Ordinal | |||||
| type Index (a :: ORDINAL n) Source Github # | |||||
Defined in Proarrow.Category.Instance.Ordinal | |||||
| type Ob (a :: ORDINAL n) Source Github # | |||||
Defined in Proarrow.Category.Instance.Ordinal | |||||
| type (a :: ORDINAL n) ** (b :: ORDINAL n) Source Github # | |||||
Defined in Proarrow.Category.Instance.Ordinal | |||||
| type (a :: ORDINAL 'Z) || (b :: ORDINAL 'Z) Source Github # | |||||
| type (a :: ORDINAL 'Z) && (b :: ORDINAL 'Z) Source Github # | |||||
| type (a :: ORDINAL ('S ('S n))) || ('OZ :: ORDINAL ('S ('S n))) Source Github # | |||||
| type (a :: ORDINAL ('S ('S n))) && ('OZ :: ORDINAL ('S ('S n))) Source Github # | |||||
| type ('OZ :: ORDINAL ('S ('S n))) || (b :: ORDINAL ('S ('S n))) Source Github # | |||||
| type ('OZ :: ORDINAL ('S ('S n))) && (b :: ORDINAL ('S ('S n))) Source Github # | |||||
| type ('OZ :: ORDINAL ('S 'Z)) || ('OZ :: ORDINAL ('S 'Z)) Source Github # | |||||
| type ('OZ :: ORDINAL ('S 'Z)) && ('OZ :: ORDINAL ('S 'Z)) Source Github # | |||||
| type HasArrow (LTE :: ORDINAL n -> ORDINAL n -> Type) (a :: ORDINAL n) (b :: ORDINAL n) Source Github # | |||||
| type Holds (LTE :: ORDINAL n -> ORDINAL n -> Type) (a :: ORDINAL n) (b :: ORDINAL n) Source Github # | |||||
| type ('OS a :: ORDINAL ('S ('S n))) || ('OS b :: ORDINAL ('S ('S n))) Source Github # | |||||
| type ('OS a :: ORDINAL ('S ('S n))) && ('OS b :: ORDINAL ('S ('S n))) Source Github # | |||||
data LTE (a :: ORDINAL n) (b :: ORDINAL n) where Source Github #
Constructors
| ZEQ :: forall {n1 :: Nat}. LTE ('OZ :: ORDINAL ('S n1)) ('OZ :: ORDINAL ('S n1)) | |
| ZLT :: forall {n1 :: Nat} (b1 :: ORDINAL ('S n1)). LTE ('OZ :: ORDINAL ('S n1)) b1 -> LTE ('OZ :: ORDINAL ('S ('S n1))) ('OS b1) | |
| SLT :: forall {n1 :: Nat} (a1 :: ORDINAL ('S n1)) (b1 :: ORDINAL ('S n1)). LTE a1 b1 -> LTE ('OS a1) ('OS b1) |
Instances
| Promonad (LTE :: ORDINAL n -> ORDINAL n -> Type) Source Github # | |
| Finitary (LTE :: ORDINAL n -> ORDINAL n -> Type) Source Github # | The ordinals are thin too, so the same three lines serve. So a chain can be used as a site: a cover there can have a leg that is itself covered, which no coverage on a two-object category can arrange. |
Defined in Proarrow.Category.Enriched.Finitary Methods size :: forall (a :: ORDINAL n) (b :: ORDINAL n). (Ob a, Ob b) => Natural Source Github # toIndex :: forall (a :: ORDINAL n) (b :: ORDINAL n). (Ob a, Ob b) => LTE a b -> Natural Source Github # fromIndex :: forall (a :: ORDINAL n) (b :: ORDINAL n). (Ob a, Ob b) => Natural -> LTE a b Source Github # elements :: forall (a :: ORDINAL n) (b :: ORDINAL n). (Ob a, Ob b) => [LTE a b] Source Github # | |
| DecidableProfunctor (LTE :: ORDINAL n -> ORDINAL n -> Type) Source Github # | |
Defined in Proarrow.Category.Instance.Ordinal Methods decide :: forall (a :: ORDINAL n) (b :: ORDINAL n). (Ob a, Ob b) => Decision (LTE :: ORDINAL n -> ORDINAL n -> Type) a b (Holds (LTE :: ORDINAL n -> ORDINAL n -> Type) a b) Source Github # toHolds :: forall (a :: ORDINAL n) (b :: ORDINAL n) r. LTE a b -> ((Holds (LTE :: ORDINAL n -> ORDINAL n -> Type) a b ~ 'TRU, Ob a, Ob b) => r) -> r Source Github # | |
| ThinProfunctor (LTE :: ORDINAL n -> ORDINAL n -> Type) Source Github # | |
Defined in Proarrow.Category.Instance.Ordinal Methods arr :: forall (a :: ORDINAL n) (b :: ORDINAL n). (Ob a, Ob b, HasArrow (LTE :: ORDINAL n -> ORDINAL n -> Type) a b) => LTE a b Source Github # withArr :: forall (a :: ORDINAL n) (b :: ORDINAL n) r. LTE a b -> ((HasArrow (LTE :: ORDINAL n -> ORDINAL n -> Type) a b, Ob a, Ob b) => r) -> r Source Github # | |
| MonoidalOrdinal n => MonoidalProfunctor (LTE :: ORDINAL n -> ORDINAL n -> Type) Source Github # | |
| Profunctor (LTE :: ORDINAL n -> ORDINAL n -> Type) Source Github # | |
Defined in Proarrow.Category.Instance.Ordinal Methods dimap :: forall (c :: ORDINAL n) (a :: ORDINAL n) (b :: ORDINAL n) (d :: ORDINAL n). (c ~> a) -> (b ~> d) -> LTE a b -> LTE c d Source Github # lmap :: forall (c :: ORDINAL n) (a :: ORDINAL n) (b :: ORDINAL n). (c ~> a) -> LTE a b -> LTE c b Source Github # rmap :: forall (b :: ORDINAL n) (d :: ORDINAL n) (a :: ORDINAL n). (b ~> d) -> LTE a b -> LTE a d Source Github # (\\) :: forall (a :: ORDINAL n) (b :: ORDINAL n) r. ((Ob a, Ob b) => r) -> LTE a b -> r Source Github # | |
| type HasArrow (LTE :: ORDINAL n -> ORDINAL n -> Type) (a :: ORDINAL n) (b :: ORDINAL n) Source Github # | |
| type Holds (LTE :: ORDINAL n -> ORDINAL n -> Type) (a :: ORDINAL n) (b :: ORDINAL n) Source Github # | |
class IsOrdinal (a :: ORDINAL n) where Source Github #
Methods
singOrdinal :: SOrdinal a Source Github #
type family OrdObjects (n :: Nat) :: [ORDINAL n] where ... Source Github #
The ordinals of , in order.ORDINAL n
ordSize :: forall (n :: Nat) r. SNatI n => (n ~ 'Z => r) -> (n ~ 'S 'Z => r) -> (forall (m :: Nat). (n ~ 'S ('S m), SNatI m) => r) -> r Source Github #
withOrdObjects :: forall (n :: Nat) (i :: Nat) r. SNatI n => SNat i -> (Lookup (OrdObjects n) i ~ OrdAt n i => IndexedList (OrdObjects n) -> r) -> r Source Github #
ordAtOb :: forall (n :: Nat) (i :: Nat). SNatI n => SNat i -> AtOb (ORDINAL n) (OrdAt n i) Source Github #
The ordinal at an index, if there is one. Enumerable cannot go through the generic atOb,
which is defined in terms of the withOb being given here, so the walk is done by recursion
on the index instead of on the object list.
type family OrdLeq (a :: ORDINAL n) (b :: ORDINAL n) :: BOOL where ... Source Github #
a <= b on the ordinal, as a BOOL.
type MonoidalOrdinal (n :: Nat) = (HasProducts (ORDINAL n), Ob (TerminalObject :: ORDINAL n)) Source Github #
The meet as tensor and the top as unit: the cartesian monoidal structure. Like the products it
is made of, only for a syntactically concrete n. MonoidalOrdinal names the context.