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 Export
Classes.Categorical.Applicative
Classes.Kleisli.Comonad
Classes.Kleisli.DecoratedFunctor
Classes.Kleisli.TraversableFunctor
Functors.Early.Reader.Import Monoid.Notations.Import Strength.Notations.Import TraversableFunctor.Notations.Import Comonad.Notations.Import Product.Notations.#[local] Generalizable VariablesE T ϕ G A B C M.(** * Decorated Traversable Functor *)(**********************************************************************)(** ** Operation <<mapdt>> *)(**********************************************************************)ClassMapdt (E: Type) (T: Type -> Type) :=
mapdt: forall (G: Type -> Type) `{Map G} `{Pure G} `{Mult G}
(A B: Type), (E * A -> G B) -> T A -> G (T B).#[global] Arguments mapdt {E}%type_scope {T}%function_scope {Mapdt}
{G}%function_scope {H H0 H1} {A B}%type_scope _%function_scope _.(** ** Kleisli Composition *)(**********************************************************************)Definitionkc3
{EABC: Type}
{G1G2: Type -> Type}
`{Map G1} `{Pure G1} `{Mult G1}
`{Map G2} `{Pure G2} `{Mult G2}
(g: E * B -> G2 C)
(f: E * A -> G1 B):
(E * A -> G1 (G2 C)) :=
map (F := G1) (A := E * B) (B := G2 C) g ∘ strength ∘ cobind f.#[local] Infix"⋆3" := kc3 (at level60): tealeaves_scope.(** ** Typeclass *)(**********************************************************************)ClassDecoratedTraversableFunctor
(E: Type) (T: Type -> Type) `{Mapdt E T} :=
{ kdtf_mapdt1: forall (A: Type),
mapdt (G := funA => A) extract = @id (T A);
kdtf_mapdt2:
forall `{Applicative G1} `{Applicative G2}
{A B C: Type} (g: E * B -> G2 C) (f: E * A -> G1 B),
map (mapdt g) ∘ mapdt f = mapdt (G := G1 ∘ G2) (g ⋆3 f);
kdtf_morph: forall `{morphism: ApplicativeMorphism G1 G2 ϕ}
{A B: Type} (f: E * A -> G1 B),
ϕ (T B) ∘ mapdt f = mapdt (ϕ B ∘ f);
}.(** ** Kleisli Category Laws *)(** TODO: The left and right unit are simply <<extract>> with <<G>> = <<fun A => A>> *)(**********************************************************************)(** * Derived Structures *)(**********************************************************************)(** ** Derived Operations *)(**********************************************************************)ModuleDerivedOperations.Sectionoperations.Context
`{Mapdt_ET: Mapdt E T}.#[export] InstanceMapd_Mapdt: Mapd E T :=
funABf => mapdt (G := funA => A) f.#[export] InstanceTraverse_Mapdt: Traverse T :=
funG___ABf => mapdt (f ∘ extract).#[export] InstanceMap_Mapdt: Map T :=
funABf => mapdt (G := funA => A) (f ∘ extract).Endoperations.EndDerivedOperations.Sectioncompat.Context
(E: Type)
(T: Type -> Type)
`{Map_T: Map T}
`{Mapd_ET: Mapd E T}
`{Traverse_T: Traverse T}
`{Mapdt_ET: Mapdt E T}.ClassCompat_Map_Mapdt: Prop :=
compat_map_mapdt:
@Map_T = @DerivedOperations.Map_Mapdt E T Mapdt_ET.ClassCompat_Mapd_Mapdt: Prop :=
compat_mapd_mapdt:
@Mapd_ET = @DerivedOperations.Mapd_Mapdt E T Mapdt_ET.ClassCompat_Traverse_Mapdt: Prop :=
compat_traverse_mapdt:
@Traverse_T =
@DerivedOperations.Traverse_Mapdt E T Mapdt_ET.(* forall {G: Type -> Type} `{Map_G: Map G} `{Mult_G: Mult G} `{Pure_G: Pure G} `{! Applicative G}, @Traverse_T G Map_G Pure_G Mult_G = @DerivedOperations.Traverse_Mapdt E T Mapdt_ET G Map_G Pure_G Mult_G. *)Endcompat.Sectionrewriting.Context
`{Map_T: Map T}
`{Mapd_ET: Mapd E T}
`{Traverse_T: Traverse T}
`{Mapdt_ET: Mapdt E T}
`{! Compat_Map_Mapdt E T}
`{! Compat_Mapd_Mapdt E T}
`{! Compat_Traverse_Mapdt E T}.
T: Type -> Type Map_T: Map T E: Type Mapd_ET: Mapd E T Traverse_T: Traverse T Mapdt_ET: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H: Applicative G
forall (AB : Type) (f : A -> G B),
traverse f = mapdt (f ∘ extract)
T: Type -> Type Map_T: Map T E: Type Mapd_ET: Mapd E T Traverse_T: Traverse T Mapdt_ET: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H: Applicative G
forall (AB : Type) (f : A -> G B),
traverse f = mapdt (f ∘ extract)
T: Type -> Type Map_T: Map T E: Type Mapd_ET: Mapd E T Traverse_T: Traverse T Mapdt_ET: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H: Applicative G
forall (AB : Type) (f : A -> G B),
DerivedOperations.Traverse_Mapdt G Map_G Pure_G Mult_G
A B f = mapdt (f ∘ extract)
reflexivity.Qed.Definitionmapd_to_mapdt: forall `(f: E * A -> B),
mapd f = mapdt (T := T) (G := funA => A) f :=
ltac:(nowrewrite (compat_mapd_mapdt E T)).Definitionmap_to_mapdt: forall `(f: A -> B),
map f = mapdt (T := T) (G := funA => A) (f ∘ extract) :=
ltac:(nowrewrite (compat_map_mapdt E T)).
T: Type -> Type Map_T: Map T E: Type Mapd_ET: Mapd E T Traverse_T: Traverse T Mapdt_ET: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T
forall (AB : Type) (f : A -> B),
map f = mapd (f ∘ extract)
T: Type -> Type Map_T: Map T E: Type Mapd_ET: Mapd E T Traverse_T: Traverse T Mapdt_ET: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T
forall (AB : Type) (f : A -> B),
map f = mapd (f ∘ extract)
T: Type -> Type Map_T: Map T E: Type Mapd_ET: Mapd E T Traverse_T: Traverse T Mapdt_ET: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T A, B: Type f: A -> B
map f = mapd (f ∘ extract)
T: Type -> Type Map_T: Map T E: Type Mapd_ET: Mapd E T Traverse_T: Traverse T Mapdt_ET: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T A, B: Type f: A -> B
mapdt (f ∘ extract) = mapd (f ∘ extract)
T: Type -> Type Map_T: Map T E: Type Mapd_ET: Mapd E T Traverse_T: Traverse T Mapdt_ET: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T A, B: Type f: A -> B
mapdt (f ∘ extract) = mapdt (f ∘ extract)
reflexivity.Qed.
T: Type -> Type Map_T: Map T E: Type Mapd_ET: Mapd E T Traverse_T: Traverse T Mapdt_ET: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T
forall (AB : Type) (f : A -> B), map f = traverse f
T: Type -> Type Map_T: Map T E: Type Mapd_ET: Mapd E T Traverse_T: Traverse T Mapdt_ET: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T
forall (AB : Type) (f : A -> B), map f = traverse f
T: Type -> Type Map_T: Map T E: Type Mapd_ET: Mapd E T Traverse_T: Traverse T Mapdt_ET: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T A, B: Type f: A -> B
map f = traverse f
T: Type -> Type Map_T: Map T E: Type Mapd_ET: Mapd E T Traverse_T: Traverse T Mapdt_ET: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T A, B: Type f: A -> B
mapdt (f ∘ extract) = traverse f
T: Type -> Type Map_T: Map T E: Type Mapd_ET: Mapd E T Traverse_T: Traverse T Mapdt_ET: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T A, B: Type f: A -> B
mapdt (f ∘ extract) = mapdt (f ∘ extract)
reflexivity.Qed.Endrewriting.#[export] InstanceCompat_Map_Mapdt_Self `{Mapdt_ET: Mapdt E T}:
Compat_Map_Mapdt E T
(Map_T := DerivedOperations.Map_Mapdt)
:= ltac:(reflexivity).#[export] InstanceCompat_Mapd_Mapdt_Self `{Mapdt_inst: Mapdt E T}:
Compat_Mapd_Mapdt E T
(Mapd_ET := DerivedOperations.Mapd_Mapdt)
:= ltac:(reflexivity).#[export] InstanceCompat_Traverse_Mapdt_Self `{Mapdt_inst: Mapdt E T}:
Compat_Traverse_Mapdt E T
(Traverse_T := DerivedOperations.Traverse_Mapdt) :=
ltac:(hnf; reflexivity).
T: Type -> Type Map_T: Map T E: Type Mapd_ET: Mapd E T Mapdt_ET: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T
Compat_Map_Mapd E T
T: Type -> Type Map_T: Map T E: Type Mapd_ET: Mapd E T Mapdt_ET: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T
Compat_Map_Mapd E T
T: Type -> Type Map_T: Map T E: Type Mapd_ET: Mapd E T Mapdt_ET: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T
Map_T = DerivedOperations.Map_Mapd E T
T: Type -> Type Map_T: Map T E: Type Mapd_ET: Mapd E T Mapdt_ET: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T
DerivedOperations.Map_Mapdt =
DerivedOperations.Map_Mapd E T
T: Type -> Type Map_T: Map T E: Type Mapd_ET: Mapd E T Mapdt_ET: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T
DerivedOperations.Map_Mapdt =
DerivedOperations.Map_Mapd E T
reflexivity.Qed.
T: Type -> Type Map_T: Map T Traverse_T: Traverse T E: Type Mapdt_ET: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T
Compat_Map_Traverse T
T: Type -> Type Map_T: Map T Traverse_T: Traverse T E: Type Mapdt_ET: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T
Compat_Map_Traverse T
T: Type -> Type Map_T: Map T Traverse_T: Traverse T E: Type Mapdt_ET: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T
Map_T = DerivedOperations.Map_Traverse T
T: Type -> Type Map_T: Map T Traverse_T: Traverse T E: Type Mapdt_ET: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T
DerivedOperations.Map_Mapdt =
DerivedOperations.Map_Traverse T
T: Type -> Type Map_T: Map T Traverse_T: Traverse T E: Type Mapdt_ET: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T
DerivedOperations.Map_Mapdt =
DerivedOperations.Map_Traverse T
reflexivity.Qed.(** ** Composition with the Identity Applicative Functor *)(**********************************************************************)Sectionmapdt_identity_applicative.#[local] Arguments mapdt E%type_scope T%function_scope {Mapdt}
G%function_scope (H H0 H1) (A B)%type_scope _%function_scope _.Context
`{DecoratedTraversableFunctor E T}.Context
{G: Type -> Type}
{AB: Type}
{mapG: Map G}
{pureG: Pure G}
{multG: Mult G}
`{! Applicative G}.
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T G: Type -> Type A, B: Type mapG: Map G pureG: Pure G multG: Mult G Applicative0: Applicative G
forallf : E * A -> G B,
mapdt E T ((funA : Type => A) ∘ G)
(Map_compose (funA : Type => A) G)
(Pure_compose (funA : Type => A) G)
(Mult_compose (funA : Type => A) G) A B f =
mapdt E T G mapG pureG multG A B f
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T G: Type -> Type A, B: Type mapG: Map G pureG: Pure G multG: Mult G Applicative0: Applicative G
forallf : E * A -> G B,
mapdt E T ((funA : Type => A) ∘ G)
(Map_compose (funA : Type => A) G)
(Pure_compose (funA : Type => A) G)
(Mult_compose (funA : Type => A) G) A B f =
mapdt E T G mapG pureG multG A B f
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T G: Type -> Type A, B: Type mapG: Map G pureG: Pure G multG: Mult G Applicative0: Applicative G f: E * A -> G B
mapdt E T ((funA : Type => A) ∘ G)
(Map_compose (funA : Type => A) G)
(Pure_compose (funA : Type => A) G)
(Mult_compose (funA : Type => A) G) A B f =
mapdt E T G mapG pureG multG A B f
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T G: Type -> Type A, B: Type mapG: Map G pureG: Pure G multG: Mult G Applicative0: Applicative G f: E * A -> G B
H (funa : Type => G a)
(fun (AB : Type) (f : A -> B) => mapG A B f)
(fun (A : Type) (a : A) => pureG A a)
(fun (AB : Type) (p : G A * G B) =>
multG A B
(let (x, _) := p in x, let (_, y) := p in y)) A B
f = H G mapG pureG multG A B f
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T G: Type -> Type A, B: Type mapG: Map G pureG: Pure G multG: Mult G Applicative0: Applicative G f: E * A -> G B
(fun (AB : Type) (p : G A * G B) =>
multG A B
(let (x, _) := p in x, let (_, y) := p in y)) =
multG
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T G: Type -> Type A, B: Type mapG: Map G pureG: Pure G multG: Mult G Applicative0: Applicative G f: E * A -> G B A', B': Type p: G A' * G B'
multG A' B'
(let (x, _) := p in x, let (_, y) := p in y) =
multG A' B' p
nowdestruct p.Qed.
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T G: Type -> Type A, B: Type mapG: Map G pureG: Pure G multG: Mult G Applicative0: Applicative G
forallf : E * A -> G B,
mapdt E T (G ∘ (funA : Type => A))
(Map_compose G (funA : Type => A))
(Pure_compose G (funA : Type => A))
(Mult_compose G (funA : Type => A)) A B f =
mapdt E T G mapG pureG multG A B f
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T G: Type -> Type A, B: Type mapG: Map G pureG: Pure G multG: Mult G Applicative0: Applicative G
forallf : E * A -> G B,
mapdt E T (G ∘ (funA : Type => A))
(Map_compose G (funA : Type => A))
(Pure_compose G (funA : Type => A))
(Mult_compose G (funA : Type => A)) A B f =
mapdt E T G mapG pureG multG A B f
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T G: Type -> Type A, B: Type mapG: Map G pureG: Pure G multG: Mult G Applicative0: Applicative G f: E * A -> G B
mapdt E T (G ∘ (funA : Type => A))
(Map_compose G (funA : Type => A))
(Pure_compose G (funA : Type => A))
(Mult_compose G (funA : Type => A)) A B f =
mapdt E T G mapG pureG multG A B f
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T G: Type -> Type A, B: Type mapG: Map G pureG: Pure G multG: Mult G Applicative0: Applicative G f: E * A -> G B
H (funa : Type => G a)
(fun (AB : Type) (f : A -> B) => mapG A B f)
(fun (A : Type) (a : A) => pureG A a)
(fun (AB : Type) (p : G A * G B) =>
mapG (A * B) (A * B) (funp0 : A * B => p0)
(multG A B
(let (x, _) := p in x, let (_, y) := p in y)))
A B f = H G mapG pureG multG A B f
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T G: Type -> Type A, B: Type mapG: Map G pureG: Pure G multG: Mult G Applicative0: Applicative G f: E * A -> G B
(fun (AB : Type) (p : G A * G B) =>
mapG (A * B) (A * B) (funp0 : A * B => p0)
(multG A B
(let (x, _) := p in x, let (_, y) := p in y))) =
multG
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T G: Type -> Type A, B: Type mapG: Map G pureG: Pure G multG: Mult G Applicative0: Applicative G f: E * A -> G B A', B': Type p: G A' * G B'
mapG (A' * B') (A' * B') (funp : A' * B' => p)
(multG A' B'
(let (x, _) := p in x, let (_, y) := p in y)) =
multG A' B' p
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T G: Type -> Type A, B: Type mapG: Map G pureG: Pure G multG: Mult G Applicative0: Applicative G f: E * A -> G B A', B': Type g: G A' g0: G B'
mapG (A' * B') (A' * B') (funp : A' * B' => p)
(multG A' B' (g, g0)) = multG A' B' (g, g0)
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T G: Type -> Type A, B: Type mapG: Map G pureG: Pure G multG: Mult G Applicative0: Applicative G f: E * A -> G B A', B': Type g: G A' g0: G B'
map id (multG A' B' (g, g0)) = multG A' B' (g, g0)
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T G: Type -> Type A, B: Type mapG: Map G pureG: Pure G multG: Mult G Applicative0: Applicative G f: E * A -> G B A', B': Type g: G A' g0: G B'
id (multG A' B' (g, g0)) = multG A' B' (g, g0)
reflexivity.Qed.Endmapdt_identity_applicative.(** ** Derived Kleisli Composition Laws *)(**********************************************************************)Sectiondecorated_traversable_functor_derived_kleisli_laws.Context
{E: Type} {T: Type -> Type}
`{Map_inst: Map T}
`{Mapd_inst: Mapd E T}
`{Traverse_inst: Traverse T}
`{Mapdt_inst: Mapdt E T}
`{! Compat_Map_Mapdt E T}
`{! Compat_Mapd_Mapdt E T}
`{! Compat_Traverse_Mapdt E T}
`{! DecoratedTraversableFunctor E T}.
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G2: Type -> Type Map_G: Map G2 Pure_G: Pure G2 Mult_G: Mult G2 H: Applicative G2 G1: Type -> Type Map_G0: Map G1 Pure_G0: Pure G1 Mult_G0: Mult G1 H0: Applicative G1
forall (ABC : Type) (f : E * A -> G1 B)
(g : E * B -> G2 C),
g ⋆3 f = (fun '(w, a) => map (g ∘ pair w) (f (w, a)))
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G2: Type -> Type Map_G: Map G2 Pure_G: Pure G2 Mult_G: Mult G2 H: Applicative G2 G1: Type -> Type Map_G0: Map G1 Pure_G0: Pure G1 Mult_G0: Mult G1 H0: Applicative G1
forall (ABC : Type) (f : E * A -> G1 B)
(g : E * B -> G2 C),
g ⋆3 f = (fun '(w, a) => map (g ∘ pair w) (f (w, a)))
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G2: Type -> Type Map_G: Map G2 Pure_G: Pure G2 Mult_G: Mult G2 H: Applicative G2 G1: Type -> Type Map_G0: Map G1 Pure_G0: Pure G1 Mult_G0: Mult G1 H0: Applicative G1 A, B, C: Type f: E * A -> G1 B g: E * B -> G2 C
g ⋆3 f = (fun '(w, a) => map (g ∘ pair w) (f (w, a)))
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G2: Type -> Type Map_G: Map G2 Pure_G: Pure G2 Mult_G: Mult G2 H: Applicative G2 G1: Type -> Type Map_G0: Map G1 Pure_G0: Pure G1 Mult_G0: Mult G1 H0: Applicative G1 A, B, C: Type f: E * A -> G1 B g: E * B -> G2 C
map g ∘ σ ∘ cobind f =
(fun '(w, a) => map (g ∘ pair w) (f (w, a)))
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G2: Type -> Type Map_G: Map G2 Pure_G: Pure G2 Mult_G: Mult G2 H: Applicative G2 G1: Type -> Type Map_G0: Map G1 Pure_G0: Pure G1 Mult_G0: Mult G1 H0: Applicative G1 A, B, C: Type f: E * A -> G1 B g: E * B -> G2 C
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T H: Monoid_op E G2: Type -> Type Map_G: Map G2 Pure_G: Pure G2 Mult_G: Mult G2 H0: Applicative G2 G1: Type -> Type Map_G0: Map G1 Pure_G0: Pure G1 Mult_G0: Mult G1 H1: Applicative G1
forall (ABC : Type) (f : E * A -> G1 B)
(g : E * B -> G2 C) (e : E),
(g ⋆3 f) ⦿ e = g ⦿ e ⋆3 f ⦿ e
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T H: Monoid_op E G2: Type -> Type Map_G: Map G2 Pure_G: Pure G2 Mult_G: Mult G2 H0: Applicative G2 G1: Type -> Type Map_G0: Map G1 Pure_G0: Pure G1 Mult_G0: Mult G1 H1: Applicative G1
forall (ABC : Type) (f : E * A -> G1 B)
(g : E * B -> G2 C) (e : E),
(g ⋆3 f) ⦿ e = g ⦿ e ⋆3 f ⦿ e
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T H: Monoid_op E G2: Type -> Type Map_G: Map G2 Pure_G: Pure G2 Mult_G: Mult G2 H0: Applicative G2 G1: Type -> Type Map_G0: Map G1 Pure_G0: Pure G1 Mult_G0: Mult G1 H1: Applicative G1 A, B, C: Type f: E * A -> G1 B g: E * B -> G2 C e: E
(g ⋆3 f) ⦿ e = g ⦿ e ⋆3 f ⦿ e
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T H: Monoid_op E G2: Type -> Type Map_G: Map G2 Pure_G: Pure G2 Mult_G: Mult G2 H0: Applicative G2 G1: Type -> Type Map_G0: Map G1 Pure_G0: Pure G1 Mult_G0: Mult G1 H1: Applicative G1 A, B, C: Type f: E * A -> G1 B g: E * B -> G2 C e: E
(fun '(w, a) => map (g ∘ pair w) (f (w, a))) ⦿ e =
(fun '(w, a) => map (g ⦿ e ∘ pair w) ((f ⦿ e) (w, a)))
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T H: Monoid_op E G2: Type -> Type Map_G: Map G2 Pure_G: Pure G2 Mult_G: Mult G2 H0: Applicative G2 G1: Type -> Type Map_G0: Map G1 Pure_G0: Pure G1 Mult_G0: Mult G1 H1: Applicative G1 A, B, C: Type f: E * A -> G1 B g: E * B -> G2 C e, e': E a: A
((fun '(w, a) => map (g ∘ pair w) (f (w, a))) ⦿ e)
(e', a) = map (g ⦿ e ∘ pair e') ((f ⦿ e) (e', a))
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T H: Monoid_op E G2: Type -> Type Map_G: Map G2 Pure_G: Pure G2 Mult_G: Mult G2 H0: Applicative G2 G1: Type -> Type Map_G0: Map G1 Pure_G0: Pure G1 Mult_G0: Mult G1 H1: Applicative G1 A, B, C: Type f: E * A -> G1 B g: E * B -> G2 C e, e': E a: A
map (g ○ pair (e ● e')) (f (e ● e', a)) =
map (g ⦿ e ○ pair e') ((f ⦿ e) (e', a))
reflexivity.Qed.Import Comonad.Notations.Import Product.Notations.Context
`{Applicative G1}
`{Applicative G2}
(A B C: Type).(** *** Homogeneous cases *)(********************************************************************)
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : E * B -> C) (f : E * A -> B),
g ⋆3 f = g ⋆1 f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : E * B -> C) (f : E * A -> B),
g ⋆3 f = g ⋆1 f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> C f: E * A -> B
g ⋆3 f = g ⋆1 f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> C f: E * A -> B
map g ∘ σ ∘ cobind f = g ⋆1 f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> C f: E * A -> B
map g ∘ id ∘ cobind f = g ⋆1 f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> C f: E * A -> B
g ∘ id ∘ cobind f = g ⋆1 f
reflexivity.Qed.
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : B -> G2 C) (f : A -> G1 B),
g ∘ extract ⋆3 f ∘ extract = map g ∘ f ∘ extract
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : B -> G2 C) (f : A -> G1 B),
g ∘ extract ⋆3 f ∘ extract = map g ∘ f ∘ extract
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> G2 C f: A -> G1 B
g ∘ extract ⋆3 f ∘ extract = map g ∘ f ∘ extract
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> G2 C f: A -> G1 B
map (g ∘ extract) ∘ σ ∘ cobind (f ∘ extract) =
map g ∘ f ∘ extract
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> G2 C f: A -> G1 B
map (g ∘ extract) ∘ σ ∘ map f = map g ∘ f ∘ extract
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> G2 C f: A -> G1 B e: E a: A
(map (g ∘ extract) ∘ σ ∘ map f) (e, a) =
(map g ∘ f ∘ extract) (e, a)
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> G2 C f: A -> G1 B e: E a: A
map (g ○ extract) (map (pair (id e)) (f a)) =
map g (f a)
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> G2 C f: A -> G1 B e: E a: A
(map (g ○ extract) ∘ map (pair (id e))) (f a) =
map g (f a)
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> G2 C f: A -> G1 B e: E a: A
map (g ○ extract ∘ pair (id e)) (f a) = map g (f a)
reflexivity.Qed.
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (f : A -> B) (g : B -> C),
g ∘ extract ⋆3 f ∘ extract = g ∘ f ∘ extract
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (f : A -> B) (g : B -> C),
g ∘ extract ⋆3 f ∘ extract = g ∘ f ∘ extract
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type f: A -> B g: B -> C
g ∘ extract ⋆3 f ∘ extract = g ∘ f ∘ extract
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type f: A -> B g: B -> C
map (g ∘ extract) ∘ σ ∘ cobind (f ∘ extract) =
g ∘ f ∘ extract
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type f: A -> B g: B -> C
g ∘ extract ∘ σ ∘ cobind (f ∘ extract) =
g ∘ f ∘ extract
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type f: A -> B g: B -> C
g ∘ extract ∘ id ∘ cobind (f ∘ extract) =
g ∘ f ∘ extract
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type f: A -> B g: B -> C
g ∘ extract ∘ cobind (f ∘ extract) = g ∘ f ∘ extract
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type f: A -> B g: B -> C
g ∘ (extract ∘ cobind (f ∘ extract)) = g ∘ f ∘ extract
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type f: A -> B g: B -> C
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : E * B -> G2 C) (f : E * A -> B),
g ⋆3 f = g ⋆1 f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : E * B -> G2 C) (f : E * A -> B),
g ⋆3 f = g ⋆1 f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> G2 C f: E * A -> B
g ⋆3 f = g ⋆1 f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> G2 C f: E * A -> B
map g ∘ σ ∘ cobind f = g ⋆1 f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> G2 C f: E * A -> B
map g ∘ (fun '(a, t) => map (pair a) t) ∘ cobind f =
g ⋆1 f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> G2 C f: E * A -> B w: E a: A
(map g ∘ (fun '(a, t) => map (pair a) t) ∘ cobind f)
(w, a) = (g ⋆1 f) (w, a)
reflexivity.Qed.
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : E * B -> G2 C) (f : A -> G1 B),
g ⋆3 f ∘ extract = map g ∘ σ ∘ map f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : E * B -> G2 C) (f : A -> G1 B),
g ⋆3 f ∘ extract = map g ∘ σ ∘ map f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> G2 C f: A -> G1 B
g ⋆3 f ∘ extract = map g ∘ σ ∘ map f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> G2 C f: A -> G1 B
map g ∘ σ ∘ cobind (f ∘ extract) = map g ∘ σ ∘ map f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> G2 C f: A -> G1 B w: E a: A
(map g ∘ σ ∘ cobind (f ∘ extract)) (w, a) =
(map g ∘ σ ∘ map f) (w, a)
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> G2 C f: A -> G1 B w: E a: A
(map g ∘ σ ∘ map f) (w, a) =
(map g ∘ σ ∘ map f) (w, a)
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> G2 C f: A -> G1 B w: E a: A
map g (map (pair (id w)) (f a)) =
map g (map (pair (id w)) (f a))
reflexivity.Qed.
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : E * B -> G2 C) (f : A -> B),
g ⋆3 f ∘ extract = g ∘ map f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : E * B -> G2 C) (f : A -> B),
g ⋆3 f ∘ extract = g ∘ map f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> G2 C f: A -> B
g ⋆3 f ∘ extract = g ∘ map f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> G2 C f: A -> B
map g ∘ σ ∘ cobind (f ∘ extract) = g ∘ map f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> G2 C f: A -> B
map g ∘ id ∘ cobind (f ∘ extract) = g ∘ map f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> G2 C f: A -> B
g ∘ id ∘ cobind (f ∘ extract) = g ∘ map f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> G2 C f: A -> B e: E a: A
(g ∘ id ∘ cobind (f ∘ extract)) (e, a) =
(g ∘ map f) (e, a)
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : E * B -> C) (f : E * A -> G1 B),
g ⋆3 f = map g ∘ σ ∘ cobind f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : E * B -> C) (f : E * A -> G1 B),
g ⋆3 f = map g ∘ σ ∘ cobind f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> C f: E * A -> G1 B
g ⋆3 f = map g ∘ σ ∘ cobind f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> C f: E * A -> G1 B
map g ∘ σ ∘ cobind f = map g ∘ σ ∘ cobind f
reflexivity.Qed.
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : B -> G2 C) (f : E * A -> G1 B),
g ∘ extract ⋆3 f = map g ∘ f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : B -> G2 C) (f : E * A -> G1 B),
g ∘ extract ⋆3 f = map g ∘ f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> G2 C f: E * A -> G1 B
g ∘ extract ⋆3 f = map g ∘ f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> G2 C f: E * A -> G1 B
map (g ∘ extract) ∘ σ ∘ cobind f = map g ∘ f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> G2 C f: E * A -> G1 B w: E a: A
(map (g ∘ extract) ∘ σ ∘ cobind f) (w, a) =
(map g ∘ f) (w, a)
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> G2 C f: E * A -> G1 B w: E a: A
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> G2 C f: E * A -> G1 B w: E a: A
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : B -> C) (f : E * A -> G1 B),
g ∘ extract ⋆3 f = map g ∘ f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : B -> C) (f : E * A -> G1 B),
g ∘ extract ⋆3 f = map g ∘ f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> C f: E * A -> G1 B
g ∘ extract ⋆3 f = map g ∘ f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> C f: E * A -> G1 B
map (g ∘ extract) ∘ σ ∘ cobind f = map g ∘ f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> C f: E * A -> G1 B w: E a: A
(map (g ∘ extract) ∘ σ ∘ cobind f) (w, a) =
(map g ∘ f) (w, a)
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> C f: E * A -> G1 B w: E a: A
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> C f: E * A -> G1 B w: E a: A
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : B -> G2 C) (f : E * A -> B),
g ∘ extract ⋆3 f = g ∘ f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : B -> G2 C) (f : E * A -> B),
g ∘ extract ⋆3 f = g ∘ f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> G2 C f: E * A -> B
g ∘ extract ⋆3 f = g ∘ f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> G2 C f: E * A -> B
map (g ∘ extract) ∘ σ ∘ cobind f = g ∘ f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> G2 C f: E * A -> B
map (g ∘ extract) ∘ (fun '(a, t) => map (pair a) t)
∘ cobind f = g ∘ f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> G2 C f: E * A -> B e: E a: A
(map (g ∘ extract) ∘ (fun '(a, t) => map (pair a) t)
∘ cobind f) (e, a) = (g ∘ f) (e, a)
reflexivity.Qed.
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : E * B -> C) (f : A -> G1 B),
g ⋆3 f ∘ extract =
(fun '(e, a) => map (g ∘ pair e) (f a))
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : E * B -> C) (f : A -> G1 B),
g ⋆3 f ∘ extract =
(fun '(e, a) => map (g ∘ pair e) (f a))
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> C f: A -> G1 B
g ⋆3 f ∘ extract =
(fun '(e, a) => map (g ∘ pair e) (f a))
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> C f: A -> G1 B
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> C f: A -> G1 B e: E a: A
(map g ∘ σ ∘ cobind (f ∘ extract)) (e, a) =
map (g ∘ pair e) (f a)
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> C f: A -> G1 B e: E a: A
map g (map (pair e) (f a)) = map (g ○ pair e) (f a)
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> C f: A -> G1 B e: E a: A
(map g ∘ map (pair e)) (f a) = map (g ○ pair e) (f a)
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> C f: A -> G1 B e: E a: A
map (g ∘ pair e) (f a) = map (g ○ pair e) (f a)
reflexivity.Qed.
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : B -> C) (f : E * A -> B),
g ∘ extract ⋆3 f = g ∘ f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : B -> C) (f : E * A -> B),
g ∘ extract ⋆3 f = g ∘ f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> C f: E * A -> B
g ∘ extract ⋆3 f = g ∘ f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> C f: E * A -> B
map (g ∘ extract) ∘ σ ∘ cobind f = g ∘ f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> C f: E * A -> B
g ∘ extract ∘ (fun '(a, t) => (a, t)) ∘ cobind f =
g ∘ f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> C f: E * A -> B e: E a: A
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : E * B -> C) (f : A -> B),
g ⋆3 f ∘ extract = g ∘ map f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : E * B -> C) (f : A -> B),
g ⋆3 f ∘ extract = g ∘ map f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> C f: A -> B
g ⋆3 f ∘ extract = g ∘ map f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> C f: A -> B
map g ∘ σ ∘ cobind (f ∘ extract) = g ∘ map f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> C f: A -> B e: E a: A
(map g ∘ σ ∘ cobind (f ∘ extract)) (e, a) =
(g ∘ map f) (e, a)
reflexivity.Qed.
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : B -> G2 C) (f : A -> B),
g ∘ extract ⋆3 f ∘ extract = g ∘ f ∘ extract
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : B -> G2 C) (f : A -> B),
g ∘ extract ⋆3 f ∘ extract = g ∘ f ∘ extract
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> G2 C f: A -> B
g ∘ extract ⋆3 f ∘ extract = g ∘ f ∘ extract
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> G2 C f: A -> B
map (g ∘ extract) ∘ σ ∘ cobind (f ∘ extract) =
g ∘ f ∘ extract
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> G2 C f: A -> B
g ∘ extract ∘ (fun '(a, t) => (a, t))
∘ cobind (f ∘ extract) = g ∘ f ∘ extract
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> G2 C f: A -> B e: E a: A
(g ∘ extract ∘ (fun '(a, t) => (a, t))
∘ cobind (f ∘ extract)) (e, a) =
(g ∘ f ∘ extract) (e, a)
reflexivity.Qed.
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : B -> C) (f : E * A -> B),
g ∘ extract ⋆3 f = g ∘ f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : B -> C) (f : E * A -> B),
g ∘ extract ⋆3 f = g ∘ f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> C f: E * A -> B
g ∘ extract ⋆3 f = g ∘ f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> C f: E * A -> B
map (g ∘ extract) ∘ σ ∘ cobind f = g ∘ f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> C f: E * A -> B
g ∘ extract ∘ (fun '(a, t) => (a, t)) ∘ cobind f =
g ∘ f
E: Type T: Type -> Type Map_inst: Map T Mapd_inst: Mapd E T Traverse_inst: Traverse T Mapdt_inst: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> C f: E * A -> B e: E a: A
reflexivity.Qed.Enddecorated_traversable_functor_derived_kleisli_laws.(** ** Derived Composition Laws *)(**********************************************************************)Sectioncomposition.Context
{E: Type} {T: Type -> Type}
`{Mapdt_ET: Mapdt E T}
`{Mapd_ET: Mapd E T}
`{Traverse_T: Traverse T}
`{Map_T: Map T}
`{! Compat_Map_Mapdt E T}
`{! Compat_Mapd_Mapdt E T}
`{! Compat_Traverse_Mapdt E T}
`{! DecoratedTraversableFunctor E T}.Context
`{Applicative G1}
`{Applicative G2}
{A B C: Type}.(** *** <<mapdt>> on the right *)(********************************************************************)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : B -> G2 C) (f : E * A -> G1 B),
map (traverse g) ∘ mapdt f = mapdt (map g ∘ f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : B -> G2 C) (f : E * A -> G1 B),
map (traverse g) ∘ mapdt f = mapdt (map g ∘ f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> G2 C f: E * A -> G1 B
map (traverse g) ∘ mapdt f = mapdt (map g ∘ f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> G2 C f: E * A -> G1 B
map (mapdt (g ∘ extract)) ∘ mapdt f =
mapdt (map g ∘ f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> G2 C f: E * A -> G1 B
mapdt (g ∘ extract ⋆3 f) = mapdt (map g ∘ f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> G2 C f: E * A -> G1 B
mapdt (map g ∘ f) = mapdt (map g ∘ f)
reflexivity.Qed.
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : E * B -> C) (f : E * A -> G1 B),
map (mapd g) ∘ mapdt f = mapdt (map g ∘ σ ∘ cobind f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : E * B -> C) (f : E * A -> G1 B),
map (mapd g) ∘ mapdt f = mapdt (map g ∘ σ ∘ cobind f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> C f: E * A -> G1 B
map (mapd g) ∘ mapdt f = mapdt (map g ∘ σ ∘ cobind f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> C f: E * A -> G1 B
map (mapdt g) ∘ mapdt f = mapdt (map g ∘ σ ∘ cobind f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> C f: E * A -> G1 B
mapdt (g ⋆3 f) = mapdt (map g ∘ σ ∘ cobind f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> C f: E * A -> G1 B
mapdt (g ⋆3 f) = mapdt (map g ∘ σ ∘ cobind f)
reflexivity.Qed.
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : B -> C) (f : E * A -> G1 B),
map (map g) ∘ mapdt f = mapdt (map g ∘ f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : B -> C) (f : E * A -> G1 B),
map (map g) ∘ mapdt f = mapdt (map g ∘ f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> C f: E * A -> G1 B
map (map g) ∘ mapdt f = mapdt (map g ∘ f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> C f: E * A -> G1 B
map (mapdt (g ∘ extract)) ∘ mapdt f =
mapdt (map g ∘ f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> C f: E * A -> G1 B
mapdt (g ∘ extract ⋆3 f) = mapdt (map g ∘ f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> C f: E * A -> G1 B
mapdt (g ∘ extract ⋆3 f) = mapdt (map g ∘ f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> C f: E * A -> G1 B
mapdt (map g ∘ f) = mapdt (map g ∘ f)
reflexivity.Qed.(** *** <<mapdt>> on the left *)(********************************************************************)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : E * B -> G2 C) (f : A -> G1 B),
map (mapdt g) ∘ traverse f = mapdt (map g ∘ σ ∘ map f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : E * B -> G2 C) (f : A -> G1 B),
map (mapdt g) ∘ traverse f = mapdt (map g ∘ σ ∘ map f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> G2 C f: A -> G1 B
map (mapdt g) ∘ traverse f = mapdt (map g ∘ σ ∘ map f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> G2 C f: A -> G1 B
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> G2 C f: A -> G1 B
mapdt (g ⋆3 f ∘ extract) = mapdt (map g ∘ σ ∘ map f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> G2 C f: A -> G1 B
mapdt (map g ∘ σ ∘ map f) = mapdt (map g ∘ σ ∘ map f)
reflexivity.Qed.
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : E * B -> G2 C) (f : E * A -> B),
mapdt g ∘ mapd f = mapdt (g ⋆1 f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : E * B -> G2 C) (f : E * A -> B),
mapdt g ∘ mapd f = mapdt (g ⋆1 f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> G2 C f: E * A -> B
mapdt g ∘ mapd f = mapdt (g ⋆1 f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> G2 C f: E * A -> B
mapdt g ∘ mapdt f = mapdt (g ⋆1 f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> G2 C f: E * A -> B
map (mapdt g) ∘ mapdt f = mapdt (g ⋆1 f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> G2 C f: E * A -> B
mapdt (g ⋆3 f) = mapdt (g ⋆1 f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> G2 C f: E * A -> B
mapdt (g ⋆3 f) = mapdt (g ⋆1 f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> G2 C f: E * A -> B
mapdt (g ⋆1 f) = mapdt (g ⋆1 f)
reflexivity.Qed.
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : E * B -> G2 C) (f : A -> B),
mapdt g ∘ map f = mapdt (g ∘ map f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : E * B -> G2 C) (f : A -> B),
mapdt g ∘ map f = mapdt (g ∘ map f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> G2 C f: A -> B
mapdt g ∘ map f = mapdt (g ∘ map f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> G2 C f: A -> B
mapdt g ∘ mapdt (f ∘ extract) = mapdt (g ∘ map f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> G2 C f: A -> B
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> G2 C f: A -> B
mapdt (g ⋆3 f ∘ extract) = mapdt (g ∘ map f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> G2 C f: A -> B
mapdt (g ⋆3 f ∘ extract) = mapdt (g ∘ map f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> G2 C f: A -> B
mapdt (g ∘ map f) = mapdt (g ∘ map f)
reflexivity.Qed.(** *** Other cases *)(********************************************************************)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : B -> C) (f : E * A -> B),
map g ∘ mapd f = mapd (g ∘ f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : B -> C) (f : E * A -> B),
map g ∘ mapd f = mapd (g ∘ f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> C f: E * A -> B
map g ∘ mapd f = mapd (g ∘ f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> C f: E * A -> B
mapdt (g ∘ extract) ∘ mapd f = mapd (g ∘ f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> C f: E * A -> B
mapdt (g ∘ extract) ∘ mapdt f = mapdt (g ∘ f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> C f: E * A -> B
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> C f: E * A -> B
mapdt (g ∘ extract ⋆3 f) = mapdt (g ∘ f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> C f: E * A -> B
mapdt (g ∘ extract ⋆3 f) = mapdt (g ∘ f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> C f: E * A -> B
mapdt (g ∘ f) = mapdt (g ∘ f)
reflexivity.Qed.
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : E * B -> C) (f : A -> B),
mapd g ∘ map f = mapd (g ∘ map f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : E * B -> C) (f : A -> B),
mapd g ∘ map f = mapd (g ∘ map f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> C f: A -> B
mapd g ∘ map f = mapd (g ∘ map f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> C f: A -> B
mapdt g ∘ map f = mapdt (g ∘ map f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> C f: A -> B
mapdt g ∘ mapdt (f ∘ extract) = mapdt (g ∘ map f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> C f: A -> B
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> C f: A -> B
mapdt (g ⋆3 f ∘ extract) = mapdt (g ∘ map f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> C f: A -> B
mapdt (g ⋆3 f ∘ extract) = mapdt (g ∘ map f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> C f: A -> B
mapdt (g ⋆1 f ∘ extract) = mapdt (g ∘ map f)
reflexivity.Qed.
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : E * B -> C) (f : E * A -> B),
mapd g ∘ mapd f = mapd (g ⋆1 f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : E * B -> C) (f : E * A -> B),
mapd g ∘ mapd f = mapd (g ⋆1 f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> C f: E * A -> B
mapd g ∘ mapd f = mapd (g ⋆1 f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> C f: E * A -> B
mapdt g ∘ mapdt f = mapd (g ⋆1 f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> C f: E * A -> B
map (mapdt g) ∘ mapdt f = mapd (g ⋆1 f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> C f: E * A -> B
mapdt (g ⋆3 f) = mapd (g ⋆1 f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> C f: E * A -> B
mapdt (g ⋆3 f) = mapd (g ⋆1 f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> C f: E * A -> B
mapdt (g ⋆1 f) = mapd (g ⋆1 f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: E * B -> C f: E * A -> B
mapdt (g ⋆1 f) = mapdt (g ⋆1 f)
reflexivity.Qed.
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : B -> G2 C) (f : A -> G1 B),
map (traverse g) ∘ traverse f = traverse (g ⋆2 f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : B -> G2 C) (f : A -> G1 B),
map (traverse g) ∘ traverse f = traverse (g ⋆2 f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> G2 C f: A -> G1 B
map (traverse g) ∘ traverse f = traverse (g ⋆2 f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> G2 C f: A -> G1 B
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> G2 C f: A -> G1 B
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> G2 C f: A -> G1 B
mapdt (map g ∘ f ∘ extract) =
mapdt ((g ⋆2 f) ∘ extract)
reflexivity.Qed.
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (ABC : Type) (f : A -> B) (g : B -> C),
map g ∘ map f = map (g ∘ f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (ABC : Type) (f : A -> B) (g : B -> C),
map g ∘ map f = map (g ∘ f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C, A0, B0, C0: Type f: A0 -> B0 g: B0 -> C0
map g ∘ map f = map (g ∘ f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C, A0, B0, C0: Type f: A0 -> B0 g: B0 -> C0
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C, A0, B0, C0: Type f: A0 -> B0 g: B0 -> C0
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C, A0, B0, C0: Type f: A0 -> B0 g: B0 -> C0
mapdt (g ∘ extract ⋆3 f ∘ extract) =
mapdt (g ∘ f ∘ extract)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C, A0, B0, C0: Type f: A0 -> B0 g: B0 -> C0
mapdt (g ∘ extract ⋆3 f ∘ extract) =
mapdt (g ∘ f ∘ extract)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C, A0, B0, C0: Type f: A0 -> B0 g: B0 -> C0
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forallA : Type, traverse id = id
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forallA : Type, traverse id = id
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C, A0: Type
traverse id = id
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C, A0: Type
mapdt (id ∘ extract) = id
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C, A0: Type
mapdt extract = id
nowrewrite kdtf_mapdt1.Qed.
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forallA : Type, mapd extract = id
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forallA : Type, mapd extract = id
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C, A0: Type
mapd extract = id
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C, A0: Type
mapdt extract = id
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C, A0: Type
id = id
reflexivity.Qed.
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forallA : Type, map id = id
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forallA : Type, map id = id
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C, A0: Type
map id = id
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C, A0: Type
mapdt (id ∘ extract) = id
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C, A0: Type
mapdt extract = id
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C, A0: Type
id = id
reflexivity.Qed.(** *** Naturality in applicative morphisms *)(********************************************************************)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (H1 : Map G1) (H2 : Mult G1) (H3 : Pure G1)
(H4 : Map G2) (H5 : Mult G2) (H6 : Pure G2)
(ϕ : forallA : Type, G1 A -> G2 A),
ApplicativeMorphism G1 G2 ϕ ->
forall (AB : Type) (f : A -> G1 B),
ϕ (T B) ∘ traverse f = traverse (ϕ B ∘ f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (H1 : Map G1) (H2 : Mult G1) (H3 : Pure G1)
(H4 : Map G2) (H5 : Mult G2) (H6 : Pure G2)
(ϕ : forallA : Type, G1 A -> G2 A),
ApplicativeMorphism G1 G2 ϕ ->
forall (AB : Type) (f : A -> G1 B),
ϕ (T B) ∘ traverse f = traverse (ϕ B ∘ f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type H1: Map G1 H2: Mult G1 H3: Pure G1 H4: Map G2 H5: Mult G2 H6: Pure G2 ϕ: forallA : Type, G1 A -> G2 A H7: ApplicativeMorphism G1 G2 ϕ A0, B0: Type f: A0 -> G1 B0
ϕ (T B0) ∘ traverse f = traverse (ϕ B0 ∘ f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type H1: Map G1 H2: Mult G1 H3: Pure G1 H4: Map G2 H5: Mult G2 H6: Pure G2 ϕ: forallA : Type, G1 A -> G2 A H7: ApplicativeMorphism G1 G2 ϕ A0, B0: Type f: A0 -> G1 B0 app1: Applicative G1 app2: Applicative G2
ϕ (T B0) ∘ traverse f = traverse (ϕ B0 ∘ f)
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type H1: Map G1 H2: Mult G1 H3: Pure G1 H4: Map G2 H5: Mult G2 H6: Pure G2 ϕ: forallA : Type, G1 A -> G2 A H7: ApplicativeMorphism G1 G2 ϕ A0, B0: Type f: A0 -> G1 B0 app1: Applicative G1 app2: Applicative G2
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type H1: Map G1 H2: Mult G1 H3: Pure G1 H4: Map G2 H5: Mult G2 H6: Pure G2 ϕ: forallA : Type, G1 A -> G2 A H7: ApplicativeMorphism G1 G2 ϕ A0, B0: Type f: A0 -> G1 B0 app1: Applicative G1 app2: Applicative G2
E: Type T: Type -> Type Mapdt_ET: Mapdt E T Mapd_ET: Mapd E T Traverse_T: Traverse T Map_T: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type H1: Map G1 H2: Mult G1 H3: Pure G1 H4: Map G2 H5: Mult G2 H6: Pure G2 ϕ: forallA : Type, G1 A -> G2 A H7: ApplicativeMorphism G1 G2 ϕ A0, B0: Type f: A0 -> G1 B0 app1: Applicative G1 app2: Applicative G2
reflexivity.Qed.Endcomposition.(** ** Derived Typeclass Instances *)(**********************************************************************)ModuleDerivedInstances.Sectioninstances.Context
{E: Type} {T: Type -> Type}
`{Map_T: Map T}
`{Mapd_ET: Mapd E T}
`{Traverse_T: Traverse T}
`{Mapdt_ET: Mapdt E T}
`{! Compat_Map_Mapdt E T}
`{! Compat_Mapd_Mapdt E T}
`{! Compat_Traverse_Mapdt E T}
`{! DecoratedTraversableFunctor E T}.
E: Type T: Type -> Type Map_T: Map T Mapd_ET: Mapd E T Traverse_T: Traverse T Mapdt_ET: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
DecoratedFunctor E T
E: Type T: Type -> Type Map_T: Map T Mapd_ET: Mapd E T Traverse_T: Traverse T Mapdt_ET: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
DecoratedFunctor E T
E: Type T: Type -> Type Map_T: Map T Mapd_ET: Mapd E T Traverse_T: Traverse T Mapdt_ET: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type
mapd extract = id
E: Type T: Type -> Type Map_T: Map T Mapd_ET: Mapd E T Traverse_T: Traverse T Mapdt_ET: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B, C: Type g: E * B -> C f: E * A -> B
mapd g ∘ mapd f = mapd (g ⋆1 f)
E: Type T: Type -> Type Map_T: Map T Mapd_ET: Mapd E T Traverse_T: Traverse T Mapdt_ET: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type
mapd extract = id
apply mapd_id.
E: Type T: Type -> Type Map_T: Map T Mapd_ET: Mapd E T Traverse_T: Traverse T Mapdt_ET: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B, C: Type g: E * B -> C f: E * A -> B
mapd g ∘ mapd f = mapd (g ⋆1 f)
apply mapd_mapd.Qed.
E: Type T: Type -> Type Map_T: Map T Mapd_ET: Mapd E T Traverse_T: Traverse T Mapdt_ET: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
TraversableFunctor T
E: Type T: Type -> Type Map_T: Map T Mapd_ET: Mapd E T Traverse_T: Traverse T Mapdt_ET: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
TraversableFunctor T
E: Type T: Type -> Type Map_T: Map T Mapd_ET: Mapd E T Traverse_T: Traverse T Mapdt_ET: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type
traverse id = id
E: Type T: Type -> Type Map_T: Map T Mapd_ET: Mapd E T Traverse_T: Traverse T Mapdt_ET: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> G2 C f: A -> G1 B
map (traverse g) ∘ traverse f = traverse (g ⋆2 f)
E: Type T: Type -> Type Map_T: Map T Mapd_ET: Mapd E T Traverse_T: Traverse T Mapdt_ET: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1, G2: Type -> Type H: Map G1 H0: Mult G1 H1: Pure G1 H2: Map G2 H3: Mult G2 H4: Pure G2 ϕ: forallA : Type, G1 A -> G2 A morphism: ApplicativeMorphism G1 G2 ϕ A, B: Type f: A -> G1 B
ϕ (T B) ∘ traverse f = traverse (ϕ B ∘ f)
E: Type T: Type -> Type Map_T: Map T Mapd_ET: Mapd E T Traverse_T: Traverse T Mapdt_ET: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type
traverse id = id
apply traverse_id.
E: Type T: Type -> Type Map_T: Map T Mapd_ET: Mapd E T Traverse_T: Traverse T Mapdt_ET: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type g: B -> G2 C f: A -> G1 B
map (traverse g) ∘ traverse f = traverse (g ⋆2 f)
apply traverse_traverse.
E: Type T: Type -> Type Map_T: Map T Mapd_ET: Mapd E T Traverse_T: Traverse T Mapdt_ET: Mapdt E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T G1, G2: Type -> Type H: Map G1 H0: Mult G1 H1: Pure G1 H2: Map G2 H3: Mult G2 H4: Pure G2 ϕ: forallA : Type, G1 A -> G2 A morphism: ApplicativeMorphism G1 G2 ϕ A, B: Type f: A -> G1 B