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.DecoratedTraversableFunctor
Classes.Kleisli.DecoratedTraversableFunctor.Import Kleisli.DecoratedTraversableFunctor.Notations.Import Product.Notations.#[local] Generalizable VariablesG ϕ.(** * Kleisli DTFs from Categorical DTFs *)(**********************************************************************)(** ** Derived Operations *)(**********************************************************************)ModuleDerivedOperations.#[export] InstanceMapdt_Categorical
(E: Type)
(T: Type -> Type)
`{Map T}
`{Decorate E T}
`{ApplicativeDist T}:
Mapdt E T :=
fun (G: Type -> Type) `{Map G} `{Pure G} `{Mult G}
(A B: Type) (f: E * A -> G B) =>
(dist T G ∘ map f ∘ dec T: T A -> G (T B)).EndDerivedOperations.(** ** Derived Instances *)(**********************************************************************)ModuleDerivedInstances.Import DerivedOperations.Sectionwith_functor.Context
(E: Type)
(T: Type -> Type)
`{Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor E T}.
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T
forallA : Type, mapdt extract = id
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T
forallA : Type, mapdt extract = id
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T A: Type
mapdt extract = id
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T A: Type
dist T (funA : Type => A) ∘ map extract ∘ dec T = id
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T A: Type
dist T (funA : Type => A) ∘ (map extract ∘ dec T) =
id
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T A: Type
dist T (funA : Type => A) ∘ id = id
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T A: Type
id ∘ id = id
reflexivity.Qed.
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T
forall (G1 : Type -> Type) (Map_G : Map G1)
(Pure_G : Pure G1) (Mult_G : Mult G1),
Applicative G1 ->
forall (G2 : Type -> Type) (Map_G0 : Map G2)
(Pure_G0 : Pure G2) (Mult_G0 : Mult G2),
Applicative G2 ->
forall (ABC : Type) (g : E * B -> G2 C)
(f : E * A -> G1 B),
map (mapdt g) ∘ mapdt f = mapdt (g ⋆3 f)
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T
forall (G1 : Type -> Type) (Map_G : Map G1)
(Pure_G : Pure G1) (Mult_G : Mult G1),
Applicative G1 ->
forall (G2 : Type -> Type) (Map_G0 : Map G2)
(Pure_G0 : Pure G2) (Mult_G0 : Mult G2),
Applicative G2 ->
forall (ABC : Type) (g : E * B -> G2 C)
(f : E * A -> G1 B),
map (mapdt g) ∘ mapdt f = mapdt (g ⋆3 f)
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H3: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H4: Applicative G2 A, B, C: Type g: E * B -> G2 C f: E * A -> G1 B
map (mapdt g) ∘ mapdt f = mapdt (g ⋆3 f)
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H3: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H4: Applicative G2 A, B, C: Type g: E * B -> G2 C f: E * A -> G1 B
map (dist T G2 ∘ map g ∘ dec T)
∘ (dist T G1 ∘ map f ∘ dec T) =
dist T (G1 ∘ G2) ∘ map (g ⋆3 f) ∘ dec T
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H3: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H4: Applicative G2 A, B, C: Type g: E * B -> G2 C f: E * A -> G1 B
map (dist T G2 ∘ map g ∘ dec T)
∘ (dist T G1 ∘ map f ∘ dec T) =
dist T (G1 ∘ G2) ∘ map (map g ∘ strength ∘ cobind f)
∘ dec T
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H3: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H4: Applicative G2 A, B, C: Type g: E * B -> G2 C f: E * A -> G1 B
map (dist T G2 ∘ map g) ∘ map (dec T)
∘ (dist T G1 ∘ map f ∘ dec T) =
dist T (G1 ∘ G2) ∘ map (map g ∘ strength ∘ cobind f)
∘ dec T
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H3: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H4: Applicative G2 A, B, C: Type g: E * B -> G2 C f: E * A -> G1 B
map (dist T G2 ∘ map g) ∘ map (dec T) ∘ dist T G1
∘ map f ∘ dec T =
dist T (G1 ∘ G2) ∘ map (map g ∘ strength ∘ cobind f)
∘ dec T
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H3: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H4: Applicative G2 A, B, C: Type g: E * B -> G2 C f: E * A -> G1 B
map (dist T G2 ∘ map g) ∘ (map (dec T) ∘ dist T G1)
∘ map f ∘ dec T =
dist T (G1 ∘ G2) ∘ map (map g ∘ strength ∘ cobind f)
∘ dec T
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H3: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H4: Applicative G2 A, B, C: Type g: E * B -> G2 C f: E * A -> G1 B
map (dist T G2 ∘ map g)
∘ (dist T G1 ∘ map strength ∘ dec T) ∘ map f ∘ dec T =
dist T (G1 ∘ G2) ∘ map (map g ∘ strength ∘ cobind f)
∘ dec T
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H3: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H4: Applicative G2 A, B, C: Type g: E * B -> G2 C f: E * A -> G1 B
map (dist T G2) ∘ map (map g)
∘ (dist T G1 ∘ map strength ∘ dec T) ∘ map f ∘ dec T =
dist T (G1 ∘ G2) ∘ map (map g ∘ strength ∘ cobind f)
∘ dec T
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H3: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H4: Applicative G2 A, B, C: Type g: E * B -> G2 C f: E * A -> G1 B
map (dist T G2) ∘ map (map g) ∘ dist T G1
∘ map strength ∘ dec T ∘ map f ∘ dec T =
dist T (G1 ∘ G2) ∘ map (map g ∘ strength ∘ cobind f)
∘ dec T
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H3: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H4: Applicative G2 A, B, C: Type g: E * B -> G2 C f: E * A -> G1 B
map (dist T G2) ∘ (map (map g) ∘ dist T G1)
∘ map strength ∘ dec T ∘ map f ∘ dec T =
dist T (G1 ∘ G2) ∘ map (map g ∘ strength ∘ cobind f)
∘ dec T
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H3: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H4: Applicative G2 A, B, C: Type g: E * B -> G2 C f: E * A -> G1 B
map (dist T G2) ∘ (map g ∘ dist T G1) ∘ map strength
∘ dec T ∘ map f ∘ dec T =
dist T (G1 ∘ G2) ∘ map (map g ∘ strength ∘ cobind f)
∘ dec T
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H3: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H4: Applicative G2 A, B, C: Type g: E * B -> G2 C f: E * A -> G1 B
map (dist T G2) ∘ (dist T G1 ∘ map g) ∘ map strength
∘ dec T ∘ map f ∘ dec T =
dist T (G1 ∘ G2) ∘ map (map g ∘ strength ∘ cobind f)
∘ dec T
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H3: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H4: Applicative G2 A, B, C: Type g: E * B -> G2 C f: E * A -> G1 B
map (dist T G2) ∘ (dist T G1 ∘ map g) ∘ map strength
∘ dec T ∘ map f ∘ dec T =
map (dist T G2) ∘ dist T G1
∘ map (map g ∘ strength ∘ cobind f) ∘ dec T
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H3: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H4: Applicative G2 A, B, C: Type g: E * B -> G2 C f: E * A -> G1 B
map (dist T G2) ∘ dist T G1 ∘ map g ∘ map strength
∘ dec T ∘ map f ∘ dec T =
map (dist T G2) ∘ dist T G1
∘ map (map g ∘ strength ∘ cobind f) ∘ dec T
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H3: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H4: Applicative G2 A, B, C: Type g: E * B -> G2 C f: E * A -> G1 B
map (dist T G2) ∘ dist T G1 ∘ map g ∘ map strength
∘ dec T ∘ map f ∘ dec T =
map (dist T G2) ∘ dist T G1
∘ (map (map g ∘ strength) ∘ map (cobind f)) ∘ dec T
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H3: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H4: Applicative G2 A, B, C: Type g: E * B -> G2 C f: E * A -> G1 B
map (dist T G2) ∘ dist T G1 ∘ map (map g)
∘ map strength ∘ dec T ∘ map f ∘ dec T =
map (dist T G2) ∘ dist T G1
∘ (map (map g ∘ strength) ∘ map (cobind f)) ∘ dec T
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H3: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H4: Applicative G2 A, B, C: Type g: E * B -> G2 C f: E * A -> G1 B
map (dist T G2) ∘ dist T G1
∘ (map (map g) ∘ map strength) ∘ dec T ∘ map f ∘ dec T =
map (dist T G2) ∘ dist T G1
∘ (map (map g ∘ strength) ∘ map (cobind f)) ∘ dec T
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H3: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H4: Applicative G2 A, B, C: Type g: E * B -> G2 C f: E * A -> G1 B
map (dist T G2) ∘ dist T G1 ∘ map (map g ∘ strength)
∘ dec T ∘ map f ∘ dec T =
map (dist T G2) ∘ dist T G1
∘ (map (map g ∘ strength) ∘ map (cobind f)) ∘ dec T
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H3: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H4: Applicative G2 A, B, C: Type g: E * B -> G2 C f: E * A -> G1 B
map (dist T G2) ∘ dist T G1 ∘ map (map g ∘ strength)
∘ (dec T ∘ map f) ∘ dec T =
map (dist T G2) ∘ dist T G1
∘ (map (map g ∘ strength) ∘ map (cobind f)) ∘ dec T
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H3: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H4: Applicative G2 A, B, C: Type g: E * B -> G2 C f: E * A -> G1 B
map (dist T G2) ∘ dist T G1 ∘ map (map g ∘ strength)
∘ (map f ∘ dec T) ∘ dec T =
map (dist T G2) ∘ dist T G1
∘ (map (map g ∘ strength) ∘ map (cobind f)) ∘ dec T
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H3: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H4: Applicative G2 A, B, C: Type g: E * B -> G2 C f: E * A -> G1 B
map (dist T G2)
∘ (dist T G1
∘ (map (map g ∘ strength)
∘ (map f ∘ (dec T ∘ dec T)))) =
map (dist T G2)
∘ (dist T G1
∘ (map (map g ∘ strength)
∘ (map (cobind f) ∘ dec T)))
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H3: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H4: Applicative G2 A, B, C: Type g: E * B -> G2 C f: E * A -> G1 B
map f ∘ (dec T ∘ dec T) = map (cobind f) ∘ dec T
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H3: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H4: Applicative G2 A, B, C: Type g: E * B -> G2 C f: E * A -> G1 B
map f ∘ (map cojoin ∘ dec T) = map (cobind f) ∘ dec T
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H3: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H4: Applicative G2 A, B, C: Type g: E * B -> G2 C f: E * A -> G1 B
map f ∘ map cojoin ∘ dec T = map (cobind f) ∘ dec T
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H3: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H4: Applicative G2 A, B, C: Type g: E * B -> G2 C f: E * A -> G1 B
map (map f) ∘ map cojoin ∘ dec T =
map (cobind f) ∘ dec T
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H3: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H4: Applicative G2 A, B, C: Type g: E * B -> G2 C f: E * A -> G1 B
map (map f ∘ cojoin) ∘ dec T = map (cobind f) ∘ dec T
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H3: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H4: Applicative G2 A, B, C: Type g: E * B -> G2 C f: E * A -> G1 B
map f ∘ cojoin = cobind f
now ext [e a].Qed.
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T
forall (G1G2 : Type -> Type) (H3 : Map G1)
(H4 : Mult G1) (H5 : Pure G1) (H6 : Map G2)
(H7 : Mult G2) (H8 : Pure G2)
(ϕ : forallA : Type, G1 A -> G2 A),
ApplicativeMorphism G1 G2 ϕ ->
forall (AB : Type) (f : E * A -> G1 B),
ϕ (T B) ∘ mapdt f = mapdt (ϕ B ∘ f)
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T
forall (G1G2 : Type -> Type) (H3 : Map G1)
(H4 : Mult G1) (H5 : Pure G1) (H6 : Map G2)
(H7 : Mult G2) (H8 : Pure G2)
(ϕ : forallA : Type, G1 A -> G2 A),
ApplicativeMorphism G1 G2 ϕ ->
forall (AB : Type) (f : E * A -> G1 B),
ϕ (T B) ∘ mapdt f = mapdt (ϕ B ∘ f)
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T G1, G2: Type -> Type H3: Map G1 H4: Mult G1 H5: Pure G1 H6: Map G2 H7: Mult G2 H8: Pure G2 ϕ: forallA : Type, G1 A -> G2 A H9: ApplicativeMorphism G1 G2 ϕ A, B: Type f: E * A -> G1 B
ϕ (T B) ∘ mapdt f = mapdt (ϕ B ∘ f)
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T G1, G2: Type -> Type H3: Map G1 H4: Mult G1 H5: Pure G1 H6: Map G2 H7: Mult G2 H8: Pure G2 ϕ: forallA : Type, G1 A -> G2 A H9: ApplicativeMorphism G1 G2 ϕ A, B: Type f: E * A -> G1 B
ϕ (T B) ∘ (dist T G1 ∘ map f ∘ dec T) =
dist T G2 ∘ map (ϕ B ∘ f) ∘ dec T
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T G1, G2: Type -> Type H3: Map G1 H4: Mult G1 H5: Pure G1 H6: Map G2 H7: Mult G2 H8: Pure G2 ϕ: forallA : Type, G1 A -> G2 A H9: ApplicativeMorphism G1 G2 ϕ A, B: Type f: E * A -> G1 B
ϕ (T B) ∘ dist T G1 ∘ map f ∘ dec T =
dist T G2 ∘ map (ϕ B ∘ f) ∘ dec T
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T G1, G2: Type -> Type H3: Map G1 H4: Mult G1 H5: Pure G1 H6: Map G2 H7: Mult G2 H8: Pure G2 ϕ: forallA : Type, G1 A -> G2 A H9: ApplicativeMorphism G1 G2 ϕ A, B: Type f: E * A -> G1 B
ϕ (T B) ∘ dist T G1 ∘ map f ∘ dec T =
dist T G2 ∘ (map (ϕ B) ∘ map f) ∘ dec T
E: Type T: Type -> Type H: Map T H0: Decorate E T H1: ApplicativeDist T H2: Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor
E T G1, G2: Type -> Type H3: Map G1 H4: Mult G1 H5: Pure G1 H6: Map G2 H7: Mult G2 H8: Pure G2 ϕ: forallA : Type, G1 A -> G2 A H9: ApplicativeMorphism G1 G2 ϕ A, B: Type f: E * A -> G1 B
dist T G2 ∘ map (ϕ B) ∘ map f ∘ dec T =
dist T G2 ∘ (map (ϕ B) ∘ map f) ∘ dec T