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.Categorical.Comonad
Classes.Kleisli.Comonad.(** * Comonad to Kleisli comonad *)(**********************************************************************)(** ** Derived <<cobind>> Operation *)(**********************************************************************)ModuleDerivedOperations.#[export] InstanceCobind_Categorical (W: Type -> Type)
`{Map W} `{Cojoin W}: Cobind W :=
fun {AB} (f: W A -> B) => map (F := W) f ∘ cojoin.EndDerivedOperations.ClassCompat_Cobind_Categorical
(W: Type -> Type)
`{Map_W: Map W}
`{Cojoin_W: Cojoin W}
`{Cobind_W: Cobind W} :=
compat_cobind_categorical:
Cobind_W = @DerivedOperations.Cobind_Categorical W Map_W Cojoin_W.
W: Type -> Type H: Map W H0: Cojoin W
Compat_Cobind_Categorical W
W: Type -> Type H: Map W H0: Cojoin W
Compat_Cobind_Categorical W
reflexivity.Qed.
W: Type -> Type Map_W: Map W Cojoin_W: Cojoin W Cobind_W: Cobind W Map_W0: Map W Cojoin_W0: Cojoin W Cobind_W0: Cobind W Compat: Compat_Cobind_Categorical W
forall (AB : Type) (f : W A -> B),
cobind f = map f ∘ cojoin
W: Type -> Type Map_W: Map W Cojoin_W: Cojoin W Cobind_W: Cobind W Map_W0: Map W Cojoin_W0: Cojoin W Cobind_W0: Cobind W Compat: Compat_Cobind_Categorical W
forall (AB : Type) (f : W A -> B),
cobind f = map f ∘ cojoin
nowrewrite compat_cobind_categorical.Qed.ModuleDerivedInstances.(* Alectryon doesn't like this Import CategoricalToKleisli.Comonad.DerivedOperations. *)Import DerivedOperations.Import Tealeaves.Classes.Kleisli.Comonad.Import Kleisli.Comonad.Notations.#[local] Generalizable All Variables.#[local] Arguments cobind W%function_scope {Cobind}
(A B)%type_scope _%function_scope _.(** ** <<cojoin>> as <<id ⋆1 id>> *)(********************************************************************)
W: Type -> Type Map_W: Map W Cojoin_W: Cojoin W Extract_W: Extract W H: Categorical.Comonad.Comonad W
forallA : Type, cojoin = id ⋆1 id
W: Type -> Type Map_W: Map W Cojoin_W: Cojoin W Extract_W: Extract W H: Categorical.Comonad.Comonad W
forallA : Type, cojoin = id ⋆1 id
W: Type -> Type Map_W: Map W Cojoin_W: Cojoin W Extract_W: Extract W H: Categorical.Comonad.Comonad W A: Type
cojoin = id ⋆1 id
W: Type -> Type Map_W: Map W Cojoin_W: Cojoin W Extract_W: Extract W H: Categorical.Comonad.Comonad W A: Type
cojoin = id ∘ (map id ∘ cojoin)
W: Type -> Type Map_W: Map W Cojoin_W: Cojoin W Extract_W: Extract W H: Categorical.Comonad.Comonad W A: Type