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 Variables E T ϕ G A B C M.

(** * Decorated Traversable Functor *)
(**********************************************************************)

(** ** Operation <<mapdt>> *)
(**********************************************************************)
Class Mapdt (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 *)
(**********************************************************************)
Definition kc3
  {E A B C: Type}
  {G1 G2: 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 level 60): tealeaves_scope.

(** ** Typeclass *)
(**********************************************************************)
Class DecoratedTraversableFunctor
  (E: Type) (T: Type -> Type) `{Mapdt E T} :=
  { kdtf_mapdt1: forall (A: Type),
      mapdt (G := fun A => 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 *)
(**********************************************************************)
Module DerivedOperations.
  Section operations.

    Context
      `{Mapdt_ET: Mapdt E T}.

    #[export] Instance Mapd_Mapdt: Mapd E T :=
      fun A B f => mapdt (G := fun A => A) f.
    #[export] Instance Traverse_Mapdt: Traverse T :=
      fun G _ _ _ A B f => mapdt (f ∘ extract).
    #[export] Instance Map_Mapdt: Map T :=
      fun A B f => mapdt (G := fun A => A) (f ∘ extract).

  End operations.
End DerivedOperations.

Section compat.

  Context
    (E: Type)
    (T: Type -> Type)
    `{Map_T: Map T}
    `{Mapd_ET: Mapd E T}
    `{Traverse_T: Traverse T}
    `{Mapdt_ET: Mapdt E T}.

  Class Compat_Map_Mapdt: Prop :=
    compat_map_mapdt:
      @Map_T = @DerivedOperations.Map_Mapdt E T Mapdt_ET.

  Class Compat_Mapd_Mapdt: Prop :=
    compat_mapd_mapdt:
      @Mapd_ET = @DerivedOperations.Mapd_Mapdt E T Mapdt_ET.

  Class Compat_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.
 *)

End compat.

