Built with Alectryon, running Coq+SerAPI v8.16.0+0.16.3. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑Ctrl+↓ to navigate, Ctrl+🖱️ to focus. On Mac, use ⌘ instead of Ctrl.
From Tealeaves Require Import
Classes.Kleisli.DecoratedFunctor
Classes.Categorical.DecoratedFunctor
Classes.Kleisli.Comonad.Import Kleisli.Comonad.Notations.Import Product.Notations.#[local] Generalizable VariablesT E A B C.(** * Categorical Decorated Functors to Kleisli Decorated Functors *)(**********************************************************************)(** ** Derived <<mapd>> Operation *)(**********************************************************************)ModuleDerivedOperations.#[export] InstanceDecorate_Mapd
(E: Type) (T: Type -> Type) `{Mapd_ET: Mapd E T}:
Decorate E T := funA => mapd (@id ((E ×) A)).EndDerivedOperations.(** ** Compatibility Classes *)(**********************************************************************)ClassCompat_Decorate_Mapd
(E: Type)
(F: Type -> Type)
`{Decorate_EF: Decorate E F}
`{Mapd_F: Mapd E F} :=
compat_dec_kleisli:
Decorate_EF = @DerivedOperations.Decorate_Mapd E F Mapd_F.
E: Type F: Type -> Type Decorate_EF: Decorate E F Mapd_F: Mapd E F Decorate_EF0: Decorate E F Mapd_F0: Mapd E F Compat: Compat_Decorate_Mapd E F
forall (A : Type) (t : F A), dec F t = mapd id t
E: Type F: Type -> Type Decorate_EF: Decorate E F Mapd_F: Mapd E F Decorate_EF0: Decorate E F Mapd_F0: Mapd E F Compat: Compat_Decorate_Mapd E F
forall (A : Type) (t : F A), dec F t = mapd id t
nowrewrite compat_dec_kleisli.Qed.(** ** Derived Decorated Functor Laws *)(**********************************************************************)ModuleDerivedInstances.Sectionproperties.Context
(E: Type)
(T: Type -> Type)
`{Kleisli.DecoratedFunctor.DecoratedFunctor E T}.(* Alectryon doesn't like this Import KleisliToCategorical.DecoratedFunctor.DerivedOperations. *)Import DerivedOperations.Import Kleisli.DecoratedFunctor.DerivedOperations.Import Kleisli.DecoratedFunctor.DerivedInstances.
E: Type T: Type -> Type H: Mapd E T H0: Kleisli.DecoratedFunctor.DecoratedFunctor E T
forallA : Type, cojoin = id ⋆1 id
E: Type T: Type -> Type H: Mapd E T H0: Kleisli.DecoratedFunctor.DecoratedFunctor E T
forallA : Type, cojoin = id ⋆1 id
E: Type T: Type -> Type H: Mapd E T H0: Kleisli.DecoratedFunctor.DecoratedFunctor E T A: Type
cojoin = id ⋆1 id
E: Type T: Type -> Type H: Mapd E T H0: Kleisli.DecoratedFunctor.DecoratedFunctor E T A: Type
cojoin = id ∘ cobind id
reflexivity.Qed.
E: Type T: Type -> Type H: Mapd E T H0: Kleisli.DecoratedFunctor.DecoratedFunctor E T
forallA : Type, dec T ∘ dec T = map cojoin ∘ dec T
E: Type T: Type -> Type H: Mapd E T H0: Kleisli.DecoratedFunctor.DecoratedFunctor E T
forallA : Type, dec T ∘ dec T = map cojoin ∘ dec T
E: Type T: Type -> Type H: Mapd E T H0: Kleisli.DecoratedFunctor.DecoratedFunctor E T A: Type
dec T ∘ dec T = map cojoin ∘ dec T
E: Type T: Type -> Type H: Mapd E T H0: Kleisli.DecoratedFunctor.DecoratedFunctor E T A: Type
mapd id ∘ mapd id = map cojoin ∘ mapd id
E: Type T: Type -> Type H: Mapd E T H0: Kleisli.DecoratedFunctor.DecoratedFunctor E T A: Type
mapd (id ⋆1 id) = map cojoin ∘ mapd id
E: Type T: Type -> Type H: Mapd E T H0: Kleisli.DecoratedFunctor.DecoratedFunctor E T A: Type
mapd cojoin = map cojoin ∘ mapd id
E: Type T: Type -> Type H: Mapd E T H0: Kleisli.DecoratedFunctor.DecoratedFunctor E T A: Type
mapd cojoin = mapd (cojoin ∘ id)
reflexivity.Qed.
E: Type T: Type -> Type H: Mapd E T H0: Kleisli.DecoratedFunctor.DecoratedFunctor E T
forallA : Type, map extract ∘ dec T = id
E: Type T: Type -> Type H: Mapd E T H0: Kleisli.DecoratedFunctor.DecoratedFunctor E T
forallA : Type, map extract ∘ dec T = id
E: Type T: Type -> Type H: Mapd E T H0: Kleisli.DecoratedFunctor.DecoratedFunctor E T A: Type
map extract ∘ dec T = id
E: Type T: Type -> Type H: Mapd E T H0: Kleisli.DecoratedFunctor.DecoratedFunctor E T A: Type
map extract ∘ mapd id = id
E: Type T: Type -> Type H: Mapd E T H0: Kleisli.DecoratedFunctor.DecoratedFunctor E T A: Type
mapd (extract ∘ id) = id
E: Type T: Type -> Type H: Mapd E T H0: Kleisli.DecoratedFunctor.DecoratedFunctor E T A: Type
mapd extract = id
E: Type T: Type -> Type H: Mapd E T H0: Kleisli.DecoratedFunctor.DecoratedFunctor E T A: Type
id = id
reflexivity.Qed.
E: Type T: Type -> Type H: Mapd E T H0: Kleisli.DecoratedFunctor.DecoratedFunctor E T
Natural (@dec E T (Decorate_Mapd E T))
E: Type T: Type -> Type H: Mapd E T H0: Kleisli.DecoratedFunctor.DecoratedFunctor E T
Natural (@dec E T (Decorate_Mapd E T))
E: Type T: Type -> Type H: Mapd E T H0: Kleisli.DecoratedFunctor.DecoratedFunctor E T
Functor T
E: Type T: Type -> Type H: Mapd E T H0: Kleisli.DecoratedFunctor.DecoratedFunctor E T
Functor (T ○ prod E)
E: Type T: Type -> Type H: Mapd E T H0: Kleisli.DecoratedFunctor.DecoratedFunctor E T
forall (AB : Type) (f : A -> B),
map f ∘ dec T = dec T ∘ map f
E: Type T: Type -> Type H: Mapd E T H0: Kleisli.DecoratedFunctor.DecoratedFunctor E T
Functor T
typeclasses eauto.
E: Type T: Type -> Type H: Mapd E T H0: Kleisli.DecoratedFunctor.DecoratedFunctor E T
Functor (T ○ prod E)
typeclasses eauto.
E: Type T: Type -> Type H: Mapd E T H0: Kleisli.DecoratedFunctor.DecoratedFunctor E T
forall (AB : Type) (f : A -> B),
map f ∘ dec T = dec T ∘ map f
E: Type T: Type -> Type H: Mapd E T H0: Kleisli.DecoratedFunctor.DecoratedFunctor E T A, B: Type f: A -> B
map f ∘ dec T = dec T ∘ map f
E: Type T: Type -> Type H: Mapd E T H0: Kleisli.DecoratedFunctor.DecoratedFunctor E T A, B: Type f: A -> B
map (map f) ∘ dec T = dec T ∘ map f
E: Type T: Type -> Type H: Mapd E T H0: Kleisli.DecoratedFunctor.DecoratedFunctor E T A, B: Type f: A -> B
map (map f) ∘ mapd id = mapd id ∘ map f
E: Type T: Type -> Type H: Mapd E T H0: Kleisli.DecoratedFunctor.DecoratedFunctor E T A, B: Type f: A -> B
mapd (map f ∘ id) = mapd id ∘ map f
E: Type T: Type -> Type H: Mapd E T H0: Kleisli.DecoratedFunctor.DecoratedFunctor E T A, B: Type f: A -> B
mapd (map f ∘ id) = mapd (id ∘ map f)
reflexivity.Qed.#[export] InstanceCategoricalDecoratedFunctor_Kleisli:
Categorical.DecoratedFunctor.DecoratedFunctor E T :=
{| dfun_dec_natural := dec_natural;
dfun_dec_dec := dec_dec;
dfun_dec_extract := dec_extract;
|}.Endproperties.EndDerivedInstances.