Section rewriting.

  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 (A B : 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 (A B : 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 (A B : Type) (f : A -> G B), DerivedOperations.Traverse_Mapdt G Map_G Pure_G Mult_G A B f = mapdt (f ∘ extract)
reflexivity. Qed. Definition mapd_to_mapdt: forall `(f: E * A -> B), mapd f = mapdt (T := T) (G := fun A => A) f := ltac:(now rewrite (compat_mapd_mapdt E T)). Definition map_to_mapdt: forall `(f: A -> B), map f = mapdt (T := T) (G := fun A => A) (f ∘ extract) := ltac:(now rewrite (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 (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

forall (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

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 (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

forall (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

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. End rewriting. #[export] Instance Compat_Map_Mapdt_Self `{Mapdt_ET: Mapdt E T}: Compat_Map_Mapdt E T (Map_T := DerivedOperations.Map_Mapdt) := ltac:(reflexivity). #[export] Instance Compat_Mapd_Mapdt_Self `{Mapdt_inst: Mapdt E T}: Compat_Mapd_Mapdt E T (Mapd_ET := DerivedOperations.Mapd_Mapdt) := ltac:(reflexivity). #[export] Instance Compat_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 *) (**********************************************************************) Section mapdt_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} {A B: 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

forall f : E * A -> G B, mapdt E T ((fun A : Type => A) ∘ G) (Map_compose (fun A : Type => A) G) (Pure_compose (fun A : Type => A) G) (Mult_compose (fun A : 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

forall f : E * A -> G B, mapdt E T ((fun A : Type => A) ∘ G) (Map_compose (fun A : Type => A) G) (Pure_compose (fun A : Type => A) G) (Mult_compose (fun A : 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 ((fun A : Type => A) ∘ G) (Map_compose (fun A : Type => A) G) (Pure_compose (fun A : Type => A) G) (Mult_compose (fun A : 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 (fun a : Type => G a) (fun (A B : Type) (f : A -> B) => mapG A B f) (fun (A : Type) (a : A) => pureG A a) (fun (A B : 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 (A B : 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
now destruct 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

forall f : E * A -> G B, mapdt E T (G ∘ (fun A : Type => A)) (Map_compose G (fun A : Type => A)) (Pure_compose G (fun A : Type => A)) (Mult_compose G (fun A : 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

forall f : E * A -> G B, mapdt E T (G ∘ (fun A : Type => A)) (Map_compose G (fun A : Type => A)) (Pure_compose G (fun A : Type => A)) (Mult_compose G (fun A : 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 ∘ (fun A : Type => A)) (Map_compose G (fun A : Type => A)) (Pure_compose G (fun A : Type => A)) (Mult_compose G (fun A : 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 (fun a : Type => G a) (fun (A B : Type) (f : A -> B) => mapG A B f) (fun (A : Type) (a : A) => pureG A a) (fun (A B : Type) (p : G A * G B) => mapG (A * B) (A * B) (fun p0 : 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 (A B : Type) (p : G A * G B) => mapG (A * B) (A * B) (fun p0 : 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') (fun p : 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') (fun p : 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. End mapdt_identity_applicative. (** ** Derived Kleisli Composition Laws *) (**********************************************************************) Section decorated_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 (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

forall (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

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

(fun '(e, a) => map (g ∘ pair e) (f (e, a))) = (fun '(w, a) => map (g ∘ pair w) (f (w, a)))
reflexivity. Qed. Import Monoid.
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 (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

forall (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

(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

g ∘ (f ∘ extract) = g ∘ f ∘ extract
reflexivity. Qed. (** *** Heterogeneous cases *) (********************************************************************) (** **** [3x] *) (********************************************************************)
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)
reflexivity. Qed. (** **** [x3] *) (********************************************************************)
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

map (g ○ extract) (map (pair w) (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

(map (g ○ extract) ∘ map (pair w)) (f (w, a)) = map g (f (w, a))
now rewrite fun_map_map. 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 -> 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

map (g ○ extract) (map (pair w) (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

(map (g ○ extract) ∘ map (pair w)) (f (w, a)) = map g (f (w, a))
now rewrite fun_map_map. Qed. (** **** [xy] *) (********************************************************************)
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

map g ∘ σ ∘ cobind (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: 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

(g ∘ extract ∘ (fun '(a, t) => (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 -> 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

(g ∘ extract ∘ (fun '(a, t) => (a, t)) ∘ cobind f) (e, a) = (g ∘ f) (e, a)
reflexivity. Qed. End decorated_traversable_functor_derived_kleisli_laws. (** ** Derived Composition Laws *) (**********************************************************************) Section composition. 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

map (mapdt g) ∘ mapdt (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 (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

map (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

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

map (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

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

map (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

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

map (mapdt (g ∘ extract)) ∘ mapdt (f ∘ extract) = mapdt ((g ⋆2 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: Type
g: B -> G2 C
f: A -> G1 B

mapdt (g ∘ extract ⋆3 f ∘ extract) = mapdt ((g ⋆2 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: 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 (A B C : 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 (A B C : 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

mapdt (g ∘ extract) ∘ mapdt (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

map (mapdt (g ∘ extract)) ∘ mapdt (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

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 ∘ f ∘ extract) = mapdt (g ∘ f ∘ extract)
reflexivity. Qed. (** *** Identity laws *) (********************************************************************)
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 A : 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

forall A : 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
now rewrite 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

forall A : 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

forall A : 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

forall A : 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

forall A : 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) (ϕ : forall A : Type, G1 A -> G2 A), ApplicativeMorphism G1 G2 ϕ -> forall (A B : 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) (ϕ : forall A : Type, G1 A -> G2 A), ApplicativeMorphism G1 G2 ϕ -> forall (A B : 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
ϕ: forall A : 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
ϕ: forall A : 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
ϕ: forall A : Type, G1 A -> G2 A
H7: ApplicativeMorphism G1 G2 ϕ
A0, B0: Type
f: A0 -> G1 B0
app1: Applicative G1
app2: Applicative G2

ϕ (T B0) ∘ mapdt (f ∘ extract) = 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
ϕ: forall A : Type, G1 A -> G2 A
H7: ApplicativeMorphism G1 G2 ϕ
A0, B0: Type
f: A0 -> G1 B0
app1: Applicative G1
app2: Applicative G2

ϕ (T B0) ∘ mapdt (f ∘ extract) = mapdt (ϕ B0 ∘ 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: Type
H1: Map G1
H2: Mult G1
H3: Pure G1
H4: Map G2
H5: Mult G2
H6: Pure G2
ϕ: forall A : Type, G1 A -> G2 A
H7: ApplicativeMorphism G1 G2 ϕ
A0, B0: Type
f: A0 -> G1 B0
app1: Applicative G1
app2: Applicative G2

mapdt (ϕ B0 ∘ (f ∘ extract)) = mapdt (ϕ B0 ∘ f ∘ extract)
reflexivity. Qed. End composition. (** ** Derived Typeclass Instances *) (**********************************************************************) Module DerivedInstances. Section instances. 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
ϕ: forall A : 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
ϕ: forall A : Type, G1 A -> G2 A
morphism: ApplicativeMorphism G1 G2 ϕ
A, B: Type
f: A -> G1 B

ϕ (T B) ∘ traverse f = traverse (ϕ B ∘ f)
apply traverse_morphism. Qed. #[export] Instance Functor_DecoratedTraversableFunctor: Functor T := TraversableFunctor.DerivedInstances.Functor_TraversableFunctor. End instances. End DerivedInstances. (** * Notations *) (**********************************************************************) Module Notations. Infix "⋆3" := kc3 (at level 60): tealeaves_scope. End Notations.