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.Kleisli.DecoratedFunctor
  Classes.Kleisli.DecoratedMonad
  Classes.Kleisli.TraversableFunctor
  Classes.Kleisli.TraversableMonad
  Classes.Kleisli.DecoratedTraversableFunctor
  Functors.Early.Writer.

Import Monoid.Notations.
Import Product.Notations.
Import Monad.Notations.
Import Comonad.Notations.
Import DecoratedMonad.Notations.
Import TraversableFunctor.Notations.
Import TraversableMonad.Notations.
Import DecoratedTraversableFunctor.Notations.

#[local] Generalizable Variables ϕ U T W G A B C D F M.

(** * Decorated Traversable Monads *)
(**********************************************************************)

(** ** Operation <<binddt>>  *)
(**********************************************************************)
Class Binddt
  (W: Type)
  (T: Type -> Type)
  (U: Type -> Type)
  := binddt:
    forall (G: Type -> Type)
      `{Map_G: Map G} `{Pure_G: Pure G} `{Mult_G: Mult G}
      (A B: Type),
      (W * A -> G (T B)) -> U A -> G (U B).

#[global] Arguments binddt {W}%type_scope {T} {U}%function_scope {Binddt}
  {G}%function_scope {Map_G Pure_G Mult_G}
  {A B}%type_scope _%function_scope _.

(** ** Kleisli composition *)
(**********************************************************************)
Definition kc7
  {W: Type}
  {T: Type -> Type}
  `{Return_T: Return T}
  `{Binddt_WTT: Binddt W T T}
  `{op: Monoid_op W} `{unit: Monoid_unit W}
  {A B C: Type}
  (G1 G2: Type -> Type)
  `{Map G1} `{Pure G1} `{Mult G1}
  `{Map G2} `{Pure G2} `{Mult G2}:
  (W * B -> G2 (T C)) ->
  (W * A -> G1 (T B)) ->
  (W * A -> G1 (G2 (T C))) :=
  fun g f '(w, a) =>
    map (F := G1) (A := T B) (B := G2 (T C))
      (binddt (g ⦿ w)) (f (w, a)).

#[local] Infix "⋆7" := (kc7 _ _) (at level 60): tealeaves_scope.

(** ** Typeclass *)
(**********************************************************************)
Class DecoratedTraversableRightPreModule
  (W: Type)
  (T U: Type -> Type)
  `{op: Monoid_op W}
  `{unit: Monoid_unit W}
  `{Return_T: Return T}
  `{Bindd_T: Binddt W T T}
  `{Bindd_U: Binddt W T U} :=
  { kdtm_binddt1: forall (A: Type),
      binddt (G := fun A => A)
        (ret (T := T) ∘ extract (W := (W ×))) = @id (U A);
    kdtm_binddt2:
    forall `{Applicative G1} `{Applicative G2}
      `(g: W * B -> G2 (T C))
      `(f: W * A -> G1 (T B)),
      map (F := G1) (binddt g) ∘ binddt f =
        binddt (U := U) (G := G1 ∘ G2) (g ⋆7 f);
    kdtm_morph:
    forall (G1 G2: Type -> Type) `{morph: ApplicativeMorphism G1 G2 ϕ}
      `(f: W * A -> G1 (T B)),
      ϕ (U B) ∘ binddt f = binddt (ϕ (T B) ∘ f);
  }.

Class DecoratedTraversableMonad
  (W: Type)
  (T: Type -> Type)
  `{op: Monoid_op W}
  `{unit: Monoid_unit W}
  `{Return_inst: Return T}
  `{Bindd_T_inst: Binddt W T T} :=
  { kdtm_monoid :> Monoid W;
    kdtm_binddt0: forall `{Applicative G} `(f: W * A -> G (T B)),
      binddt f ∘ ret = f ∘ ret (T := (W ×));
    kdtm_premod :> DecoratedTraversableRightPreModule W T T;
  }.

Class DecoratedTraversableRightModule
  (W: Type)
  (T U: Type -> Type)
  `{op: Monoid_op W}
  `{unit: Monoid_unit W}
  `{Return_inst: Return T}
  `{Bindd_T_inst: Binddt W T T}
  `{Bindd_U_inst: Binddt W T U}
  :=
  { kdtmod_monad :> DecoratedTraversableMonad W T;
    kdtmod_premod :> DecoratedTraversableRightPreModule W T U;
  }.

(** ** Homomorphisms *)
(**********************************************************************)
Class DecoratedTraversableMonadHom
  (T U: Type -> Type)
  `{Return T} `{Binddt W T T}
  `{Return U} `{Binddt W U U}
  (ϕ: forall (A: Type), T A -> U A) :=
  { kmon_hom_ret: forall (A: Type),
      ϕ A ∘ @ret T _ A = @ret U _ A;
    kmon_hom_bind:
    forall `{Applicative G} `(f: W * A -> G (T B)),
      map (F := G) (ϕ B) ∘ @binddt W T T _ G _ _ _ A B f =
        @binddt W U U _ G _ _ _ A B (map (F := G) (ϕ B) ∘ f) ∘ ϕ A;
  }.

(** ** Kleisi Category Laws *)
(**********************************************************************)
Section decorated_monad_kleisli_composition.

  (*
    #[local] Set Typeclasses Iterative Deepening.
   *)

  Context
    `{Return_T: Return T}
    `{Binddt_WTT: Binddt W T T}
    `{op: Monoid_op W}
    `{unit: Monoid_unit W}
    `{! Monoid W}.

  (** *** Interaction with [incr], [preincr] *)
  (********************************************************************)
  Section incr.

    Context
      `{Applicative G1}
      `{Applicative G2}
      {A B C: Type}.

    
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 : W * B -> G2 (T C)) (f : W * A -> G1 (T B)) (w : W), g ∘ incr w ⋆7 f ∘ incr w = (g ⋆7 f) ∘ incr w
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 : W * B -> G2 (T C)) (f : W * A -> G1 (T B)) (w : W), g ∘ incr w ⋆7 f ∘ incr w = (g ⋆7 f) ∘ incr w
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> G2 (T C)
f: W * A -> G1 (T B)
w: W

g ∘ incr w ⋆7 f ∘ incr w = (g ⋆7 f) ∘ incr w
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> G2 (T C)
f: W * A -> G1 (T B)
w: W

(fun '(w0, a) => map (binddt ((g ∘ incr w) ⦿ w0)) ((f ∘ incr w) (w0, a))) = (fun '(w, a) => map (binddt (g ⦿ w)) (f (w, a))) ∘ incr w
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> G2 (T C)
f: W * A -> G1 (T B)
w, w': W
a: A

map (binddt ((g ∘ incr w) ⦿ w')) ((f ∘ incr w) (w', a)) = ((fun '(w, a) => map (binddt (g ⦿ w)) (f (w, a))) ∘ incr w) (w', a)
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> G2 (T C)
f: W * A -> G1 (T B)
w, w': W
a: A

map (binddt (g ∘ incr w ∘ incr w')) ((f ∘ incr w) (w', a)) = ((fun '(w, a) => map (binddt (g ∘ incr w)) (f (w, a))) ∘ incr w) (w', a)
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> G2 (T C)
f: W * A -> G1 (T B)
w, w': W
a: A

map (binddt (g ∘ (incr w ∘ incr w'))) ((f ∘ incr w) (w', a)) = ((fun '(w, a) => map (binddt (g ∘ incr w)) (f (w, a))) ∘ incr w) (w', a)
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> G2 (T C)
f: W * A -> G1 (T B)
w, w': W
a: A

map (binddt (g ∘ incr (w ● w'))) ((f ∘ incr w) (w', a)) = ((fun '(w, a) => map (binddt (g ∘ incr w)) (f (w, a))) ∘ incr w) (w', a)
reflexivity. Qed.
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 : W * B -> G2 (T C)) (f : W * A -> G1 (T B)) (w : W), g ⦿ w ⋆7 f ⦿ w = (g ⋆7 f) ⦿ w
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 : W * B -> G2 (T C)) (f : W * A -> G1 (T B)) (w : W), g ⦿ w ⋆7 f ⦿ w = (g ⋆7 f) ⦿ w
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> G2 (T C)
f: W * A -> G1 (T B)
w: W

g ⦿ w ⋆7 f ⦿ w = (g ⋆7 f) ⦿ w
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> G2 (T C)
f: W * A -> G1 (T B)
w: W

g ∘ incr w ⋆7 f ∘ incr w = (g ⋆7 f) ∘ incr w
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> G2 (T C)
f: W * A -> G1 (T B)
w: W

(g ⋆7 f) ∘ incr w = (g ⋆7 f) ∘ incr w
reflexivity. Qed. End incr. Context `{! DecoratedTraversableMonad W T}. Context `{Applicative G} {A B C D: Type}. (** *** Left identity *) (********************************************************************)
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
DecoratedTraversableMonad0: DecoratedTraversableMonad W T
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B, C, D: Type

forall f : W * A -> G (T B), ret ∘ extract ⋆7 f = f
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
DecoratedTraversableMonad0: DecoratedTraversableMonad W T
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B, C, D: Type

forall f : W * A -> G (T B), ret ∘ extract ⋆7 f = f
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
DecoratedTraversableMonad0: DecoratedTraversableMonad W T
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B, C, D: Type
f: W * A -> G (T B)

ret ∘ extract ⋆7 f = f
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
DecoratedTraversableMonad0: DecoratedTraversableMonad W T
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B, C, D: Type
f: W * A -> G (T B)

(fun '(w, a) => map (binddt ((ret ∘ extract) ⦿ w)) (f (w, a))) = f
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
DecoratedTraversableMonad0: DecoratedTraversableMonad W T
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B, C, D: Type
f: W * A -> G (T B)
w: W
a: A

map (binddt ((ret ∘ extract) ⦿ w)) (f (w, a)) = f (w, a)
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
DecoratedTraversableMonad0: DecoratedTraversableMonad W T
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B, C, D: Type
f: W * A -> G (T B)
w: W
a: A

map (binddt (ret ∘ extract ⦿ w)) (f (w, a)) = f (w, a)
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
DecoratedTraversableMonad0: DecoratedTraversableMonad W T
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B, C, D: Type
f: W * A -> G (T B)
w: W
a: A

map (binddt (ret ∘ extract)) (f (w, a)) = f (w, a)
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
DecoratedTraversableMonad0: DecoratedTraversableMonad W T
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B, C, D: Type
f: W * A -> G (T B)
w: W
a: A

map id (f (w, a)) = f (w, a)
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
DecoratedTraversableMonad0: DecoratedTraversableMonad W T
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B, C, D: Type
f: W * A -> G (T B)
w: W
a: A

id (f (w, a)) = f (w, a)
reflexivity. Qed. (** *** Right identity *) (********************************************************************)
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
DecoratedTraversableMonad0: DecoratedTraversableMonad W T
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B, C, D: Type

forall g : W * A -> G (T B), g ⋆7 ret ∘ extract = g
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
DecoratedTraversableMonad0: DecoratedTraversableMonad W T
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B, C, D: Type

forall g : W * A -> G (T B), g ⋆7 ret ∘ extract = g
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
DecoratedTraversableMonad0: DecoratedTraversableMonad W T
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B, C, D: Type
g: W * A -> G (T B)

g ⋆7 ret ∘ extract = g
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
DecoratedTraversableMonad0: DecoratedTraversableMonad W T
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B, C, D: Type
g: W * A -> G (T B)

(fun '(w, a) => map (binddt (g ⦿ w)) ((ret ∘ extract) (w, a))) = g
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
DecoratedTraversableMonad0: DecoratedTraversableMonad W T
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B, C, D: Type
g: W * A -> G (T B)
w: W
a: A

map (binddt (g ⦿ w)) ((ret ∘ extract) (w, a)) = g (w, a)
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
DecoratedTraversableMonad0: DecoratedTraversableMonad W T
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B, C, D: Type
g: W * A -> G (T B)
w: W
a: A

binddt (g ⦿ w) ((ret ∘ extract) (w, a)) = g (w, a)
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
DecoratedTraversableMonad0: DecoratedTraversableMonad W T
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B, C, D: Type
g: W * A -> G (T B)
w: W
a: A

(binddt (g ⦿ w) ∘ ret) a = g (w, a)
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
DecoratedTraversableMonad0: DecoratedTraversableMonad W T
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B, C, D: Type
g: W * A -> G (T B)
w: W
a: A

(g ⦿ w ∘ ret) a = g (w, a)
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
DecoratedTraversableMonad0: DecoratedTraversableMonad W T
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B, C, D: Type
g: W * A -> G (T B)
w: W
a: A

g (w ● Ƶ, a) = g (w, a)
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
DecoratedTraversableMonad0: DecoratedTraversableMonad W T
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B, C, D: Type
g: W * A -> G (T B)
w: W
a: A

g (w, a) = g (w, a)
reflexivity. Qed. (** *** Associativity *) (********************************************************************)
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
DecoratedTraversableMonad0: DecoratedTraversableMonad W T
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B, C, D: Type
G3: Type -> Type
Map_G0: Map G3
Pure_G0: Pure G3
Mult_G0: Mult G3
H0: Applicative G3
G2: Type -> Type
Map_G1: Map G2
Pure_G1: Pure G2
Mult_G1: Mult G2
H1: Applicative G2
G1: Type -> Type
Map_G2: Map G1
Pure_G2: Pure G1
Mult_G2: Mult G1
H2: Applicative G1

forall (h : W * C -> G3 (T D)) (g : W * B -> G2 (T C)) (f : W * A -> G1 (T B)), h ⋆7 (g ⋆7 f) = (h ⋆7 g) ⋆7 f
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
DecoratedTraversableMonad0: DecoratedTraversableMonad W T
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B, C, D: Type
G3: Type -> Type
Map_G0: Map G3
Pure_G0: Pure G3
Mult_G0: Mult G3
H0: Applicative G3
G2: Type -> Type
Map_G1: Map G2
Pure_G1: Pure G2
Mult_G1: Mult G2
H1: Applicative G2
G1: Type -> Type
Map_G2: Map G1
Pure_G2: Pure G1
Mult_G2: Mult G1
H2: Applicative G1

forall (h : W * C -> G3 (T D)) (g : W * B -> G2 (T C)) (f : W * A -> G1 (T B)), h ⋆7 (g ⋆7 f) = (h ⋆7 g) ⋆7 f
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
DecoratedTraversableMonad0: DecoratedTraversableMonad W T
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B, C, D: Type
G3: Type -> Type
Map_G0: Map G3
Pure_G0: Pure G3
Mult_G0: Mult G3
H0: Applicative G3
G2: Type -> Type
Map_G1: Map G2
Pure_G1: Pure G2
Mult_G1: Mult G2
H1: Applicative G2
G1: Type -> Type
Map_G2: Map G1
Pure_G2: Pure G1
Mult_G2: Mult G1
H2: Applicative G1
h: W * C -> G3 (T D)
g: W * B -> G2 (T C)
f: W * A -> G1 (T B)

h ⋆7 (g ⋆7 f) = (h ⋆7 g) ⋆7 f
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
DecoratedTraversableMonad0: DecoratedTraversableMonad W T
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B, C, D: Type
G3: Type -> Type
Map_G0: Map G3
Pure_G0: Pure G3
Mult_G0: Mult G3
H0: Applicative G3
G2: Type -> Type
Map_G1: Map G2
Pure_G1: Pure G2
Mult_G1: Mult G2
H1: Applicative G2
G1: Type -> Type
Map_G2: Map G1
Pure_G2: Pure G1
Mult_G2: Mult G1
H2: Applicative G1
h: W * C -> G3 (T D)
g: W * B -> G2 (T C)
f: W * A -> G1 (T B)

(fun '(w, a) => map (binddt (h ⦿ w)) (map (binddt (g ⦿ w)) (f (w, a)))) = (h ⋆7 g) ⋆7 f
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
DecoratedTraversableMonad0: DecoratedTraversableMonad W T
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B, C, D: Type
G3: Type -> Type
Map_G0: Map G3
Pure_G0: Pure G3
Mult_G0: Mult G3
H0: Applicative G3
G2: Type -> Type
Map_G1: Map G2
Pure_G1: Pure G2
Mult_G1: Mult G2
H1: Applicative G2
G1: Type -> Type
Map_G2: Map G1
Pure_G2: Pure G1
Mult_G2: Mult G1
H2: Applicative G1
h: W * C -> G3 (T D)
g: W * B -> G2 (T C)
f: W * A -> G1 (T B)
w: W
a: A

map (binddt (h ⦿ w)) (map (binddt (g ⦿ w)) (f (w, a))) = ((h ⋆7 g) ⋆7 f) (w, a)
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
DecoratedTraversableMonad0: DecoratedTraversableMonad W T
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B, C, D: Type
G3: Type -> Type
Map_G0: Map G3
Pure_G0: Pure G3
Mult_G0: Mult G3
H0: Applicative G3
G2: Type -> Type
Map_G1: Map G2
Pure_G1: Pure G2
Mult_G1: Mult G2
H1: Applicative G2
G1: Type -> Type
Map_G2: Map G1
Pure_G2: Pure G1
Mult_G2: Mult G1
H2: Applicative G1
h: W * C -> G3 (T D)
g: W * B -> G2 (T C)
f: W * A -> G1 (T B)
w: W
a: A

map (map (binddt (h ⦿ w))) (map (binddt (g ⦿ w)) (f (w, a))) = ((h ⋆7 g) ⋆7 f) (w, a)
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
DecoratedTraversableMonad0: DecoratedTraversableMonad W T
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B, C, D: Type
G3: Type -> Type
Map_G0: Map G3
Pure_G0: Pure G3
Mult_G0: Mult G3
H0: Applicative G3
G2: Type -> Type
Map_G1: Map G2
Pure_G1: Pure G2
Mult_G1: Mult G2
H1: Applicative G2
G1: Type -> Type
Map_G2: Map G1
Pure_G2: Pure G1
Mult_G2: Mult G1
H2: Applicative G1
h: W * C -> G3 (T D)
g: W * B -> G2 (T C)
f: W * A -> G1 (T B)
w: W
a: A

(map (map (binddt (h ⦿ w))) ∘ map (binddt (g ⦿ w))) (f (w, a)) = ((h ⋆7 g) ⋆7 f) (w, a)
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
DecoratedTraversableMonad0: DecoratedTraversableMonad W T
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B, C, D: Type
G3: Type -> Type
Map_G0: Map G3
Pure_G0: Pure G3
Mult_G0: Mult G3
H0: Applicative G3
G2: Type -> Type
Map_G1: Map G2
Pure_G1: Pure G2
Mult_G1: Mult G2
H1: Applicative G2
G1: Type -> Type
Map_G2: Map G1
Pure_G2: Pure G1
Mult_G2: Mult G1
H2: Applicative G1
h: W * C -> G3 (T D)
g: W * B -> G2 (T C)
f: W * A -> G1 (T B)
w: W
a: A

map (map (binddt (h ⦿ w)) ∘ binddt (g ⦿ w)) (f (w, a)) = ((h ⋆7 g) ⋆7 f) (w, a)
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
DecoratedTraversableMonad0: DecoratedTraversableMonad W T
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B, C, D: Type
G3: Type -> Type
Map_G0: Map G3
Pure_G0: Pure G3
Mult_G0: Mult G3
H0: Applicative G3
G2: Type -> Type
Map_G1: Map G2
Pure_G1: Pure G2
Mult_G1: Mult G2
H1: Applicative G2
G1: Type -> Type
Map_G2: Map G1
Pure_G2: Pure G1
Mult_G2: Mult G1
H2: Applicative G1
h: W * C -> G3 (T D)
g: W * B -> G2 (T C)
f: W * A -> G1 (T B)
w: W
a: A

map (binddt (h ⦿ w ⋆7 g ⦿ w)) (f (w, a)) = ((h ⋆7 g) ⋆7 f) (w, a)
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
DecoratedTraversableMonad0: DecoratedTraversableMonad W T
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B, C, D: Type
G3: Type -> Type
Map_G0: Map G3
Pure_G0: Pure G3
Mult_G0: Mult G3
H0: Applicative G3
G2: Type -> Type
Map_G1: Map G2
Pure_G1: Pure G2
Mult_G1: Mult G2
H1: Applicative G2
G1: Type -> Type
Map_G2: Map G1
Pure_G2: Pure G1
Mult_G2: Mult G1
H2: Applicative G1
h: W * C -> G3 (T D)
g: W * B -> G2 (T C)
f: W * A -> G1 (T B)
w: W
a: A

map (binddt ((h ⋆7 g) ⦿ w)) (f (w, a)) = ((h ⋆7 g) ⋆7 f) (w, a)
T: Type -> Type
Return_T: Return T
W: Type
Binddt_WTT: Binddt W T T
op: Monoid_op W
unit: Monoid_unit W
Monoid0: Monoid W
DecoratedTraversableMonad0: DecoratedTraversableMonad W T
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B, C, D: Type
G3: Type -> Type
Map_G0: Map G3
Pure_G0: Pure G3
Mult_G0: Mult G3
H0: Applicative G3
G2: Type -> Type
Map_G1: Map G2
Pure_G1: Pure G2
Mult_G1: Mult G2
H1: Applicative G2
G1: Type -> Type
Map_G2: Map G1
Pure_G2: Pure G1
Mult_G2: Mult G1
H2: Applicative G1
h: W * C -> G3 (T D)
g: W * B -> G2 (T C)
f: W * A -> G1 (T B)
w: W
a: A

map (binddt ((h ⋆7 g) ⦿ w)) (f (w, a)) = map (binddt ((h ⋆7 g) ⦿ w)) (f (w, a))
reflexivity. Qed. End decorated_monad_kleisli_composition. (** * Derived Structures *) (**********************************************************************) (** ** Derived Operations *) (**********************************************************************) Module DerivedOperations. Section operations. Context (W: Type) (T: Type -> Type) (U: Type -> Type) `{Return_T: Return T} `{Bindd_WTU: Binddt W T U}. #[export] Instance Map_Binddt: Map U := fun (A B: Type) (f: A -> B) => binddt (G := fun A => A) (ret (T := T) ∘ f ∘ extract (W := (W ×))). #[export] Instance Mapdt_Binddt: Mapdt W U := fun G _ _ _ A B f => binddt (map (F := G) (ret (T := T)) ∘ f). #[export] Instance Bindd_Binddt: Bindd W T U := fun A B f => binddt (G := fun A => A) f. #[export] Instance Bindt_Binddt: Bindt T U := fun G _ _ _ A B f => binddt (f ∘ extract (W := (W ×))). #[export] Instance Bind_Binddt: Bind T U := fun A B f => binddt (G := fun A => A) (f ∘ extract (W := (W ×))). #[export] Instance Mapd_Binddt: Mapd W U := fun A B f => binddt (G := fun A => A) (ret (T := T) ∘ f). #[export] Instance Traverse_Binddt: Traverse U := fun G _ _ _ A B f => binddt (map (F := G) ret ∘ f ∘ extract). End operations. End DerivedOperations. (** ** Compatibility Typeclasses *) (**********************************************************************) Section decorated_traversable_monad_compat. Context (W: Type) (T: Type -> Type) (U: Type -> Type) `{Return_T: Return T} `{Binddt_inst: Binddt W T U} `{Map_inst: Map U} `{Mapd_inst: Mapd W U} `{Traverse_inst: Traverse U} `{Bind_inst: Bind T U} `{Mapdt_inst: Mapdt W U} `{Bindd_inst: Bindd W T U} `{Bindt_inst: Bindt T U}. Class Compat_Map_Binddt: Prop := compat_map_binddt: Map_inst = @DerivedOperations.Map_Binddt W T U Return_T Binddt_inst. Class Compat_Mapd_Binddt: Prop := compat_mapd_binddt: Mapd_inst = @DerivedOperations.Mapd_Binddt W T U Return_T Binddt_inst. Class Compat_Traverse_Binddt: Prop := compat_traverse_binddt: Traverse_inst = @DerivedOperations.Traverse_Binddt W T U Return_T Binddt_inst. Class Compat_Bind_Binddt: Prop := compat_bind_binddt: Bind_inst = @DerivedOperations.Bind_Binddt W T U Binddt_inst. Class Compat_Bindd_Binddt: Prop := compat_bindd_binddt: Bindd_inst = @DerivedOperations.Bindd_Binddt W T U Binddt_inst. Class Compat_Bindt_Binddt: Prop := compat_bindt_binddt: Bindt_inst = @DerivedOperations.Bindt_Binddt W T U Binddt_inst. Class Compat_Mapdt_Binddt: Prop := compat_mapdt_binddt: Mapdt_inst = @DerivedOperations.Mapdt_Binddt W T U Return_T Binddt_inst. Class Compat_Full_Binddt: Prop := { compat_map_binddt_full :> Compat_Map_Binddt; compat_mapd_binddt_full :> Compat_Mapd_Binddt; compat_traverse_binddt_full :> Compat_Traverse_Binddt; compat_bind_binddt_full :> Compat_Bind_Binddt; compat_bindd_binddt_full :> Compat_Bindd_Binddt; compat_bindt_binddt_full :> Compat_Bindt_Binddt; compat_mapdt_binddt_full :> Compat_Mapdt_Binddt; }. End decorated_traversable_monad_compat. Section decorated_traversable_monad_compat_self. Context (W: Type) (T: Type -> Type) (U: Type -> Type) `{Return_T: Return T} `{Binddt_WTU: Binddt W T U}.
W: Type
T, U: Type -> Type
Return_T: Return T
Binddt_WTU: Binddt W T U

Compat_Map_Binddt W T U
W: Type
T, U: Type -> Type
Return_T: Return T
Binddt_WTU: Binddt W T U

Compat_Map_Binddt W T U
reflexivity. Qed.
W: Type
T, U: Type -> Type
Return_T: Return T
Binddt_WTU: Binddt W T U

Compat_Mapd_Binddt W T U
W: Type
T, U: Type -> Type
Return_T: Return T
Binddt_WTU: Binddt W T U

Compat_Mapd_Binddt W T U
reflexivity. Qed.
W: Type
T, U: Type -> Type
Return_T: Return T
Binddt_WTU: Binddt W T U

Compat_Traverse_Binddt W T U
W: Type
T, U: Type -> Type
Return_T: Return T
Binddt_WTU: Binddt W T U

Compat_Traverse_Binddt W T U
reflexivity. Qed.
W: Type
T, U: Type -> Type
Return_T: Return T
Binddt_WTU: Binddt W T U

Compat_Bind_Binddt W T U
W: Type
T, U: Type -> Type
Return_T: Return T
Binddt_WTU: Binddt W T U

Compat_Bind_Binddt W T U
reflexivity. Qed.
W: Type
T, U: Type -> Type
Return_T: Return T
Binddt_WTU: Binddt W T U

Compat_Bindd_Binddt W T U
W: Type
T, U: Type -> Type
Return_T: Return T
Binddt_WTU: Binddt W T U

Compat_Bindd_Binddt W T U
reflexivity. Qed.
W: Type
T, U: Type -> Type
Return_T: Return T
Binddt_WTU: Binddt W T U

Compat_Bindt_Binddt W T U
W: Type
T, U: Type -> Type
Return_T: Return T
Binddt_WTU: Binddt W T U

Compat_Bindt_Binddt W T U
reflexivity. Qed.
W: Type
T, U: Type -> Type
Return_T: Return T
Binddt_WTU: Binddt W T U

Compat_Mapdt_Binddt W T U
W: Type
T, U: Type -> Type
Return_T: Return T
Binddt_WTU: Binddt W T U

Compat_Mapdt_Binddt W T U
reflexivity. Qed. Ltac normalize_binddt := repeat (rewrite (compat_map_binddt W T U) || rewrite (compat_mapd_binddt W T U) || rewrite (compat_traverse_binddt W T U) || rewrite (compat_mapdt_binddt W T U) || rewrite (compat_bind_binddt W T U) || rewrite (compat_bindd_binddt W T U) || rewrite (compat_bindt_binddt W T U)). Ltac solve_compat := hnf; normalize_binddt; unfold_ops @DerivedOperations.Map_Bind; unfold_ops @DerivedOperations.Map_Traverse; unfold_ops @DerivedOperations.Map_Mapd; unfold_ops @DerivedOperations.Map_Mapdt; unfold_ops @DerivedOperations.Mapd_Mapdt; unfold_ops @DerivedOperations.Traverse_Mapdt; unfold_ops @DerivedOperations.Map_Bindd; unfold_ops @DerivedOperations.Mapd_Bindd; unfold_ops @DerivedOperations.Bind_Bindd; unfold_ops @DerivedOperations.Map_Bindt; unfold_ops @DerivedOperations.Traverse_Bindt; unfold_ops @DerivedOperations.Bind_Bindt; normalize_binddt; reflexivity. Context `{Map_U: Map U} `{Mapd_WU: Mapd W U} `{Traverse_U: Traverse U} `{Mapdt_WU: Mapdt W U} `{Bind_TU: Bind T U} `{Bindd_WTU: Bindd W T U} `{Bindt_TU: Bindt T U} `{! Compat_Map_Binddt W T U} `{! Compat_Mapd_Binddt W T U} `{! Compat_Traverse_Binddt W T U} `{! Compat_Mapdt_Binddt W T U} `{! Compat_Bind_Binddt W T U} `{! Compat_Bindd_Binddt W T U} `{! Compat_Bindt_Binddt W T U}. (** *** Compatibility with <<traverse>>, <<mapd>>, and <<bind>>.*) #[export] Instance Compat_Map_Traverse_Binddt: Compat_Map_Traverse U := ltac:(solve_compat). #[export] Instance Compat_Map_Mapd_Binddt: Compat_Map_Mapd W U := ltac:(solve_compat). #[export] Instance Compat_Map_Bind_Binddt: Compat_Map_Bind T U := ltac:(solve_compat). (** *** Compatibility with <<bindd>> *) #[export] Instance Compat_Map_Bindd_Binddt: Compat_Map_Bindd W T U := ltac:(solve_compat). #[export] Instance Compat_Mapd_Bindd_Binddt: Compat_Mapd_Bindd W T U := ltac:(solve_compat). #[export] Instance Compat_Bind_Bindd_Binddt: Compat_Bind_Bindd W T U := ltac:(solve_compat). (** *** Compatibility with <<bindt>> *) #[export] Instance Compat_Map_Bindt_Bindtt: Compat_Map_Bindt T U := ltac:(solve_compat). #[export] Instance Compat_Traverse_Bindt_Bindtt: Compat_Traverse_Bindt T U := ltac:(solve_compat). #[export] Instance Compat_Bind_Bindt_Bindtt: Compat_Bind_Bindt T U := ltac:(solve_compat). (** *** Compatibility with <<mapdt>> *) #[export] Instance Compat_Map_Mapdt_Binddt: Compat_Map_Mapdt W U := ltac:(solve_compat). #[export] Instance Compat_Mapd_Mapdt_Binddt: Compat_Mapd_Mapdt W U := ltac:(solve_compat). #[export] Instance Compat_Traverse_Mapdt_Binddt: Compat_Traverse_Mapdt W U := ltac:(solve_compat). End decorated_traversable_monad_compat_self. (** ** Rewriting <<X>> to <<binddt>> Lemmas *) (**********************************************************************) Section rewriting. Context `{Return_T: Return T} `{Map_U: Map U} `{Mapd_WU: Mapd W U} `{Traverse_U: Traverse U} `{Bind_TU: Bind T U} `{Mapdt_WU: Mapdt W U} `{Bindd_WTU: Bindd W T U} `{Bindt_TU: Bindt T U} `{Binddt_WTU: Binddt W T U}.
T: Type -> Type
Return_T: Return T
U: Type -> Type
Map_U: Map U
W: Type
Mapd_WU: Mapd W U
Traverse_U: Traverse U
Bind_TU: Bind T U
Mapdt_WU: Mapdt W U
Bindd_WTU: Bindd W T U
Bindt_TU: Bindt T U
Binddt_WTU: Binddt W T U
Compat_Map_Binddt0: Compat_Map_Binddt W T U

forall (A B : Type) (f : A -> B), map f = binddt (ret ∘ f ∘ extract)
T: Type -> Type
Return_T: Return T
U: Type -> Type
Map_U: Map U
W: Type
Mapd_WU: Mapd W U
Traverse_U: Traverse U
Bind_TU: Bind T U
Mapdt_WU: Mapdt W U
Bindd_WTU: Bindd W T U
Bindt_TU: Bindt T U
Binddt_WTU: Binddt W T U
Compat_Map_Binddt0: Compat_Map_Binddt W T U

forall (A B : Type) (f : A -> B), map f = binddt (ret ∘ f ∘ extract)
T: Type -> Type
Return_T: Return T
U: Type -> Type
Map_U: Map U
W: Type
Mapd_WU: Mapd W U
Traverse_U: Traverse U
Bind_TU: Bind T U
Mapdt_WU: Mapdt W U
Bindd_WTU: Bindd W T U
Bindt_TU: Bindt T U
Binddt_WTU: Binddt W T U
Compat_Map_Binddt0: Compat_Map_Binddt W T U

forall (A B : Type) (f : A -> B), DerivedOperations.Map_Binddt W T U A B f = binddt (ret ∘ f ∘ extract)
reflexivity. Qed.
T: Type -> Type
Return_T: Return T
U: Type -> Type
Map_U: Map U
W: Type
Mapd_WU: Mapd W U
Traverse_U: Traverse U
Bind_TU: Bind T U
Mapdt_WU: Mapdt W U
Bindd_WTU: Bindd W T U
Bindt_TU: Bindt T U
Binddt_WTU: Binddt W T U
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T U

forall (A B : Type) (f : W * A -> B), mapd f = binddt (ret ∘ f)
T: Type -> Type
Return_T: Return T
U: Type -> Type
Map_U: Map U
W: Type
Mapd_WU: Mapd W U
Traverse_U: Traverse U
Bind_TU: Bind T U
Mapdt_WU: Mapdt W U
Bindd_WTU: Bindd W T U
Bindt_TU: Bindt T U
Binddt_WTU: Binddt W T U
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T U

forall (A B : Type) (f : W * A -> B), mapd f = binddt (ret ∘ f)
T: Type -> Type
Return_T: Return T
U: Type -> Type
Map_U: Map U
W: Type
Mapd_WU: Mapd W U
Traverse_U: Traverse U
Bind_TU: Bind T U
Mapdt_WU: Mapdt W U
Bindd_WTU: Bindd W T U
Bindt_TU: Bindt T U
Binddt_WTU: Binddt W T U
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T U

forall (A B : Type) (f : W * A -> B), DerivedOperations.Mapd_Binddt W T U A B f = binddt (ret ∘ f)
reflexivity. Qed.
T: Type -> Type
Return_T: Return T
U: Type -> Type
Map_U: Map U
W: Type
Mapd_WU: Mapd W U
Traverse_U: Traverse U
Bind_TU: Bind T U
Mapdt_WU: Mapdt W U
Bindd_WTU: Bindd W T U
Bindt_TU: Bindt T U
Binddt_WTU: Binddt W T U
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T U
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 = binddt (map ret ∘ f ∘ extract)
T: Type -> Type
Return_T: Return T
U: Type -> Type
Map_U: Map U
W: Type
Mapd_WU: Mapd W U
Traverse_U: Traverse U
Bind_TU: Bind T U
Mapdt_WU: Mapdt W U
Bindd_WTU: Bindd W T U
Bindt_TU: Bindt T U
Binddt_WTU: Binddt W T U
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T U
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 = binddt (map ret ∘ f ∘ extract)
T: Type -> Type
Return_T: Return T
U: Type -> Type
Map_U: Map U
W: Type
Mapd_WU: Mapd W U
Traverse_U: Traverse U
Bind_TU: Bind T U
Mapdt_WU: Mapdt W U
Bindd_WTU: Bindd W T U
Bindt_TU: Bindt T U
Binddt_WTU: Binddt W T U
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T U
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_Binddt W T U G Map_G Pure_G Mult_G A B f = binddt (map ret ∘ f ∘ extract)
reflexivity. Qed.
T: Type -> Type
Return_T: Return T
U: Type -> Type
Map_U: Map U
W: Type
Mapd_WU: Mapd W U
Traverse_U: Traverse U
Bind_TU: Bind T U
Mapdt_WU: Mapdt W U
Bindd_WTU: Bindd W T U
Bindt_TU: Bindt T U
Binddt_WTU: Binddt W T U
Compat_Bind_Binddt0: Compat_Bind_Binddt W T U

forall (A B : Type) (f : A -> T B), bind f = binddt (f ∘ extract)
T: Type -> Type
Return_T: Return T
U: Type -> Type
Map_U: Map U
W: Type
Mapd_WU: Mapd W U
Traverse_U: Traverse U
Bind_TU: Bind T U
Mapdt_WU: Mapdt W U
Bindd_WTU: Bindd W T U
Bindt_TU: Bindt T U
Binddt_WTU: Binddt W T U
Compat_Bind_Binddt0: Compat_Bind_Binddt W T U

forall (A B : Type) (f : A -> T B), bind f = binddt (f ∘ extract)
T: Type -> Type
Return_T: Return T
U: Type -> Type
Map_U: Map U
W: Type
Mapd_WU: Mapd W U
Traverse_U: Traverse U
Bind_TU: Bind T U
Mapdt_WU: Mapdt W U
Bindd_WTU: Bindd W T U
Bindt_TU: Bindt T U
Binddt_WTU: Binddt W T U
Compat_Bind_Binddt0: Compat_Bind_Binddt W T U

forall (A B : Type) (f : A -> T B), DerivedOperations.Bind_Binddt W T U A B f = binddt (f ∘ extract)
reflexivity. Qed.
T: Type -> Type
Return_T: Return T
U: Type -> Type
Map_U: Map U
W: Type
Mapd_WU: Mapd W U
Traverse_U: Traverse U
Bind_TU: Bind T U
Mapdt_WU: Mapdt W U
Bindd_WTU: Bindd W T U
Bindt_TU: Bindt T U
Binddt_WTU: Binddt W T U
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T U

forall (G : Type -> Type) (Map_G : Map G) (Pure_G : Pure G) (Mult_G : Mult G), Applicative G -> forall (A B : Type) (f : W * A -> G B), mapdt f = binddt (map ret ∘ f)
T: Type -> Type
Return_T: Return T
U: Type -> Type
Map_U: Map U
W: Type
Mapd_WU: Mapd W U
Traverse_U: Traverse U
Bind_TU: Bind T U
Mapdt_WU: Mapdt W U
Bindd_WTU: Bindd W T U
Bindt_TU: Bindt T U
Binddt_WTU: Binddt W T U
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T U

forall (G : Type -> Type) (Map_G : Map G) (Pure_G : Pure G) (Mult_G : Mult G), Applicative G -> forall (A B : Type) (f : W * A -> G B), mapdt f = binddt (map ret ∘ f)
T: Type -> Type
Return_T: Return T
U: Type -> Type
Map_U: Map U
W: Type
Mapd_WU: Mapd W U
Traverse_U: Traverse U
Bind_TU: Bind T U
Mapdt_WU: Mapdt W U
Bindd_WTU: Bindd W T U
Bindt_TU: Bindt T U
Binddt_WTU: Binddt W T U
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T U

forall (G : Type -> Type) (Map_G : Map G) (Pure_G : Pure G) (Mult_G : Mult G), Applicative G -> forall (A B : Type) (f : W * A -> G B), DerivedOperations.Mapdt_Binddt W T U G Map_G Pure_G Mult_G A B f = binddt (map ret ∘ f)
reflexivity. Qed.
T: Type -> Type
Return_T: Return T
U: Type -> Type
Map_U: Map U
W: Type
Mapd_WU: Mapd W U
Traverse_U: Traverse U
Bind_TU: Bind T U
Mapdt_WU: Mapdt W U
Bindd_WTU: Bindd W T U
Bindt_TU: Bindt T U
Binddt_WTU: Binddt W T U
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T U

forall (G : Type -> Type) (Map_G : Map G) (Pure_G : Pure G) (Mult_G : Mult G), Applicative G -> forall A B : Type, mapdt = binddt ∘ compose (map ret)
T: Type -> Type
Return_T: Return T
U: Type -> Type
Map_U: Map U
W: Type
Mapd_WU: Mapd W U
Traverse_U: Traverse U
Bind_TU: Bind T U
Mapdt_WU: Mapdt W U
Bindd_WTU: Bindd W T U
Bindt_TU: Bindt T U
Binddt_WTU: Binddt W T U
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T U

forall (G : Type -> Type) (Map_G : Map G) (Pure_G : Pure G) (Mult_G : Mult G), Applicative G -> forall A B : Type, mapdt = binddt ∘ compose (map ret)
T: Type -> Type
Return_T: Return T
U: Type -> Type
Map_U: Map U
W: Type
Mapd_WU: Mapd W U
Traverse_U: Traverse U
Bind_TU: Bind T U
Mapdt_WU: Mapdt W U
Bindd_WTU: Bindd W T U
Bindt_TU: Bindt T U
Binddt_WTU: Binddt W T U
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T U
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B: Type

mapdt = binddt ∘ compose (map ret)
T: Type -> Type
Return_T: Return T
U: Type -> Type
Map_U: Map U
W: Type
Mapd_WU: Mapd W U
Traverse_U: Traverse U
Bind_TU: Bind T U
Mapdt_WU: Mapdt W U
Bindd_WTU: Bindd W T U
Bindt_TU: Bindt T U
Binddt_WTU: Binddt W T U
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T U
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B: Type
f: W * A -> G B

mapdt f = (binddt ∘ compose (map ret)) f
T: Type -> Type
Return_T: Return T
U: Type -> Type
Map_U: Map U
W: Type
Mapd_WU: Mapd W U
Traverse_U: Traverse U
Bind_TU: Bind T U
Mapdt_WU: Mapdt W U
Bindd_WTU: Bindd W T U
Bindt_TU: Bindt T U
Binddt_WTU: Binddt W T U
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T U
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B: Type
f: W * A -> G B

binddt (map ret ∘ f) = (binddt ∘ compose (map ret)) f
reflexivity. Qed.
T: Type -> Type
Return_T: Return T
U: Type -> Type
Map_U: Map U
W: Type
Mapd_WU: Mapd W U
Traverse_U: Traverse U
Bind_TU: Bind T U
Mapdt_WU: Mapdt W U
Bindd_WTU: Bindd W T U
Bindt_TU: Bindt T U
Binddt_WTU: Binddt W T U
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T U

forall A B : Type, bindd = binddt
T: Type -> Type
Return_T: Return T
U: Type -> Type
Map_U: Map U
W: Type
Mapd_WU: Mapd W U
Traverse_U: Traverse U
Bind_TU: Bind T U
Mapdt_WU: Mapdt W U
Bindd_WTU: Bindd W T U
Bindt_TU: Bindt T U
Binddt_WTU: Binddt W T U
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T U

forall A B : Type, bindd = binddt
T: Type -> Type
Return_T: Return T
U: Type -> Type
Map_U: Map U
W: Type
Mapd_WU: Mapd W U
Traverse_U: Traverse U
Bind_TU: Bind T U
Mapdt_WU: Mapdt W U
Bindd_WTU: Bindd W T U
Bindt_TU: Bindt T U
Binddt_WTU: Binddt W T U
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T U

forall A B : Type, DerivedOperations.Bindd_Binddt W T U A B = binddt
reflexivity. Qed.
T: Type -> Type
Return_T: Return T
U: Type -> Type
Map_U: Map U
W: Type
Mapd_WU: Mapd W U
Traverse_U: Traverse U
Bind_TU: Bind T U
Mapdt_WU: Mapdt W U
Bindd_WTU: Bindd W T U
Bindt_TU: Bindt T U
Binddt_WTU: Binddt W T U
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T U
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B: Type
f: A -> G (T B)

bindt f = binddt (f ∘ extract)
T: Type -> Type
Return_T: Return T
U: Type -> Type
Map_U: Map U
W: Type
Mapd_WU: Mapd W U
Traverse_U: Traverse U
Bind_TU: Bind T U
Mapdt_WU: Mapdt W U
Bindd_WTU: Bindd W T U
Bindt_TU: Bindt T U
Binddt_WTU: Binddt W T U
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T U
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B: Type
f: A -> G (T B)

bindt f = binddt (f ∘ extract)
T: Type -> Type
Return_T: Return T
U: Type -> Type
Map_U: Map U
W: Type
Mapd_WU: Mapd W U
Traverse_U: Traverse U
Bind_TU: Bind T U
Mapdt_WU: Mapdt W U
Bindd_WTU: Bindd W T U
Bindt_TU: Bindt T U
Binddt_WTU: Binddt W T U
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T U
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B: Type
f: A -> G (T B)

DerivedOperations.Bindt_Binddt W T U G Map_G Pure_G Mult_G A B f = binddt (f ∘ extract)
reflexivity. Qed.
T: Type -> Type
Return_T: Return T
U: Type -> Type
Map_U: Map U
W: Type
Mapd_WU: Mapd W U
Traverse_U: Traverse U
Bind_TU: Bind T U
Mapdt_WU: Mapdt W U
Bindd_WTU: Bindd W T U
Bindt_TU: Bindt T U
Binddt_WTU: Binddt W T U
Compat_Map_Binddt0: Compat_Map_Binddt W T U
Compat_Bind_Binddt0: Compat_Bind_Binddt W T U

forall (A B : Type) (f : A -> B), map f = bind (ret ∘ f)
T: Type -> Type
Return_T: Return T
U: Type -> Type
Map_U: Map U
W: Type
Mapd_WU: Mapd W U
Traverse_U: Traverse U
Bind_TU: Bind T U
Mapdt_WU: Mapdt W U
Bindd_WTU: Bindd W T U
Bindt_TU: Bindt T U
Binddt_WTU: Binddt W T U
Compat_Map_Binddt0: Compat_Map_Binddt W T U
Compat_Bind_Binddt0: Compat_Bind_Binddt W T U

forall (A B : Type) (f : A -> B), map f = bind (ret ∘ f)
T: Type -> Type
Return_T: Return T
U: Type -> Type
Map_U: Map U
W: Type
Mapd_WU: Mapd W U
Traverse_U: Traverse U
Bind_TU: Bind T U
Mapdt_WU: Mapdt W U
Bindd_WTU: Bindd W T U
Bindt_TU: Bindt T U
Binddt_WTU: Binddt W T U
Compat_Map_Binddt0: Compat_Map_Binddt W T U
Compat_Bind_Binddt0: Compat_Bind_Binddt W T U

forall (A B : Type) (f : A -> B), DerivedOperations.Map_Bind T U A B f = bind (ret ∘ f)
reflexivity. Qed.
T: Type -> Type
Return_T: Return T
U: Type -> Type
Map_U: Map U
W: Type
Mapd_WU: Mapd W U
Traverse_U: Traverse U
Bind_TU: Bind T U
Mapdt_WU: Mapdt W U
Bindd_WTU: Bindd W T U
Bindt_TU: Bindt T U
Binddt_WTU: Binddt W T U
Compat_Map_Binddt0: Compat_Map_Binddt W T U
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T U

forall (A B : Type) (f : A -> B), map f = bindd (ret ∘ f ∘ extract)
T: Type -> Type
Return_T: Return T
U: Type -> Type
Map_U: Map U
W: Type
Mapd_WU: Mapd W U
Traverse_U: Traverse U
Bind_TU: Bind T U
Mapdt_WU: Mapdt W U
Bindd_WTU: Bindd W T U
Bindt_TU: Bindt T U
Binddt_WTU: Binddt W T U
Compat_Map_Binddt0: Compat_Map_Binddt W T U
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T U

forall (A B : Type) (f : A -> B), map f = bindd (ret ∘ f ∘ extract)
T: Type -> Type
Return_T: Return T
U: Type -> Type
Map_U: Map U
W: Type
Mapd_WU: Mapd W U
Traverse_U: Traverse U
Bind_TU: Bind T U
Mapdt_WU: Mapdt W U
Bindd_WTU: Bindd W T U
Bindt_TU: Bindt T U
Binddt_WTU: Binddt W T U
Compat_Map_Binddt0: Compat_Map_Binddt W T U
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T U
A, B: Type
f: A -> B

map f = bindd (ret ∘ f ∘ extract)
T: Type -> Type
Return_T: Return T
U: Type -> Type
Map_U: Map U
W: Type
Mapd_WU: Mapd W U
Traverse_U: Traverse U
Bind_TU: Bind T U
Mapdt_WU: Mapdt W U
Bindd_WTU: Bindd W T U
Bindt_TU: Bindt T U
Binddt_WTU: Binddt W T U
Compat_Map_Binddt0: Compat_Map_Binddt W T U
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T U
A, B: Type
f: A -> B

DerivedOperations.Map_Bindd W T U A B f = bindd (ret ∘ f ∘ extract)
reflexivity. Qed. End rewriting. (** ** Composition with the Identity Applicative Functor *) (**********************************************************************) Section properties. Context `{DecoratedTraversableRightModule W T U}.
W: Type
T, U: Type -> Type
op: Monoid_op W
unit0: Monoid_unit W
Return_inst: Return T
Bindd_T_inst: Binddt W T T
Bindd_U_inst: Binddt W T U
H: DecoratedTraversableRightModule W T U

forall (G : Type -> Type) (A B : Type) (Map_G : Map G) (Pure_G : Pure G) (Mult_G : Mult G), Applicative G -> forall f : W * A -> G (T B), binddt f = binddt f
W: Type
T, U: Type -> Type
op: Monoid_op W
unit0: Monoid_unit W
Return_inst: Return T
Bindd_T_inst: Binddt W T T
Bindd_U_inst: Binddt W T U
H: DecoratedTraversableRightModule W T U

forall (G : Type -> Type) (A B : Type) (Map_G : Map G) (Pure_G : Pure G) (Mult_G : Mult G), Applicative G -> forall f : W * A -> G (T B), binddt f = binddt f
W: Type
T, U: Type -> Type
op: Monoid_op W
unit0: Monoid_unit W
Return_inst: Return T
Bindd_T_inst: Binddt W T T
Bindd_U_inst: Binddt W T U
H: DecoratedTraversableRightModule W T U
G: Type -> Type
A, B: Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H0: Applicative G
f: W * A -> G (T B)

binddt f = binddt f
W: Type
T, U: Type -> Type
op: Monoid_op W
unit0: Monoid_unit W
Return_inst: Return T
Bindd_T_inst: Binddt W T T
Bindd_U_inst: Binddt W T U
H: DecoratedTraversableRightModule W T U
G: Type -> Type
A, B: Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H0: Applicative G
f: W * A -> G (T B)

Mult_compose (fun A : Type => A) G = Mult_G
now rewrite (Mult_compose_identity2 G). Qed.
W: Type
T, U: Type -> Type
op: Monoid_op W
unit0: Monoid_unit W
Return_inst: Return T
Bindd_T_inst: Binddt W T T
Bindd_U_inst: Binddt W T U
H: DecoratedTraversableRightModule W T U

forall (G : Type -> Type) (A B : Type) (Map_G : Map G) (Pure_G : Pure G) (Mult_G : Mult G), Applicative G -> forall f : W * A -> G (T B), binddt f = binddt f
W: Type
T, U: Type -> Type
op: Monoid_op W
unit0: Monoid_unit W
Return_inst: Return T
Bindd_T_inst: Binddt W T T
Bindd_U_inst: Binddt W T U
H: DecoratedTraversableRightModule W T U

forall (G : Type -> Type) (A B : Type) (Map_G : Map G) (Pure_G : Pure G) (Mult_G : Mult G), Applicative G -> forall f : W * A -> G (T B), binddt f = binddt f
W: Type
T, U: Type -> Type
op: Monoid_op W
unit0: Monoid_unit W
Return_inst: Return T
Bindd_T_inst: Binddt W T T
Bindd_U_inst: Binddt W T U
H: DecoratedTraversableRightModule W T U
G: Type -> Type
A, B: Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H0: Applicative G
f: W * A -> G (T B)

binddt f = binddt f
W: Type
T, U: Type -> Type
op: Monoid_op W
unit0: Monoid_unit W
Return_inst: Return T
Bindd_T_inst: Binddt W T T
Bindd_U_inst: Binddt W T U
H: DecoratedTraversableRightModule W T U
G: Type -> Type
A, B: Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H0: Applicative G
f: W * A -> G (T B)

Mult_compose G (fun A : Type => A) = Mult_G
now rewrite (Mult_compose_identity1 G). Qed. End properties. (** ** Derived Kleisli Composition Laws *) (**********************************************************************) Section derived_instances. (** *** Section Context *) (********************************************************************) Context `{op: Monoid_op W} `{unit: Monoid_unit W} `{ret_inst: Return T} `{Map_T_inst: Map T} `{Mapd_T_inst: Mapd W T} `{Traverse_T_inst: Traverse T} `{Bind_T_inst: Bind T T} `{Mapdt_T_inst: Mapdt W T} `{Bindd_T_inst: Bindd W T T} `{Bindt_T_inst: Bindt T T} `{Binddt_T_inst: Binddt W T T} `{! Compat_Map_Binddt W T T} `{! Compat_Mapd_Binddt W T T} `{! Compat_Traverse_Binddt W T T} `{! Compat_Bind_Binddt W T T} `{! Compat_Mapdt_Binddt W T T} `{! Compat_Bindd_Binddt W T T} `{! Compat_Bindt_Binddt W T T} `{Monad_inst: ! DecoratedTraversableMonad W T} `{Map_U_inst: Map U} `{Mapd_U_inst: Mapd W U} `{Traverse_U_inst: Traverse U} `{Bind_U_inst: Bind T U} `{Mapdt_U_inst: Mapdt W U} `{Bindd_U_inst: Bindd W T U} `{Bindt_U_inst: Bindt T U} `{Binddt_U_inst: Binddt W T U} `{! Compat_Map_Binddt W T U} `{! Compat_Mapd_Binddt W T U} `{! Compat_Traverse_Binddt W T U} `{! Compat_Bind_Binddt W T U} `{! Compat_Mapdt_Binddt W T U} `{! Compat_Bindd_Binddt W T U} `{! Compat_Bindt_Binddt W T U} `{Module_inst: ! DecoratedTraversableRightPreModule W T U}. (** *** Tactical support *) (********************************************************************) #[local] Ltac unfold_map_id := repeat (change (map (F := fun A => A) ?f) with f). #[local] Hint Unfold kc7 kc6 kc5 kc kc3 kc2 kc1: tealeaves_kc_unfold. #[local] Ltac setup := intros; autounfold with tealeaves_kc_unfold; ext [w a]; unfold_map_id. Ltac kdtmf_normalize_T := repeat ( rewrite (map_to_binddt (U := T) (T := T)) || rewrite (bind_to_binddt (U := T) (T := T)) || rewrite (traverse_to_binddt (U := T) (T := T)) || rewrite (mapd_to_binddt (U := T) (T := T)) || rewrite (mapdt_to_binddt (U := T) (T := T)) || rewrite (bindd_to_binddt (U := T) (T := T)) || rewrite (bindt_to_binddt (U := T) (T := T))). Ltac solve_kc7 := setup; kdtmf_normalize_T; try (reflexivity || rewrite preincr_assoc; rewrite extract_preincr; reflexivity). (** *** Homogeneous Kleisli composition laws *) (********************************************************************) Section composition. Context `{Applicative G1} `{Applicative G2}. Variables (A B C: Type). (** **** Lemmas <<kc7_xx>> *) (******************************************************************)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 : W * B -> G2 C) (f : W * A -> G1 B), map ret ∘ g ⋆7 map ret ∘ f = map ret ∘ (g ⋆3 f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 : W * B -> G2 C) (f : W * A -> G1 B), map ret ∘ g ⋆7 map ret ∘ f = map ret ∘ (g ⋆3 f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> G2 C
f: W * A -> G1 B

map ret ∘ g ⋆7 map ret ∘ f = map ret ∘ (g ⋆3 f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> G2 C
f: W * A -> G1 B

(fun '(w, a) => map (binddt ((map ret ∘ g) ⦿ w)) ((map ret ∘ f) (w, a))) = map ret ∘ (g ⋆3 f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> G2 C
f: W * A -> G1 B
w: W
a: A

map (binddt ((map ret ∘ g) ⦿ w)) ((map ret ∘ f) (w, a)) = (map ret ∘ (g ⋆3 f)) (w, a)
(* LHS *)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> G2 C
f: W * A -> G1 B
w: W
a: A

map (binddt ((map ret ∘ g) ⦿ w)) (map ret (f (w, a))) = (map ret ∘ (g ⋆3 f)) (w, a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> G2 C
f: W * A -> G1 B
w: W
a: A

(map (binddt ((map ret ∘ g) ⦿ w)) ∘ map ret) (f (w, a)) = (map ret ∘ (g ⋆3 f)) (w, a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> G2 C
f: W * A -> G1 B
w: W
a: A

map (binddt ((map ret ∘ g) ⦿ w) ∘ ret) (f (w, a)) = (map ret ∘ (g ⋆3 f)) (w, a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> G2 C
f: W * A -> G1 B
w: W
a: A

map ((map ret ∘ g) ⦿ w ∘ ret) (f (w, a)) = (map ret ∘ (g ⋆3 f)) (w, a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> G2 C
f: W * A -> G1 B
w: W
a: A

map (map ret ∘ g ∘ pair w) (f (w, a)) = (map ret ∘ (g ⋆3 f)) (w, a)
(* RHS *)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> G2 C
f: W * A -> G1 B
w: W
a: A

map (map ret ∘ g ∘ pair w) (f (w, a)) = (map ret ∘ (map g ∘ strength ∘ cobind f)) (w, a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> G2 C
f: W * A -> G1 B
w: W
a: A

map (map ret ∘ g ∘ pair w) (f (w, a)) = (map (map ret) ∘ (map g ∘ strength ∘ cobind f)) (w, a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> G2 C
f: W * A -> G1 B
w: W
a: A

map (map ret ∘ g ∘ pair w) (f (w, a)) = (map (map ret) ∘ map g ∘ strength ∘ cobind f) (w, a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> G2 C
f: W * A -> G1 B
w: W
a: A

map (map ret ∘ g ∘ pair w) (f (w, a)) = (map (map ret ∘ g) ∘ strength ∘ cobind f) (w, a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> G2 C
f: W * A -> G1 B
w: W
a: A

map (map ret ∘ g ∘ pair w) (f (w, a)) = (map (map ret ∘ g) ∘ (fun '(a, t) => map (pair a) t) ∘ (fun '(e, a) => (e, f (e, a)))) (w, a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> G2 C
f: W * A -> G1 B
w: W
a: A

map (map ret ∘ g ∘ pair w) (f (w, a)) = map (map ret ∘ g) (map (pair w) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> G2 C
f: W * A -> G1 B
w: W
a: A

map (map ret ∘ g ∘ pair w) (f (w, a)) = (map (map ret ∘ g) ∘ map (pair w)) (f (w, a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> G2 C
f: W * A -> G1 B
w: W
a: A

map (map ret ∘ g ∘ pair w) (f (w, a)) = map (map ret ∘ g ∘ pair w) (f (w, a))
reflexivity. Qed.
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 : W * B -> T C) (f : W * A -> T B), g ⋆7 f = g ⋆5 f
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 : W * B -> T C) (f : W * A -> T B), g ⋆7 f = g ⋆5 f
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> T C
f: W * A -> T B

g ⋆7 f = g ⋆5 f
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> T C
f: W * A -> T B

g ⋆7 f = (fun '(w, a) => bindd (g ⦿ w) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> T C
f: W * A -> T B
w: W
a: A

(g ⋆7 f) (w, a) = bindd (g ⦿ w) (f (w, a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> T C
f: W * A -> T B
w: W
a: A

(g ⋆7 f) (w, a) = binddt (g ⦿ w) (f (w, a))
reflexivity. Qed.
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 : W * B -> C) (f : W * A -> B), ret ∘ g ⋆7 ret ∘ f = ret ∘ (g ⋆1 f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 : W * B -> C) (f : W * A -> B), ret ∘ g ⋆7 ret ∘ f = ret ∘ (g ⋆1 f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> C
f: W * A -> B

ret ∘ g ⋆7 ret ∘ f = ret ∘ (g ⋆1 f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> C
f: W * A -> B

ret ∘ g ⋆5 ret ∘ f = ret ∘ (g ⋆1 f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> C
f: W * A -> B

(fun '(w, a) => bindd ((ret ∘ g) ⦿ w) ((ret ∘ f) (w, a))) = ret ∘ (g ⋆1 f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> C
f: W * A -> B
w: W
a: A

bindd ((ret ∘ g) ⦿ w) ((ret ∘ f) (w, a)) = (ret ∘ (g ⋆1 f)) (w, a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> C
f: W * A -> B
w: W
a: A

bindd ((ret ∘ g) ⦿ w) (ret (f (w, a))) = (ret ∘ (g ⋆1 f)) (w, a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> C
f: W * A -> B
w: W
a: A

(bindd ((ret ∘ g) ⦿ w) ∘ ret) (f (w, a)) = (ret ∘ (g ⋆1 f)) (w, a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> C
f: W * A -> B
w: W
a: A

(binddt ((ret ∘ g) ⦿ w) ∘ ret) (f (w, a)) = (ret ∘ (g ⋆1 f)) (w, a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> C
f: W * A -> B
w: W
a: A

((ret ∘ g) ⦿ w ∘ ret) (f (w, a)) = (ret ∘ (g ⋆1 f)) (w, a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> C
f: W * A -> B
w: W
a: A

(ret ∘ g ∘ pair w) (f (w, a)) = (ret ∘ (g ⋆1 f)) (w, a)
reflexivity. Qed.
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 (T C)) (f : A -> G1 (T B)), g ∘ extract ⋆7 f ∘ extract = (g ⋆6 f) ∘ extract
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 (T C)) (f : A -> G1 (T B)), g ∘ extract ⋆7 f ∘ extract = (g ⋆6 f) ∘ extract
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 (T C)
f: A -> G1 (T B)

g ∘ extract ⋆7 f ∘ extract = (g ⋆6 f) ∘ extract
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 (T C)
f: A -> G1 (T B)

(fun '(w, a) => map (binddt ((g ∘ extract) ⦿ w)) ((f ∘ extract) (w, a))) = (g ⋆6 f) ∘ extract
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 (T C)
f: A -> G1 (T B)
w: W
a: A

map (binddt ((g ∘ extract) ⦿ w)) ((f ∘ extract) (w, a)) = ((g ⋆6 f) ∘ extract) (w, a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 (T C)
f: A -> G1 (T B)
w: W
a: A

map (binddt (g ∘ extract ⦿ w)) ((f ∘ extract) (w, a)) = ((g ⋆6 f) ∘ extract) (w, a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 (T C)
f: A -> G1 (T B)
w: W
a: A

map (binddt (g ∘ extract)) ((f ∘ extract) (w, a)) = ((g ⋆6 f) ∘ extract) (w, a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 (T C)
f: A -> G1 (T B)
w: W
a: A

map (binddt (g ∘ extract)) ((f ∘ extract) (w, a)) = (map (bindt g) ∘ f ∘ extract) (w, a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 (T C)
f: A -> G1 (T B)
w: W
a: A

map (binddt (g ∘ extract)) ((f ∘ extract) (w, a)) = (map (binddt (g ∘ extract)) ∘ f ∘ extract) (w, a)
reflexivity. Qed.
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 ret ∘ g ∘ extract ⋆7 map ret ∘ f ∘ extract = (ret ⋆2 map g ∘ f) ∘ extract
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 ret ∘ g ∘ extract ⋆7 map ret ∘ f ∘ extract = (ret ⋆2 map g ∘ f) ∘ extract
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 ret ∘ g ∘ extract ⋆7 map ret ∘ f ∘ extract = (ret ⋆2 map g ∘ f) ∘ extract
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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

(fun '(w, a) => map (binddt ((map ret ∘ g ∘ extract) ⦿ w)) ((map ret ∘ f ∘ extract) (w, a))) = (ret ⋆2 map g ∘ f) ∘ extract
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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
w: W
a: A

map (binddt ((map ret ∘ g ∘ extract) ⦿ w)) ((map ret ∘ f ∘ extract) (w, a)) = ((ret ⋆2 map g ∘ f) ∘ extract) (w, a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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
w: W
a: A

map (binddt (map ret ∘ g ∘ extract ⦿ w)) ((map ret ∘ f ∘ extract) (w, a)) = ((ret ⋆2 map g ∘ f) ∘ extract) (w, a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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
w: W
a: A

map (binddt (map ret ∘ (g ∘ extract ⦿ w))) ((map ret ∘ (f ∘ extract)) (w, a)) = ((ret ⋆2 map g ∘ f) ∘ extract) (w, a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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
w: W
a: A

map (binddt (map ret ∘ (g ∘ extract))) ((map ret ∘ (f ∘ extract)) (w, a)) = ((ret ⋆2 map g ∘ f) ∘ extract) (w, a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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
w: W
a: A

map (binddt (fun a : W * B => map ret (g (extract a)))) (map ret (f a)) = ((ret ⋆2 map g ∘ f) ∘ extract) (w, a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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
w: W
a: A

(map (binddt (fun a : W * B => map ret (g (extract a)))) ∘ map ret) (f a) = ((ret ⋆2 map g ∘ f) ∘ extract) (w, a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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
w: W
a: A

map (binddt (fun a : W * B => map ret (g (extract a))) ∘ ret) (f a) = ((ret ⋆2 map g ∘ f) ∘ extract) (w, a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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
w: W
a: A

map ((fun a : W * B => map ret (g (extract a))) ∘ ret) (f a) = ((ret ⋆2 map g ∘ f) ∘ extract) (w, a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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
w: W
a: A

map ((fun a : W * B => map ret (g (extract a))) ∘ ret) (f a) = (map ret ∘ (map g ∘ f) ∘ extract) (w, a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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
w: W
a: A

map ((fun a : W * B => map ret (g (extract a))) ∘ ret) (f a) = (map (map ret) ∘ (map g ∘ f) ∘ extract) (w, a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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
w: W
a: A

map (map ret ○ g) (f a) = map (map ret) (map g (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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
w: W
a: A

map (map ret ○ g) (f a) = (map (map ret) ∘ map g) (f a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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
w: W
a: A

map (map ret ○ g) (f a) = map (map ret ∘ g) (f a)
reflexivity. Qed.
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 -> T C) (f : A -> T B), g ∘ extract ⋆7 f ∘ extract = (g ⋆ f) ∘ extract
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 -> T C) (f : A -> T B), g ∘ extract ⋆7 f ∘ extract = (g ⋆ f) ∘ extract
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 -> T C
f: A -> T B
w: W
a: A

binddt ((g ∘ extract) ⦿ w) ((f ∘ extract) (w, a)) = (bind g ∘ f ∘ extract) (w, a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 -> T C
f: A -> T B
w: W
a: A

binddt ((g ∘ extract) ⦿ w) ((f ∘ extract) (w, a)) = (binddt (g ∘ extract) ∘ f ∘ extract) (w, a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 -> T C
f: A -> T B
w: W
a: A

binddt (g ∘ extract ⦿ w) ((f ∘ extract) (w, a)) = (binddt (g ∘ extract) ∘ f ∘ extract) (w, a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 -> T C
f: A -> T B
w: W
a: A

binddt (g ∘ extract) ((f ∘ extract) (w, a)) = (binddt (g ∘ extract) ∘ f ∘ extract) (w, a)
reflexivity. Qed.
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 : A -> B), ret ∘ g ∘ extract ⋆7 ret ∘ f ∘ extract = ret ∘ g ∘ f ∘ extract
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 : A -> B), ret ∘ g ∘ extract ⋆7 ret ∘ f ∘ extract = ret ∘ g ∘ f ∘ extract
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: A -> B
w: W
a: A

binddt ((fun a : W * B => ret (g (extract a))) ⦿ w) (ret (f a)) = ret (g (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: A -> B
w: W
a: A

(binddt ((fun a : W * B => ret (g (extract a))) ⦿ w) ∘ ret) (f a) = ret (g (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: A -> B
w: W
a: A

(binddt ((fun a : W * B => ret (g (extract a))) ⦿ w) ∘ ret) (f a) = ret (g (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: A -> B
w: W
a: A

((fun a : W * B => ret (g (extract a))) ⦿ w ∘ ret) (f a) = ret (g (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: A -> B
w: W
a: A

((fun a : W * B => ret (g (extract a))) ∘ pair w) (f a) = ret (g (f a))
reflexivity. Qed. End composition. (** ** Rewriting rules for special cases of <<kc7>> *) (********************************************************************) Section kc7_special_cases. Context `{Applicative G1} `{Applicative G2} {A B C D: Type}. (** *** Lemmas <<kc7_x7>> *) (******************************************************************)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type

forall (g : B -> C) (f : W * A -> G1 (T B)), ret ∘ g ∘ extract ⋆7 f = map (map g) ∘ f
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type

forall (g : B -> C) (f : W * A -> G1 (T B)), ret ∘ g ∘ extract ⋆7 f = map (map g) ∘ f
solve_kc7. Qed.
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type

forall (g : B -> T C) (f : W * A -> G1 (T B)), g ∘ extract ⋆7 f = map (bind g) ∘ f
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type

forall (g : B -> T C) (f : W * A -> G1 (T B)), g ∘ extract ⋆7 f = map (bind g) ∘ f
solve_kc7. Qed.
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type

forall (g : B -> G2 C) (f : W * A -> G1 (T B)), map ret ∘ g ∘ extract ⋆7 f = map (traverse g) ∘ f
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type

forall (g : B -> G2 C) (f : W * A -> G1 (T B)), map ret ∘ g ∘ extract ⋆7 f = map (traverse g) ∘ f
solve_kc7. Qed.
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type

forall (g : B -> G2 (T C)) (f : W * A -> G1 (T B)), g ∘ extract ⋆7 f = g ⋆6 f
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type

forall (g : B -> G2 (T C)) (f : W * A -> G1 (T B)), g ∘ extract ⋆7 f = g ⋆6 f
solve_kc7. Qed.
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type

forall (g : W * B -> C) (f : W * A -> G1 (T B)), ret ∘ g ⋆7 f = (fun '(w, a) => map (mapd (g ⦿ w)) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type

forall (g : W * B -> C) (f : W * A -> G1 (T B)), ret ∘ g ⋆7 f = (fun '(w, a) => map (mapd (g ⦿ w)) (f (w, a)))
solve_kc7. Qed.
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type

forall (g : W * B -> T C) (f : W * A -> G1 (T B)), g ⋆7 f = g ⋆7 f
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type

forall (g : W * B -> T C) (f : W * A -> G1 (T B)), g ⋆7 f = g ⋆7 f
reflexivity. Qed.
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type

forall (g : W * B -> G2 C) (f : W * A -> G1 (T B)), map ret ∘ g ⋆7 f = (fun '(w, a) => map (mapdt (g ⦿ w)) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type

forall (g : W * B -> G2 C) (f : W * A -> G1 (T B)), map ret ∘ g ⋆7 f = (fun '(w, a) => map (mapdt (g ⦿ w)) (f (w, a)))
solve_kc7. Qed. (** *** Lemmas <<kc7_7x>> *) (******************************************************************)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type

forall (g : W * B -> G2 (T C)) (f : W * A -> G1 B), g ⋆7 map ret ∘ f = g ⋆3 f
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type

forall (g : W * B -> G2 (T C)) (f : W * A -> G1 B), g ⋆7 map ret ∘ f = g ⋆3 f
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type
g: W * B -> G2 (T C)
f: W * A -> G1 B

g ⋆7 map ret ∘ f = g ⋆3 f
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type
g: W * B -> G2 (T C)
f: W * A -> G1 B

(fun '(w, a) => map (binddt (g ⦿ w)) ((map ret ∘ f) (w, a))) = map g ∘ strength ∘ cobind f
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type
g: W * B -> G2 (T C)
f: W * A -> G1 B
w: W
a: A

map (binddt (g ⦿ w)) ((map ret ∘ f) (w, a)) = (map g ∘ strength ∘ cobind f) (w, a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type
g: W * B -> G2 (T C)
f: W * A -> G1 B
w: W
a: A

map (binddt (g ⦿ w)) (map ret (f (w, a))) = map g (map (pair w) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type
g: W * B -> G2 (T C)
f: W * A -> G1 B
w: W
a: A

(map (binddt (g ⦿ w)) ∘ map ret) (f (w, a)) = (map g ∘ map (pair w)) (f (w, a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type
g: W * B -> G2 (T C)
f: W * A -> G1 B
w: W
a: A

map (binddt (g ⦿ w) ∘ ret) (f (w, a)) = (map g ∘ map (pair w)) (f (w, a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type
g: W * B -> G2 (T C)
f: W * A -> G1 B
w: W
a: A

map (binddt (g ⦿ w) ∘ ret) (f (w, a)) = map (g ∘ pair w) (f (w, a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type
g: W * B -> G2 (T C)
f: W * A -> G1 B
w: W
a: A

map (g ⦿ w ∘ ret) (f (w, a)) = map (g ∘ pair w) (f (w, a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type
g: W * B -> G2 (T C)
f: W * A -> G1 B
w: W
a: A

map (g ∘ pair w) (f (w, a)) = map (g ∘ pair w) (f (w, a))
reflexivity. Qed.
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type

forall (g : W * B -> G2 (T C)) (f : W * A -> T B), g ⋆7 f = (fun '(w, a) => binddt (g ⦿ w) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type

forall (g : W * B -> G2 (T C)) (f : W * A -> T B), g ⋆7 f = (fun '(w, a) => binddt (g ⦿ w) (f (w, a)))
reflexivity. Qed.
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type

forall (g : W * B -> G2 (T C)) (f : W * A -> B), g ⋆7 ret ∘ f = g ⋆1 f
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type

forall (g : W * B -> G2 (T C)) (f : W * A -> B), g ⋆7 ret ∘ f = g ⋆1 f
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type
g: W * B -> G2 (T C)
f: W * A -> B

g ⋆7 ret ∘ f = g ⋆1 f
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type
g: W * B -> G2 (T C)
f: W * A -> B

(fun '(w, a) => map (binddt (g ⦿ w)) ((ret ∘ f) (w, a))) = g ⋆1 f
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type
g: W * B -> G2 (T C)
f: W * A -> B
w: W
a: A

map (binddt (g ⦿ w)) ((ret ∘ f) (w, a)) = (g ⋆1 f) (w, a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type
g: W * B -> G2 (T C)
f: W * A -> B
w: W
a: A

map (binddt (g ⦿ w)) (ret (f (w, a))) = (g ⋆1 f) (w, a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type
g: W * B -> G2 (T C)
f: W * A -> B
w: W
a: A

(map (binddt (g ⦿ w)) ∘ ret) (f (w, a)) = (g ⋆1 f) (w, a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type
g: W * B -> G2 (T C)
f: W * A -> B
w: W
a: A

(binddt (g ⦿ w) ∘ ret) (f (w, a)) = (g ⋆1 f) (w, a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type
g: W * B -> G2 (T C)
f: W * A -> B
w: W
a: A

(g ⦿ w ∘ ret) (f (w, a)) = (g ⋆1 f) (w, a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type
g: W * B -> G2 (T C)
f: W * A -> B
w: W
a: A

(g ∘ pair w) (f (w, a)) = (g ⋆1 f) (w, a)
reflexivity. Qed.
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type

forall (g : W * B -> G2 (T C)) (f : A -> G1 (T B)), g ⋆7 f ∘ extract = (fun '(w, a) => map (binddt (g ⦿ w)) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type

forall (g : W * B -> G2 (T C)) (f : A -> G1 (T B)), g ⋆7 f ∘ extract = (fun '(w, a) => map (binddt (g ⦿ w)) (f a))
solve_kc7. Qed.
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type

forall (g : W * B -> G2 (T C)) (f : A -> G1 B), g ⋆7 map ret ∘ f ∘ extract = (fun '(w, a) => map (g ∘ pair w) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type

forall (g : W * B -> G2 (T C)) (f : A -> G1 B), g ⋆7 map ret ∘ f ∘ extract = (fun '(w, a) => map (g ∘ pair w) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type
g: W * B -> G2 (T C)
f: A -> G1 B
w: W
a: A

map (binddt (g ⦿ w)) ((map ret ∘ f ∘ extract) (w, a)) = map (g ∘ pair w) (f a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type
g: W * B -> G2 (T C)
f: A -> G1 B
w: W
a: A

map (binddt (g ⦿ w)) (map ret (f a)) = map (g ○ pair w) (f a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type
g: W * B -> G2 (T C)
f: A -> G1 B
w: W
a: A

(map (binddt (g ⦿ w)) ∘ map ret) (f a) = map (g ○ pair w) (f a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type
g: W * B -> G2 (T C)
f: A -> G1 B
w: W
a: A

map (binddt (g ⦿ w) ∘ ret) (f a) = map (g ○ pair w) (f a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type
g: W * B -> G2 (T C)
f: A -> G1 B
w: W
a: A

map (g ⦿ w ∘ ret) (f a) = map (g ○ pair w) (f a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type
g: W * B -> G2 (T C)
f: A -> G1 B
w: W
a: A

map (g ∘ pair w) (f a) = map (g ○ pair w) (f a)
reflexivity. Qed.
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type

forall (g : W * B -> G2 (T C)) (f : A -> T B), g ⋆7 f ∘ extract = (fun '(w, a) => binddt (g ⦿ w) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type

forall (g : W * B -> G2 (T C)) (f : A -> T B), g ⋆7 f ∘ extract = (fun '(w, a) => binddt (g ⦿ w) (f a))
solve_kc7. Qed.
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type

forall (g : W * B -> G2 (T C)) (f : A -> B), g ⋆7 ret ∘ f ∘ extract = g ∘ map f
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type

forall (g : W * B -> G2 (T C)) (f : A -> B), g ⋆7 ret ∘ f ∘ extract = g ∘ map f
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type
g: W * B -> G2 (T C)
f: A -> B
w: W
a: A

binddt (g ⦿ w) ((ret ∘ f ∘ extract) (w, a)) = (g ∘ map f) (w, a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type
g: W * B -> G2 (T C)
f: A -> B
w: W
a: A

binddt (g ⦿ w) (ret (f a)) = g (id w, f a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type
g: W * B -> G2 (T C)
f: A -> B
w: W
a: A

(binddt (g ⦿ w) ∘ ret) (f a) = g (id w, f a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type
g: W * B -> G2 (T C)
f: A -> B
w: W
a: A

(binddt (g ⦿ w) ∘ ret) (f a) = g (id w, f a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type
g: W * B -> G2 (T C)
f: A -> B
w: W
a: A

(g ⦿ w ∘ ret) (f a) = g (id w, f a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type
g: W * B -> G2 (T C)
f: A -> B
w: W
a: A

(g ∘ pair w) (f a) = g (id w, f a)
reflexivity. Qed. (** *** Other lemmas *) (******************************************************************)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type

forall (g : W * B -> T C) (f : W * A -> G1 B), g ⋆7 map ret ∘ f = (fun '(w, a) => map (g ∘ pair w) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type

forall (g : W * B -> T C) (f : W * A -> G1 B), g ⋆7 map ret ∘ f = (fun '(w, a) => map (g ∘ pair w) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type
g: W * B -> T C
f: W * A -> G1 B
w: W
a: A

map (binddt (g ⦿ w)) ((map ret ∘ f) (w, a)) = map (g ∘ pair w) (f (w, a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type
g: W * B -> T C
f: W * A -> G1 B
w: W
a: A

map (binddt (g ⦿ w)) (map ret (f (w, a))) = map (g ○ pair w) (f (w, a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type
g: W * B -> T C
f: W * A -> G1 B
w: W
a: A

(map (binddt (g ⦿ w)) ∘ map ret) (f (w, a)) = map (g ○ pair w) (f (w, a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type
g: W * B -> T C
f: W * A -> G1 B
w: W
a: A

map (binddt (g ⦿ w) ∘ ret) (f (w, a)) = map (g ○ pair w) (f (w, a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type
g: W * B -> T C
f: W * A -> G1 B
w: W
a: A

map (g ⦿ w ∘ ret) (f (w, a)) = map (g ○ pair w) (f (w, a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type
g: W * B -> T C
f: W * A -> G1 B
w: W
a: A

map (g ∘ pair w) (f (w, a)) = map (g ○ pair w) (f (w, a))
reflexivity. Qed.
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type

forall (g : B -> G2 (T C)) (f : W * A -> G1 B), g ∘ extract ⋆7 map ret ∘ f = map g ∘ f
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type

forall (g : B -> G2 (T C)) (f : W * A -> G1 B), g ∘ extract ⋆7 map ret ∘ f = map g ∘ f
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type
g: B -> G2 (T C)
f: W * A -> G1 B
w: W
a: A

map (binddt ((g ∘ extract) ⦿ w)) ((map ret ∘ f) (w, a)) = (map g ∘ f) (w, a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type
g: B -> G2 (T C)
f: W * A -> G1 B
w: W
a: A

map (binddt ((g ○ extract) ⦿ w)) (map ret (f (w, a))) = map g (f (w, a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type
g: B -> G2 (T C)
f: W * A -> G1 B
w: W
a: A

(map (binddt ((g ○ extract) ⦿ w)) ∘ map ret) (f (w, a)) = map g (f (w, a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type
g: B -> G2 (T C)
f: W * A -> G1 B
w: W
a: A

map (binddt ((g ○ extract) ⦿ w) ∘ ret) (f (w, a)) = map g (f (w, a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type
g: B -> G2 (T C)
f: W * A -> G1 B
w: W
a: A

map ((g ○ extract) ⦿ w ∘ ret) (f (w, a)) = map g (f (w, a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H0: Applicative G2
A, B, C, D: Type
g: B -> G2 (T C)
f: W * A -> G1 B
w: W
a: A

map (g ○ extract ∘ pair w) (f (w, a)) = map g (f (w, a))
reflexivity. Qed. End kc7_special_cases. End derived_instances. (** ** Derived Composition Laws *) (**********************************************************************) Section other_composition_laws. Context `{op: Monoid_op W} `{unit: Monoid_unit W} `{ret_inst: Return T} `{Map_T_inst: Map T} `{Mapd_T_inst: Mapd W T} `{Traverse_T_inst: Traverse T} `{Bind_T_inst: Bind T T} `{Mapdt_T_inst: Mapdt W T} `{Bindd_T_inst: Bindd W T T} `{Bindt_T_inst: Bindt T T} `{Binddt_T_inst: Binddt W T T} `{! Compat_Map_Binddt W T T} `{! Compat_Mapd_Binddt W T T} `{! Compat_Traverse_Binddt W T T} `{! Compat_Bind_Binddt W T T} `{! Compat_Mapdt_Binddt W T T} `{! Compat_Bindd_Binddt W T T} `{! Compat_Bindt_Binddt W T T} `{Monad_inst: ! DecoratedTraversableMonad W T} `{Map_U_inst: Map U} `{Mapd_U_inst: Mapd W U} `{Traverse_U_inst: Traverse U} `{Bind_U_inst: Bind T U} `{Mapdt_U_inst: Mapdt W U} `{Bindd_U_inst: Bindd W T U} `{Bindt_U_inst: Bindt T U} `{Binddt_U_inst: Binddt W T U} `{! Compat_Map_Binddt W T U} `{! Compat_Mapd_Binddt W T U} `{! Compat_Traverse_Binddt W T U} `{! Compat_Bind_Binddt W T U} `{! Compat_Mapdt_Binddt W T U} `{! Compat_Bindd_Binddt W T U} `{! Compat_Bindt_Binddt W T U} `{Module_inst: ! DecoratedTraversableRightPreModule W T U}. (* Context {W: Type} {T: Type -> Type} `{Return_T: Return T} `{Map_T: Map T} `{Mapd_T: Mapd W T} `{Traverse_T: Traverse T} `{Bind_T: Bind T T} `{Mapdt_T: Mapdt W T} `{Bindd_T: Bindd W T T} `{Bindt_T: Bindt T T} `{Binddt_T: Binddt W T T} `{Monoid_unit_W: Monoid_unit W} `{Monoid_op_W: Monoid_op W} `{! DecoratedTraversableMonad W T} `{! Compat_Full_Binddt W T T}. Context {U: Type -> Type} `{Map_U: Map U} `{Mapd_U: Mapd W U} `{Traverse_U: Traverse U} `{Bind_U: Bind T U} `{Mapdt_U: Mapdt W U} `{Bindd_U: Bindd W T U} `{Bindt_U: Bindt T U} `{Binddt_U: Binddt W T U} `{! DecoratedTraversableRightModule W T U} `{! Compat_Full_Binddt W T U}. *) (** *** Homogeneous composition laws *) (********************************************************************) Section composition. Context {G1: Type -> Type} `{Map G1} `{Pure G1} `{Mult G1} `{! Applicative G1} {G2: Type -> Type} `{Map G2} `{Pure G2} `{Mult G2} `{! Applicative G2}. Variables (A B C: Type). (* composition_33 *)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type

forall (g : W * B -> G2 C) (f : W * A -> G1 B), map (mapdt g) ∘ mapdt f = mapdt (g ⋆3 f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type

forall (g : W * B -> G2 C) (f : W * A -> G1 B), map (mapdt g) ∘ mapdt f = mapdt (g ⋆3 f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 C
f: W * A -> G1 B

map (mapdt g) ∘ mapdt f = mapdt (g ⋆3 f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 C
f: W * A -> G1 B

map (binddt (map ret ∘ g)) ∘ binddt (map ret ∘ f) = mapdt (g ⋆3 f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 C
f: W * A -> G1 B

binddt (map ret ∘ g ⋆7 map ret ∘ f) = mapdt (g ⋆3 f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 C
f: W * A -> G1 B

binddt (map ret ∘ (g ⋆3 f)) = mapdt (g ⋆3 f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 C
f: W * A -> G1 B

mapdt (g ⋆3 f) = mapdt (g ⋆3 f)
reflexivity. Qed. (* composition_55 *)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type

forall (g : W * B -> T C) (f : W * A -> T B), bindd g ∘ bindd f = bindd (g ⋆5 f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type

forall (g : W * B -> T C) (f : W * A -> T B), bindd g ∘ bindd f = bindd (g ⋆5 f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> T C
f: W * A -> T B

bindd g ∘ bindd f = bindd (g ⋆5 f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> T C
f: W * A -> T B

binddt g ∘ binddt f = bindd (g ⋆5 f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> T C
f: W * A -> T B

map (binddt g) ∘ binddt f = bindd (g ⋆5 f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> T C
f: W * A -> T B

map (binddt g) ∘ binddt f = bindd (g ⋆5 f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> T C
f: W * A -> T B

binddt (g ⋆7 f) = bindd (g ⋆5 f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> T C
f: W * A -> T B

binddt (g ⋆7 f) = bindd (g ⋆5 f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> T C
f: W * A -> T B

binddt (g ⋆5 f) = bindd (g ⋆5 f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> T C
f: W * A -> T B

bindd (g ⋆5 f) = bindd (g ⋆5 f)
reflexivity. Qed. (* composition_44 *)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type

forall (g : W * B -> C) (f : W * A -> B), mapd g ∘ mapd f = mapd (g ∘ cobind f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type

forall (g : W * B -> C) (f : W * A -> B), mapd g ∘ mapd f = mapd (g ∘ cobind f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> C
f: W * A -> B

mapd g ∘ mapd f = mapd (g ∘ cobind f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> C
f: W * A -> B

binddt (ret ∘ g) ∘ binddt (ret ∘ f) = mapd (g ∘ cobind f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> C
f: W * A -> B

map (binddt (ret ∘ g)) ∘ binddt (ret ∘ f) = mapd (g ∘ cobind f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> C
f: W * A -> B

map (binddt (ret ∘ g)) ∘ binddt (ret ∘ f) = mapd (g ∘ cobind f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> C
f: W * A -> B

binddt (ret ∘ g ⋆7 ret ∘ f) = mapd (g ∘ cobind f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> C
f: W * A -> B

binddt (ret ∘ g ⋆7 ret ∘ f) = mapd (g ∘ cobind f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> C
f: W * A -> B

binddt (ret ∘ (g ⋆1 f)) = mapd (g ∘ cobind f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> C
f: W * A -> B

mapd (g ⋆1 f) = mapd (g ∘ cobind f)
reflexivity. Qed. (* composition_66 *)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type

forall (g : B -> G2 (T C)) (f : A -> G1 (T B)), map (bindt g) ∘ bindt f = bindt (g ⋆6 f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type

forall (g : B -> G2 (T C)) (f : A -> G1 (T B)), map (bindt g) ∘ bindt f = bindt (g ⋆6 f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: B -> G2 (T C)
f: A -> G1 (T B)

map (bindt g) ∘ bindt f = bindt (g ⋆6 f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: B -> G2 (T C)
f: A -> G1 (T B)

map (binddt (g ∘ extract)) ∘ binddt (f ∘ extract) = bindt (g ⋆6 f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: B -> G2 (T C)
f: A -> G1 (T B)

binddt (g ∘ extract ⋆7 f ∘ extract) = bindt (g ⋆6 f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: B -> G2 (T C)
f: A -> G1 (T B)

binddt ((g ⋆6 f) ∘ extract) = bindt (g ⋆6 f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: B -> G2 (T C)
f: A -> G1 (T B)

bindt (g ⋆6 f) = bindt (g ⋆6 f)
reflexivity. Qed. (* composition_22 *)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type

forall (g : B -> G2 C) (f : A -> G1 B), map (traverse g) ∘ traverse f = traverse (map g ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type

forall (g : B -> G2 C) (f : A -> G1 B), map (traverse g) ∘ traverse f = traverse (map g ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: B -> G2 C
f: A -> G1 B

map (traverse g) ∘ traverse f = traverse (map g ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: B -> G2 C
f: A -> G1 B

map (binddt (map ret ∘ g ∘ extract)) ∘ binddt (map ret ∘ f ∘ extract) = traverse (map g ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: B -> G2 C
f: A -> G1 B

binddt (map ret ∘ g ∘ extract ⋆7 map ret ∘ f ∘ extract) = traverse (map g ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: B -> G2 C
f: A -> G1 B

binddt ((ret ⋆2 map g ∘ f) ∘ extract) = traverse (map g ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: B -> G2 C
f: A -> G1 B

binddt (map ret ∘ (map g ∘ f) ∘ extract) = traverse (map g ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: B -> G2 C
f: A -> G1 B

traverse (map g ∘ f) = traverse (map g ∘ f)
reflexivity. Qed. (* composition_11 *)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type

forall (g : B -> T C) (f : A -> T B), bind g ∘ bind f = bind (g ⋆ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type

forall (g : B -> T C) (f : A -> T B), bind g ∘ bind f = bind (g ⋆ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: B -> T C
f: A -> T B

bind g ∘ bind f = bind (g ⋆ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: B -> T C
f: A -> T B

binddt (g ∘ extract) ∘ binddt (f ∘ extract) = bind (g ⋆ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: B -> T C
f: A -> T B

map (binddt (g ∘ extract)) ∘ binddt (f ∘ extract) = bind (g ⋆ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: B -> T C
f: A -> T B

map (binddt (g ∘ extract)) ∘ binddt (f ∘ extract) = bind (g ⋆ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: B -> T C
f: A -> T B

binddt (g ∘ extract ⋆7 f ∘ extract) = bind (g ⋆ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: B -> T C
f: A -> T B

binddt (g ∘ extract ⋆7 f ∘ extract) = bind (g ⋆ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: B -> T C
f: A -> T B

binddt ((g ⋆ f) ∘ extract) = bind (g ⋆ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: B -> T C
f: A -> T B

bind (g ⋆ f) = bind (g ⋆ f)
reflexivity. Qed. (* composition_00 *)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type

forall (f : A -> B) (g : B -> C), map g ∘ map f = map (g ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type

forall (f : A -> B) (g : B -> C), map g ∘ map f = map (g ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
f: A -> B
g: B -> C

map g ∘ map f = map (g ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
f: A -> B
g: B -> C

binddt (ret ∘ g ∘ extract) ∘ binddt (ret ∘ f ∘ extract) = map (g ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
f: A -> B
g: B -> C

map (binddt (ret ∘ g ∘ extract)) ∘ binddt (ret ∘ f ∘ extract) = map (g ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
f: A -> B
g: B -> C

map (binddt (ret ∘ g ∘ extract)) ∘ binddt (ret ∘ f ∘ extract) = map (g ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
f: A -> B
g: B -> C

binddt (ret ∘ g ∘ extract ⋆7 ret ∘ f ∘ extract) = map (g ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
f: A -> B
g: B -> C

binddt (ret ∘ g ∘ extract ⋆7 ret ∘ f ∘ extract) = map (g ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
f: A -> B
g: B -> C

binddt (ret ∘ g ∘ f ∘ extract) = map (g ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
f: A -> B
g: B -> C

binddt (ret ∘ (g ∘ f) ∘ extract) = map (g ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
f: A -> B
g: B -> C

map (g ∘ f) = map (g ∘ f)
reflexivity. Qed. (* End composition. Section composition_special_cases_top. Context `{Applicative G1} `{Applicative G2} {A B C: Type}. *) (** *** <<binddt>> on the right *) (******************************************************************) (* composition_67 *)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type

forall (g : W * B -> G2 C) (f : W * A -> G1 (T B)), map (mapdt g) ∘ binddt f = binddt (fun '(w, a) => map (mapdt (g ⦿ w)) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type

forall (g : W * B -> G2 C) (f : W * A -> G1 (T B)), map (mapdt g) ∘ binddt f = binddt (fun '(w, a) => map (mapdt (g ⦿ w)) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 C
f: W * A -> G1 (T B)

map (mapdt g) ∘ binddt f = binddt (fun '(w, a) => map (mapdt (g ⦿ w)) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 C
f: W * A -> G1 (T B)

map (binddt (map ret ∘ g)) ∘ binddt f = binddt (fun '(w, a) => map (mapdt (g ⦿ w)) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 C
f: W * A -> G1 (T B)

binddt (map ret ∘ g ⋆7 f) = binddt (fun '(w, a) => map (mapdt (g ⦿ w)) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 C
f: W * A -> G1 (T B)

binddt (fun '(w, a) => map (mapdt (g ⦿ w)) (f (w, a))) = binddt (fun '(w, a) => map (mapdt (g ⦿ w)) (f (w, a)))
reflexivity. Qed. (* composition_57 *)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type

forall (g : W * B -> T C) (f : W * A -> G1 (T B)), map (bindd g) ∘ binddt f = binddt (fun '(w, a) => map (bindd (g ⦿ w)) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type

forall (g : W * B -> T C) (f : W * A -> G1 (T B)), map (bindd g) ∘ binddt f = binddt (fun '(w, a) => map (bindd (g ⦿ w)) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> T C
f: W * A -> G1 (T B)

map (bindd g) ∘ binddt f = binddt (fun '(w, a) => map (bindd (g ⦿ w)) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> T C
f: W * A -> G1 (T B)

map (binddt g) ∘ binddt f = binddt (fun '(w, a) => map (bindd (g ⦿ w)) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> T C
f: W * A -> G1 (T B)

map (binddt g) ∘ binddt f = binddt (fun '(w, a) => map (binddt (g ⦿ w)) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> T C
f: W * A -> G1 (T B)

binddt (g ⋆7 f) = binddt (fun '(w, a) => map (binddt (g ⦿ w)) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> T C
f: W * A -> G1 (T B)

binddt (g ⋆7 f) = binddt (fun '(w, a) => map (binddt (g ⦿ w)) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> T C
f: W * A -> G1 (T B)

binddt (fun '(w, a) => map (binddt (g ⦿ w)) (f (w, a))) = binddt (fun '(w, a) => map (binddt (g ⦿ w)) (f (w, a)))
reflexivity. Qed. (* composition_47 *)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type

forall (g : W * B -> C) (f : W * A -> G1 (T B)), map (mapd g) ∘ binddt f = binddt (fun '(w, a) => map (mapd (g ⦿ w)) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type

forall (g : W * B -> C) (f : W * A -> G1 (T B)), map (mapd g) ∘ binddt f = binddt (fun '(w, a) => map (mapd (g ⦿ w)) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> C
f: W * A -> G1 (T B)

map (mapd g) ∘ binddt f = binddt (fun '(w, a) => map (mapd (g ⦿ w)) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> C
f: W * A -> G1 (T B)

map (binddt (ret ∘ g)) ∘ binddt f = binddt (fun '(w, a) => map (mapd (g ⦿ w)) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> C
f: W * A -> G1 (T B)

binddt (ret ∘ g ⋆7 f) = binddt (fun '(w, a) => map (mapd (g ⦿ w)) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> C
f: W * A -> G1 (T B)

binddt (ret ∘ g ⋆7 f) = binddt (fun '(w, a) => map (mapd (g ⦿ w)) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> C
f: W * A -> G1 (T B)

binddt (fun '(w, a) => map (mapd (g ⦿ w)) (f (w, a))) = binddt (fun '(w, a) => map (mapd (g ⦿ w)) (f (w, a)))
reflexivity. Qed. (* composition_67 *)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type

forall (g : B -> G2 (T C)) (f : W * A -> G1 (T B)), map (bindt g) ∘ binddt f = binddt (map (bindt g) ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type

forall (g : B -> G2 (T C)) (f : W * A -> G1 (T B)), map (bindt g) ∘ binddt f = binddt (map (bindt g) ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: B -> G2 (T C)
f: W * A -> G1 (T B)

map (bindt g) ∘ binddt f = binddt (map (bindt g) ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: B -> G2 (T C)
f: W * A -> G1 (T B)

map (binddt (g ∘ extract)) ∘ binddt f = binddt (map (bindt g) ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: B -> G2 (T C)
f: W * A -> G1 (T B)

binddt (g ∘ extract ⋆7 f) = binddt (map (bindt g) ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: B -> G2 (T C)
f: W * A -> G1 (T B)

binddt (g ⋆6 f) = binddt (map (bindt g) ∘ f)
reflexivity. Qed. (* composition_27 *)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type

forall (g : B -> G2 C) (f : W * A -> G1 (T B)), map (traverse g) ∘ binddt f = binddt (map (traverse g) ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type

forall (g : B -> G2 C) (f : W * A -> G1 (T B)), map (traverse g) ∘ binddt f = binddt (map (traverse g) ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: B -> G2 C
f: W * A -> G1 (T B)

map (traverse g) ∘ binddt f = binddt (map (traverse g) ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: B -> G2 C
f: W * A -> G1 (T B)

map (binddt (map ret ∘ g ∘ extract)) ∘ binddt f = binddt (map (traverse g) ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: B -> G2 C
f: W * A -> G1 (T B)

binddt (map ret ∘ g ∘ extract ⋆7 f) = binddt (map (traverse g) ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: B -> G2 C
f: W * A -> G1 (T B)

binddt (map (traverse g) ∘ f) = binddt (map (traverse g) ∘ f)
reflexivity. Qed. (* composition_17 *)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type

forall (g : B -> T C) (f : W * A -> G1 (T B)), map (bind g) ∘ binddt f = binddt (map (bind g) ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type

forall (g : B -> T C) (f : W * A -> G1 (T B)), map (bind g) ∘ binddt f = binddt (map (bind g) ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: B -> T C
f: W * A -> G1 (T B)

map (bind g) ∘ binddt f = binddt (map (bind g) ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: B -> T C
f: W * A -> G1 (T B)

map (binddt (g ∘ extract)) ∘ binddt f = binddt (map (bind g) ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: B -> T C
f: W * A -> G1 (T B)

binddt (g ∘ extract ⋆7 f) = binddt (map (bind g) ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: B -> T C
f: W * A -> G1 (T B)

binddt (map (bind g) ∘ f) = binddt (map (bind g) ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: B -> T C
f: W * A -> G1 (T B)

binddt (map (bind g) ∘ f) = binddt (map (bind g) ∘ f)
reflexivity. Qed. (* composition_07 *)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type

forall (g : B -> C) (f : W * A -> G1 (T B)), map (map g) ∘ binddt f = binddt (map (map g) ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type

forall (g : B -> C) (f : W * A -> G1 (T B)), map (map g) ∘ binddt f = binddt (map (map g) ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: B -> C
f: W * A -> G1 (T B)

map (map g) ∘ binddt f = binddt (map (map g) ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: B -> C
f: W * A -> G1 (T B)

map (binddt (ret ∘ g ∘ extract)) ∘ binddt f = binddt (map (map g) ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: B -> C
f: W * A -> G1 (T B)

binddt (ret ∘ g ∘ extract ⋆7 f) = binddt (map (map g) ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: B -> C
f: W * A -> G1 (T B)

binddt (map (map g) ∘ f) = binddt (map (map g) ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: B -> C
f: W * A -> G1 (T B)

binddt (map (map g) ∘ f) = binddt (map (map g) ∘ f)
reflexivity. Qed. (** *** <<binddt>> on the left *) (******************************************************************) (* composition_73 *)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type

forall (g : W * B -> G2 (T C)) (f : W * A -> G1 B), map (binddt g) ∘ mapdt f = binddt (fun '(w, a) => map (g ○ pair w) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type

forall (g : W * B -> G2 (T C)) (f : W * A -> G1 B), map (binddt g) ∘ mapdt f = binddt (fun '(w, a) => map (g ○ pair w) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 (T C)
f: W * A -> G1 B

map (binddt g) ∘ mapdt f = binddt (fun '(w, a) => map (g ○ pair w) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 (T C)
f: W * A -> G1 B

map (binddt g) ∘ binddt (map ret ∘ f) = binddt (fun '(w, a) => map (g ○ pair w) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 (T C)
f: W * A -> G1 B

binddt (g ⋆7 map ret ∘ f) = binddt (fun '(w, a) => map (g ○ pair w) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 (T C)
f: W * A -> G1 B

binddt (g ⋆3 f) = binddt (fun '(w, a) => map (g ○ pair w) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 (T C)
f: W * A -> G1 B

binddt (fun '(w, a) => map (g ∘ pair w) (f (w, a))) = binddt (fun '(w, a) => map (g ○ pair w) (f (w, a)))
reflexivity. Qed. (* composition_75 *)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type

forall (g : W * B -> G2 (T C)) (f : W * A -> T B), binddt g ∘ bindd f = binddt (fun '(w, a) => binddt (g ⦿ w) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type

forall (g : W * B -> G2 (T C)) (f : W * A -> T B), binddt g ∘ bindd f = binddt (fun '(w, a) => binddt (g ⦿ w) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 (T C)
f: W * A -> T B

binddt g ∘ bindd f = binddt (fun '(w, a) => binddt (g ⦿ w) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 (T C)
f: W * A -> T B

binddt g ∘ binddt f = binddt (fun '(w, a) => binddt (g ⦿ w) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 (T C)
f: W * A -> T B

map (binddt g) ∘ binddt f = binddt (fun '(w, a) => binddt (g ⦿ w) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 (T C)
f: W * A -> T B

binddt (g ⋆7 f) = binddt (fun '(w, a) => binddt (g ⦿ w) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 (T C)
f: W * A -> T B

binddt (g ⋆7 f) = binddt (fun '(w, a) => binddt (g ⦿ w) (f (w, a)))
reflexivity. Qed. (* composition_74 *)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type

forall (g : W * B -> G2 (T C)) (f : W * A -> B), binddt g ∘ mapd f = binddt (g ⋆1 f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type

forall (g : W * B -> G2 (T C)) (f : W * A -> B), binddt g ∘ mapd f = binddt (g ⋆1 f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 (T C)
f: W * A -> B

binddt g ∘ mapd f = binddt (g ⋆1 f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 (T C)
f: W * A -> B

binddt g ∘ binddt (ret ∘ f) = binddt (g ⋆1 f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 (T C)
f: W * A -> B

map (binddt g) ∘ binddt (ret ∘ f) = binddt (g ⋆1 f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 (T C)
f: W * A -> B

binddt (g ⋆7 ret ∘ f) = binddt (g ⋆1 f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 (T C)
f: W * A -> B

binddt (g ⋆1 f) = binddt (g ⋆1 f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 (T C)
f: W * A -> B

binddt (g ⋆1 f) = binddt (g ⋆1 f)
reflexivity. Qed. (* composition_76 *)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type

forall (g : W * B -> G2 (T C)) (f : A -> G1 (T B)), map (binddt g) ∘ bindt f = binddt (fun '(w, a) => map (binddt (g ⦿ w)) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type

forall (g : W * B -> G2 (T C)) (f : A -> G1 (T B)), map (binddt g) ∘ bindt f = binddt (fun '(w, a) => map (binddt (g ⦿ w)) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 (T C)
f: A -> G1 (T B)

map (binddt g) ∘ bindt f = binddt (fun '(w, a) => map (binddt (g ⦿ w)) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 (T C)
f: A -> G1 (T B)

map (binddt g) ∘ binddt (f ∘ extract) = binddt (fun '(w, a) => map (binddt (g ⦿ w)) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 (T C)
f: A -> G1 (T B)

binddt (g ⋆7 f ∘ extract) = binddt (fun '(w, a) => map (binddt (g ⦿ w)) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 (T C)
f: A -> G1 (T B)

binddt (fun '(w, a) => map (binddt (g ⦿ w)) (f a)) = binddt (fun '(w, a) => map (binddt (g ⦿ w)) (f a))
reflexivity. Qed. (* composition_72 *)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type

forall (g : W * B -> G2 (T C)) (f : A -> G1 B), map (binddt g) ∘ traverse f = binddt (fun '(w, a) => map (g ○ pair w) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type

forall (g : W * B -> G2 (T C)) (f : A -> G1 B), map (binddt g) ∘ traverse f = binddt (fun '(w, a) => map (g ○ pair w) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 (T C)
f: A -> G1 B

map (binddt g) ∘ traverse f = binddt (fun '(w, a) => map (g ○ pair w) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 (T C)
f: A -> G1 B

map (binddt g) ∘ binddt (map ret ∘ f ∘ extract) = binddt (fun '(w, a) => map (g ○ pair w) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 (T C)
f: A -> G1 B

binddt (g ⋆7 map ret ∘ f ∘ extract) = binddt (fun '(w, a) => map (g ○ pair w) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 (T C)
f: A -> G1 B

binddt (fun '(w, a) => map (g ∘ pair w) (f a)) = binddt (fun '(w, a) => map (g ○ pair w) (f a))
reflexivity. Qed. (* composition_71 *)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type

forall (g : W * B -> G2 (T C)) (f : A -> T B), binddt g ∘ bind f = binddt (fun '(w, a) => binddt (g ⦿ w) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type

forall (g : W * B -> G2 (T C)) (f : A -> T B), binddt g ∘ bind f = binddt (fun '(w, a) => binddt (g ⦿ w) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 (T C)
f: A -> T B

binddt g ∘ bind f = binddt (fun '(w, a) => binddt (g ⦿ w) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 (T C)
f: A -> T B

binddt g ∘ binddt (f ∘ extract) = binddt (fun '(w, a) => binddt (g ⦿ w) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 (T C)
f: A -> T B

map (binddt g) ∘ binddt (f ∘ extract) = binddt (fun '(w, a) => binddt (g ⦿ w) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 (T C)
f: A -> T B

binddt (g ⋆7 f ∘ extract) = binddt (fun '(w, a) => binddt (g ⦿ w) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 (T C)
f: A -> T B

binddt (g ⋆7 f ∘ extract) = binddt (fun '(w, a) => binddt (g ⦿ w) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 (T C)
f: A -> T B

binddt (fun '(w, a) => binddt (g ⦿ w) (f a)) = binddt (fun '(w, a) => binddt (g ⦿ w) (f a))
reflexivity. Qed. (* composition_70 *)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type

forall (g : W * B -> G2 (T C)) (f : A -> B), binddt g ∘ map f = binddt (g ∘ map f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type

forall (g : W * B -> G2 (T C)) (f : A -> B), binddt g ∘ map f = binddt (g ∘ map f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 (T C)
f: A -> B

binddt g ∘ map f = binddt (g ∘ map f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 (T C)
f: A -> B

binddt g ∘ binddt (ret ∘ f ∘ extract) = binddt (g ∘ map f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 (T C)
f: A -> B

map (binddt g) ∘ binddt (ret ∘ f ∘ extract) = binddt (g ∘ map f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 (T C)
f: A -> B

binddt (g ⋆7 ret ∘ f ∘ extract) = binddt (g ∘ map f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 (T C)
f: A -> B

binddt (g ⋆7 ret ∘ f ∘ extract) = binddt (g ∘ map f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
H: Map G1
H0: Pure G1
H1: Mult G1
Applicative0: Applicative G1
G2: Type -> Type
H2: Map G2
H3: Pure G2
H4: Mult G2
Applicative1: Applicative G2
A, B, C: Type
g: W * B -> G2 (T C)
f: A -> B

binddt (g ∘ map f) = binddt (g ∘ map f)
reflexivity. Qed. End composition. Section composition_special_cases_middle. Context `{Applicative G1} `{Applicative G2} {A B C: Type}. (** *** <<bindd>>, <<mapdt>>, <<bindt>> *) (******************************************************************) (* composition_56 *)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 : W * B -> T C) (f : W * A -> G1 B), map (bindd g) ∘ mapdt f = binddt (fun '(w, a) => map (g ∘ pair w) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 : W * B -> T C) (f : W * A -> G1 B), map (bindd g) ∘ mapdt f = binddt (fun '(w, a) => map (g ∘ pair w) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> T C
f: W * A -> G1 B

map (bindd g) ∘ mapdt f = binddt (fun '(w, a) => map (g ∘ pair w) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> T C
f: W * A -> G1 B

map (binddt g) ∘ mapdt f = binddt (fun '(w, a) => map (g ∘ pair w) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> T C
f: W * A -> G1 B

binddt (fun '(w, a) => map (g ○ pair w) (f (w, a))) = binddt (fun '(w, a) => map (g ∘ pair w) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> T C
f: W * A -> G1 B

binddt (fun '(w, a) => map (g ○ pair w) (f (w, a))) = binddt (fun '(w, a) => map (g ∘ pair w) (f (w, a)))
reflexivity. Qed. (* composition_65 *)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 : W * B -> G2 C) (f : W * A -> T B), mapdt g ∘ bindd f = binddt (fun '(w, a) => mapdt (g ⦿ w) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 : W * B -> G2 C) (f : W * A -> T B), mapdt g ∘ bindd f = binddt (fun '(w, a) => mapdt (g ⦿ w) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> G2 C
f: W * A -> T B

mapdt g ∘ bindd f = binddt (fun '(w, a) => mapdt (g ⦿ w) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> G2 C
f: W * A -> T B

binddt (map ret ∘ g) ∘ bindd f = binddt (fun '(w, a) => mapdt (g ⦿ w) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> G2 C
f: W * A -> T B

binddt (fun '(w, a) => binddt ((map ret ∘ g) ⦿ w) (f (w, a))) = binddt (fun '(w, a) => mapdt (g ⦿ w) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> G2 C
f: W * A -> T B

(fun '(w, a) => binddt ((map ret ∘ g) ⦿ w) (f (w, a))) = (fun '(w, a) => mapdt (g ⦿ w) (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> G2 C
f: W * A -> T B
w: W
a: A

binddt ((map ret ∘ g) ⦿ w) (f (w, a)) = mapdt (g ⦿ w) (f (w, a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> G2 C
f: W * A -> T B
w: W
a: A

binddt ((map ret ∘ g) ⦿ w) (f (w, a)) = binddt (map ret ∘ g ⦿ w) (f (w, a))
reflexivity. Qed. (* composition_65 *)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 (T C)) (f : W * A -> T B), bindt g ∘ bindd f = binddt (bindt g ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 (T C)) (f : W * A -> T B), bindt g ∘ bindd f = binddt (bindt g ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 (T C)
f: W * A -> T B

bindt g ∘ bindd f = binddt (bindt g ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 (T C)
f: W * A -> T B

binddt (g ∘ extract) ∘ bindd f = binddt (bindt g ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 (T C)
f: W * A -> T B

binddt (g ∘ extract) ∘ bindd f = binddt (binddt (g ∘ extract) ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 (T C)
f: W * A -> T B

binddt (fun '(w, a) => binddt ((g ∘ extract) ⦿ w) (f (w, a))) = binddt (binddt (g ∘ extract) ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 (T C)
f: W * A -> T B

binddt (fun '(w, a) => binddt ((g ∘ extract) ⦿ w) (f (w, a))) = binddt (binddt (g ∘ extract) ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 (T C)
f: W * A -> T B

(fun '(w, a) => binddt ((g ∘ extract) ⦿ w) (f (w, a))) = binddt (g ∘ extract) ∘ f
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 (T C)
f: W * A -> T B
w: W
a: A

binddt ((g ∘ extract) ⦿ w) (f (w, a)) = (binddt (g ∘ extract) ∘ f) (w, a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 (T C)
f: W * A -> T B
w: W
a: A

binddt (g ∘ extract) (f (w, a)) = (binddt (g ∘ extract) ∘ f) (w, a)
reflexivity. Qed. (* composition_56 *)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 : W * B -> T C) (f : A -> G1 (T B)), map (bindd g) ∘ bindt f = binddt (fun '(w, a) => map (bindd (g ⦿ w)) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 : W * B -> T C) (f : A -> G1 (T B)), map (bindd g) ∘ bindt f = binddt (fun '(w, a) => map (bindd (g ⦿ w)) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> T C
f: A -> G1 (T B)

map (bindd g) ∘ bindt f = binddt (fun '(w, a) => map (bindd (g ⦿ w)) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> T C
f: A -> G1 (T B)

map (binddt g) ∘ bindt f = binddt (fun '(w, a) => map (bindd (g ⦿ w)) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> T C
f: A -> G1 (T B)

map (binddt g) ∘ binddt (f ∘ extract) = binddt (fun '(w, a) => map (bindd (g ⦿ w)) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> T C
f: A -> G1 (T B)

binddt (g ⋆7 f ∘ extract) = binddt (fun '(w, a) => map (bindd (g ⦿ w)) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> T C
f: A -> G1 (T B)

binddt (fun '(w, a) => map (binddt (g ⦿ w)) ((f ∘ extract) (w, a))) = binddt (fun '(w, a) => map (bindd (g ⦿ w)) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> T C
f: A -> G1 (T B)

binddt (fun '(w, a) => map (binddt (g ⦿ w)) ((f ∘ extract) (w, a))) = binddt (fun '(w, a) => map (bindd (g ⦿ w)) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> T C
f: A -> G1 (T B)

binddt (fun '(w, a) => map (binddt (g ⦿ w)) ((f ∘ extract) (w, a))) = binddt (fun '(w, a) => map (binddt (g ⦿ w)) (f a))
reflexivity. Qed.
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 : W * B -> G2 C) (f : A -> G1 (T B)), map (mapdt g) ∘ bindt f = binddt (fun '(w, a) => map (mapdt (g ⦿ w)) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 : W * B -> G2 C) (f : A -> G1 (T B)), map (mapdt g) ∘ bindt f = binddt (fun '(w, a) => map (mapdt (g ⦿ w)) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> G2 C
f: A -> G1 (T B)

map (mapdt g) ∘ bindt f = binddt (fun '(w, a) => map (mapdt (g ⦿ w)) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> G2 C
f: A -> G1 (T B)

map (binddt (map ret ∘ g)) ∘ bindt f = binddt (fun '(w, a) => map (mapdt (g ⦿ w)) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> G2 C
f: A -> G1 (T B)

map (binddt (map ret ∘ g)) ∘ binddt (f ∘ extract) = binddt (fun '(w, a) => map (mapdt (g ⦿ w)) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> G2 C
f: A -> G1 (T B)

binddt (map ret ∘ g ⋆7 f ∘ extract) = binddt (fun '(w, a) => map (mapdt (g ⦿ w)) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> G2 C
f: A -> G1 (T B)

binddt (fun '(w, a) => map (binddt ((map ret ∘ g) ⦿ w)) (f a)) = binddt (fun '(w, a) => map (mapdt (g ⦿ w)) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> G2 C
f: A -> G1 (T B)

binddt (fun '(w, a) => map (binddt ((map ret ∘ g) ⦿ w)) (f a)) = binddt (fun '(w, a) => map (mapdt (g ⦿ w)) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> G2 C
f: A -> G1 (T B)

binddt (fun '(w, a) => map (binddt ((map ret ∘ g) ⦿ w)) (f a)) = binddt (fun '(w, a) => map (DerivedOperations.Mapdt_Binddt W T T G2 Map_G0 Pure_G0 Mult_G0 B C (g ⦿ w)) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> G2 C
f: A -> G1 (T B)

binddt (fun '(w, a) => map (binddt ((map ret ∘ g) ⦿ w)) (f a)) = binddt (fun '(w, a) => map (binddt (map ret ∘ g ⦿ w)) (f a))
reflexivity. Qed.
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 (T C)) (f : W * A -> G1 B), map (bindt g) ∘ mapdt f = binddt (map g ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 (T C)) (f : W * A -> G1 B), map (bindt g) ∘ mapdt f = binddt (map g ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 (T C)
f: W * A -> G1 B

map (bindt g) ∘ mapdt f = binddt (map g ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 (T C)
f: W * A -> G1 B

map (bindt g) ∘ binddt (map ret ∘ f) = binddt (map g ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 (T C)
f: W * A -> G1 B

map (binddt (g ∘ extract)) ∘ binddt (map ret ∘ f) = binddt (map g ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 (T C)
f: W * A -> G1 B

binddt (g ∘ extract ⋆7 map ret ∘ f) = binddt (map g ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 (T C)
f: W * A -> G1 B

binddt (map g ∘ f) = binddt (map g ∘ f)
reflexivity. Qed. End composition_special_cases_middle. (* The lemmas below can cite the ones above *) Section composition_special_cases_bottom. Context `{Applicative G1} `{Applicative G2} {A B C: Type}. (** *** <<bindd>> on the right *) (******************************************************************) (* composition_25 *)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 : W * A -> T B), traverse g ∘ bindd f = binddt (fun '(w, a) => traverse g (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 : W * A -> T B), traverse g ∘ bindd f = binddt (fun '(w, a) => traverse g (f (w, a)))
(* TODO Use traverse_to_bindt to solve simpler *)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * A -> T B

traverse g ∘ bindd f = binddt (fun '(w, a) => traverse g (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * A -> T B

binddt (map ret ∘ g ∘ extract) ∘ bindd f = binddt (fun '(w, a) => traverse g (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * A -> T B

binddt (map ret ∘ g ∘ extract) ∘ binddt f = binddt (fun '(w, a) => traverse g (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * A -> T B

map (binddt (map ret ∘ g ∘ extract)) ∘ binddt f = binddt (fun '(w, a) => traverse g (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * A -> T B

binddt (map ret ∘ g ∘ extract ⋆7 f) = binddt (fun '(w, a) => traverse g (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * A -> T B

binddt (map ret ∘ g ∘ extract ⋆7 f) = binddt (fun '(w, a) => traverse g (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * A -> T B

map ret ∘ g ∘ extract ⋆7 f = (fun '(w, a) => traverse g (f (w, a)))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * A -> T B
w: W
a: A

(map ret ∘ g ∘ extract ⋆7 f) (w, a) = traverse g (f (w, a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * A -> T B
w: W
a: A

map (binddt ((map ret ∘ g ∘ extract) ⦿ w)) (f (w, a)) = traverse g (f (w, a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * A -> T B
w: W
a: A

map (binddt (map ret ∘ g ∘ extract ⦿ w)) (f (w, a)) = traverse g (f (w, a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * A -> T B
w: W
a: A

map (binddt (map ret ∘ g ∘ extract)) (f (w, a)) = traverse g (f (w, a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * A -> T B
w: W
a: A

map (binddt (map ret ∘ g ∘ extract)) (f (w, a)) = binddt (map ret ∘ g ∘ extract) (f (w, a))
reflexivity. Qed. (* composition_52 *) (* TODO bindd_traverse *) (* composition_46 *)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 : W * B -> C) (f : A -> G1 (T B)), map (mapd g) ∘ bindt f = binddt (fun '(w, a) => map (mapd (g ⦿ w)) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 : W * B -> C) (f : A -> G1 (T B)), map (mapd g) ∘ bindt f = binddt (fun '(w, a) => map (mapd (g ⦿ w)) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> C
f: A -> G1 (T B)

map (mapd g) ∘ bindt f = binddt (fun '(w, a) => map (mapd (g ⦿ w)) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> C
f: A -> G1 (T B)

map (mapdt g) ∘ bindt f = binddt (fun '(w, a) => map (mapd (g ⦿ w)) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> C
f: A -> G1 (T B)

binddt (fun '(w, a) => map (mapdt (g ⦿ w)) (f a)) = binddt (fun '(w, a) => map (mapd (g ⦿ w)) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> C
f: A -> G1 (T B)

binddt (fun '(w, a) => map (mapdt (g ⦿ w)) (f a)) = binddt (fun '(w, a) => map (mapd (g ⦿ w)) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> C
f: A -> G1 (T B)

(fun '(w, a) => map (mapdt (g ⦿ w)) (f a)) = (fun '(w, a) => map (mapd (g ⦿ w)) (f a))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> C
f: A -> G1 (T B)
w: W
a: A

map (mapdt (g ⦿ w)) (f a) = map (mapd (g ⦿ w)) (f a)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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: W * B -> C
f: A -> G1 (T B)
w: W
a: A

map (mapdt (g ⦿ w)) (f a) = map (mapdt (g ⦿ w)) (f a)
reflexivity. Qed. (* composition_64 *) (* TODO bindt_mapd *) (* composition_16 *) (* TODO bind_mapdt *) (* composition_61 *) (* TODO mapdt_bind *) End composition_special_cases_bottom. End other_composition_laws. (** ** Derived Identity/<<ret>>/Appl. Homomorphism Laws *) (**********************************************************************) Section derived_instances. Context `{op: Monoid_op W} `{unit: Monoid_unit W} `{ret_inst: Return T} `{Map_T_inst: Map T} `{Mapd_T_inst: Mapd W T} `{Traverse_T_inst: Traverse T} `{Bind_T_inst: Bind T T} `{Mapdt_T_inst: Mapdt W T} `{Bindd_T_inst: Bindd W T T} `{Bindt_T_inst: Bindt T T} `{Binddt_T_inst: Binddt W T T} `{! Compat_Map_Binddt W T T} `{! Compat_Mapd_Binddt W T T} `{! Compat_Traverse_Binddt W T T} `{! Compat_Bind_Binddt W T T} `{! Compat_Mapdt_Binddt W T T} `{! Compat_Bindd_Binddt W T T} `{! Compat_Bindt_Binddt W T T} `{Monad_inst: ! DecoratedTraversableMonad W T} `{Map_U_inst: Map U} `{Mapd_U_inst: Mapd W U} `{Traverse_U_inst: Traverse U} `{Bind_U_inst: Bind T U} `{Mapdt_U_inst: Mapdt W U} `{Bindd_U_inst: Bindd W T U} `{Bindt_U_inst: Bindt T U} `{Binddt_U_inst: Binddt W T U} `{! Compat_Map_Binddt W T U} `{! Compat_Mapd_Binddt W T U} `{! Compat_Traverse_Binddt W T U} `{! Compat_Bind_Binddt W T U} `{! Compat_Mapdt_Binddt W T U} `{! Compat_Bindd_Binddt W T U} `{! Compat_Bindt_Binddt W T U} `{Module_inst: ! DecoratedTraversableRightPreModule W T U}. (** *** <<binddt>> purity *) (********************************************************************)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U

forall (A : Type) (G : Type -> Type) (Map_G : Map G) (Pure_G : Pure G) (Mult_G : Mult G), Applicative G -> binddt (pure ∘ ret ∘ extract) = pure
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U

forall (A : Type) (G : Type -> Type) (Map_G : Map G) (Pure_G : Pure G) (Mult_G : Mult G), Applicative G -> binddt (pure ∘ ret ∘ extract) = pure
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A: Type
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G

binddt (pure ∘ ret ∘ extract) = pure
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A: Type
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G

binddt (pure ∘ (ret ∘ extract)) = pure
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A: Type
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G

pure ∘ binddt (ret ∘ extract) = pure
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A: Type
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G

pure ∘ id = pure
reflexivity. Qed. (** *** Identity laws *) (********************************************************************)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U

forall A : Type, bindd (ret ∘ extract) = id
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U

forall A : Type, bindd (ret ∘ extract) = id
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A: Type

bindd (ret ∘ extract) = id
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A: Type

binddt (ret ∘ extract) = id
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A: Type

id = id
reflexivity. Qed.
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U

forall A : Type, bindt ret = id
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U

forall A : Type, bindt ret = id
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A: Type

bindt ret = id
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A: Type

binddt (ret ∘ extract) = id
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A: Type

id = id
reflexivity. Qed.
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U

forall A : Type, mapdt extract = id
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U

forall A : Type, mapdt extract = id
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A: Type

mapdt extract = id
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A: Type

binddt (map ret ∘ extract) = id
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A: Type

binddt (ret ∘ extract) = id
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A: Type

id = id
reflexivity. Qed.
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U

forall A : Type, mapd extract = id
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U

forall A : Type, mapd extract = id
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A: Type

mapd extract = id
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A: Type

binddt (ret ∘ extract) = id
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A: Type

id = id
reflexivity. Qed.
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U

forall A : Type, traverse id = id
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U

forall A : Type, traverse id = id
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A: Type

traverse id = id
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A: Type

binddt (map ret ∘ id ∘ extract) = id
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A: Type

binddt (map ret ∘ extract) = id
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A: Type

binddt (ret ∘ extract) = id
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A: Type

id = id
reflexivity. Qed.
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U

forall A : Type, bind ret = id
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U

forall A : Type, bind ret = id
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A: Type

bind ret = id
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A: Type

binddt (ret ∘ extract) = id
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A: Type

id = id
reflexivity. Qed.
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U

forall A : Type, map id = id
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U

forall A : Type, map id = id
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A: Type

map id = id
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A: Type

binddt (ret ∘ id ∘ extract) = id
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A: Type

binddt (ret ∘ extract) = id
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A: Type

id = id
reflexivity. Qed. (** *** Composition with <<ret>> *) (********************************************************************)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U

forall (A B : Type) (f : W * A -> T B), bindd f ∘ ret = f ∘ ret
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U

forall (A B : Type) (f : W * A -> T B), bindd f ∘ ret = f ∘ ret
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A, B: Type
f: W * A -> T B

bindd f ∘ ret = f ∘ ret
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A, B: Type
f: W * A -> T B

binddt f ∘ ret = f ∘ ret
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A, B: Type
f: W * A -> T B

f ∘ ret = f ∘ ret
reflexivity. Qed.
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U

forall (G : Type -> Type) (Map_G : Map G) (Pure_G : Pure G) (Mult_G : Mult G), Applicative G -> forall (A B : Type) (f : A -> G (T B)), bindt f ∘ ret = f
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U

forall (G : Type -> Type) (Map_G : Map G) (Pure_G : Pure G) (Mult_G : Mult G), Applicative G -> forall (A B : Type) (f : A -> G (T B)), bindt f ∘ ret = f
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B: Type
f: A -> G (T B)

bindt f ∘ ret = f
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B: Type
f: A -> G (T B)

binddt (f ∘ extract) ∘ ret = f
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B: Type
f: A -> G (T B)

f ∘ extract ∘ ret = f
reflexivity. Qed.
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U

forall (G : Type -> Type) (Map_G : Map G) (Pure_G : Pure G) (Mult_G : Mult G), Applicative G -> forall (A B : Type) (f : A -> G B), traverse f ∘ ret = map ret ∘ f
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U

forall (G : Type -> Type) (Map_G : Map G) (Pure_G : Pure G) (Mult_G : Mult G), Applicative G -> forall (A B : Type) (f : A -> G B), traverse f ∘ ret = map ret ∘ f
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B: Type
f: A -> G B

traverse f ∘ ret = map ret ∘ f
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B: Type
f: A -> G B

binddt (map ret ∘ f ∘ extract) ∘ ret = map ret ∘ f
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B: Type
f: A -> G B

map ret ∘ f ∘ extract ∘ ret = map ret ∘ f
reflexivity. Qed.
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U

forall (A B : Type) (f : A -> T B), bind f ∘ ret = f
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U

forall (A B : Type) (f : A -> T B), bind f ∘ ret = f
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A, B: Type
f: A -> T B

bind f ∘ ret = f
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A, B: Type
f: A -> T B

binddt (f ∘ extract) ∘ ret = f
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A, B: Type
f: A -> T B

f ∘ extract ∘ ret = f
reflexivity. Qed. (** *** Naturality in Applicative Morphisms *) (********************************************************************) Section applicative_morphisms. Context (G1 G2: Type -> Type) `{Map G1} `{Mult G1} `{Pure G1} `{Map G2} `{Mult G2} `{Pure G2} (ϕ: forall A: Type, G1 A -> G2 A) `{morph: ! ApplicativeMorphism G1 G2 ϕ }.
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
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
morph: ApplicativeMorphism G1 G2 ϕ

forall (A B : Type) (f : A -> G1 (T B)), ϕ (U B) ∘ bindt f = bindt (ϕ (T B) ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
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
morph: ApplicativeMorphism G1 G2 ϕ

forall (A B : Type) (f : A -> G1 (T B)), ϕ (U B) ∘ bindt f = bindt (ϕ (T B) ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
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
morph: ApplicativeMorphism G1 G2 ϕ
A, B: Type
f: A -> G1 (T B)

ϕ (U B) ∘ bindt f = bindt (ϕ (T B) ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
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
morph: ApplicativeMorphism G1 G2 ϕ
A, B: Type
f: A -> G1 (T B)
appmor_app_F: Applicative G1
appmor_app_G: Applicative G2
appmor_natural: forall (A B : Type) (f : A -> B) (x : G1 A), ϕ B (map f x) = map f (ϕ A x)
appmor_pure: forall (A : Type) (a : A), ϕ A (pure a) = pure a
appmor_mult: forall (A B : Type) (x : G1 A) (y : G1 B), ϕ (A * B) (mult (x, y)) = mult (ϕ A x, ϕ B y)

ϕ (U B) ∘ bindt f = bindt (ϕ (T B) ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
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
morph: ApplicativeMorphism G1 G2 ϕ
A, B: Type
f: A -> G1 (T B)
appmor_app_F: Applicative G1
appmor_app_G: Applicative G2
appmor_natural: forall (A B : Type) (f : A -> B) (x : G1 A), ϕ B (map f x) = map f (ϕ A x)
appmor_pure: forall (A : Type) (a : A), ϕ A (pure a) = pure a
appmor_mult: forall (A B : Type) (x : G1 A) (y : G1 B), ϕ (A * B) (mult (x, y)) = mult (ϕ A x, ϕ B y)

ϕ (U B) ∘ binddt (f ∘ extract) = bindt (ϕ (T B) ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
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
morph: ApplicativeMorphism G1 G2 ϕ
A, B: Type
f: A -> G1 (T B)
appmor_app_F: Applicative G1
appmor_app_G: Applicative G2
appmor_natural: forall (A B : Type) (f : A -> B) (x : G1 A), ϕ B (map f x) = map f (ϕ A x)
appmor_pure: forall (A : Type) (a : A), ϕ A (pure a) = pure a
appmor_mult: forall (A B : Type) (x : G1 A) (y : G1 B), ϕ (A * B) (mult (x, y)) = mult (ϕ A x, ϕ B y)

binddt (ϕ (T B) ∘ (f ∘ extract)) = bindt (ϕ (T B) ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
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
morph: ApplicativeMorphism G1 G2 ϕ
A, B: Type
f: A -> G1 (T B)
appmor_app_F: Applicative G1
appmor_app_G: Applicative G2
appmor_natural: forall (A B : Type) (f : A -> B) (x : G1 A), ϕ B (map f x) = map f (ϕ A x)
appmor_pure: forall (A : Type) (a : A), ϕ A (pure a) = pure a
appmor_mult: forall (A B : Type) (x : G1 A) (y : G1 B), ϕ (A * B) (mult (x, y)) = mult (ϕ A x, ϕ B y)

binddt (ϕ (T B) ∘ f ∘ extract) = bindt (ϕ (T B) ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
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
morph: ApplicativeMorphism G1 G2 ϕ
A, B: Type
f: A -> G1 (T B)
appmor_app_F: Applicative G1
appmor_app_G: Applicative G2
appmor_natural: forall (A B : Type) (f : A -> B) (x : G1 A), ϕ B (map f x) = map f (ϕ A x)
appmor_pure: forall (A : Type) (a : A), ϕ A (pure a) = pure a
appmor_mult: forall (A B : Type) (x : G1 A) (y : G1 B), ϕ (A * B) (mult (x, y)) = mult (ϕ A x, ϕ B y)

bindt (ϕ (T B) ∘ f) = bindt (ϕ (T B) ∘ f)
reflexivity. Qed.
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
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
morph: ApplicativeMorphism G1 G2 ϕ

forall (A B : Type) (f : W * A -> G1 B), ϕ (U B) ∘ mapdt f = mapdt (ϕ B ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
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
morph: ApplicativeMorphism G1 G2 ϕ

forall (A B : Type) (f : W * A -> G1 B), ϕ (U B) ∘ mapdt f = mapdt (ϕ B ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
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
morph: ApplicativeMorphism G1 G2 ϕ
A, B: Type
f: W * A -> G1 B

ϕ (U B) ∘ mapdt f = mapdt (ϕ B ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
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
morph: ApplicativeMorphism G1 G2 ϕ
A, B: Type
f: W * A -> G1 B
appmor_app_F: Applicative G1
appmor_app_G: Applicative G2
appmor_natural: forall (A B : Type) (f : A -> B) (x : G1 A), ϕ B (map f x) = map f (ϕ A x)
appmor_pure: forall (A : Type) (a : A), ϕ A (pure a) = pure a
appmor_mult: forall (A B : Type) (x : G1 A) (y : G1 B), ϕ (A * B) (mult (x, y)) = mult (ϕ A x, ϕ B y)

ϕ (U B) ∘ mapdt f = mapdt (ϕ B ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
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
morph: ApplicativeMorphism G1 G2 ϕ
A, B: Type
f: W * A -> G1 B
appmor_app_F: Applicative G1
appmor_app_G: Applicative G2
appmor_natural: forall (A B : Type) (f : A -> B) (x : G1 A), ϕ B (map f x) = map f (ϕ A x)
appmor_pure: forall (A : Type) (a : A), ϕ A (pure a) = pure a
appmor_mult: forall (A B : Type) (x : G1 A) (y : G1 B), ϕ (A * B) (mult (x, y)) = mult (ϕ A x, ϕ B y)

ϕ (U B) ∘ binddt (map ret ∘ f) = mapdt (ϕ B ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
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
morph: ApplicativeMorphism G1 G2 ϕ
A, B: Type
f: W * A -> G1 B
appmor_app_F: Applicative G1
appmor_app_G: Applicative G2
appmor_natural: forall (A B : Type) (f : A -> B) (x : G1 A), ϕ B (map f x) = map f (ϕ A x)
appmor_pure: forall (A : Type) (a : A), ϕ A (pure a) = pure a
appmor_mult: forall (A B : Type) (x : G1 A) (y : G1 B), ϕ (A * B) (mult (x, y)) = mult (ϕ A x, ϕ B y)

ϕ (U B) ∘ binddt (map ret ∘ f) = binddt (map ret ∘ (ϕ B ∘ f))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
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
morph: ApplicativeMorphism G1 G2 ϕ
A, B: Type
f: W * A -> G1 B
appmor_app_F: Applicative G1
appmor_app_G: Applicative G2
appmor_natural: forall (A B : Type) (f : A -> B) (x : G1 A), ϕ B (map f x) = map f (ϕ A x)
appmor_pure: forall (A : Type) (a : A), ϕ A (pure a) = pure a
appmor_mult: forall (A B : Type) (x : G1 A) (y : G1 B), ϕ (A * B) (mult (x, y)) = mult (ϕ A x, ϕ B y)

ϕ (U B) ∘ binddt (map ret ∘ f) = binddt (map ret ∘ ϕ B ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
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
morph: ApplicativeMorphism G1 G2 ϕ
A, B: Type
f: W * A -> G1 B
appmor_app_F: Applicative G1
appmor_app_G: Applicative G2
appmor_natural: forall (A B : Type) (f : A -> B) (x : G1 A), ϕ B (map f x) = map f (ϕ A x)
appmor_pure: forall (A : Type) (a : A), ϕ A (pure a) = pure a
appmor_mult: forall (A B : Type) (x : G1 A) (y : G1 B), ϕ (A * B) (mult (x, y)) = mult (ϕ A x, ϕ B y)

ϕ (U B) ∘ binddt (map ret ∘ f) = binddt (ϕ (T B) ∘ map ret ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
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
morph: ApplicativeMorphism G1 G2 ϕ
A, B: Type
f: W * A -> G1 B
appmor_app_F: Applicative G1
appmor_app_G: Applicative G2
appmor_natural: forall (A B : Type) (f : A -> B) (x : G1 A), ϕ B (map f x) = map f (ϕ A x)
appmor_pure: forall (A : Type) (a : A), ϕ A (pure a) = pure a
appmor_mult: forall (A B : Type) (x : G1 A) (y : G1 B), ϕ (A * B) (mult (x, y)) = mult (ϕ A x, ϕ B y)

ϕ (U B) ∘ binddt (map ret ∘ f) = binddt (ϕ (T B) ∘ (map ret ∘ f))
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
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
morph: ApplicativeMorphism G1 G2 ϕ
A, B: Type
f: W * A -> G1 B
appmor_app_F: Applicative G1
appmor_app_G: Applicative G2
appmor_natural: forall (A B : Type) (f : A -> B) (x : G1 A), ϕ B (map f x) = map f (ϕ A x)
appmor_pure: forall (A : Type) (a : A), ϕ A (pure a) = pure a
appmor_mult: forall (A B : Type) (x : G1 A) (y : G1 B), ϕ (A * B) (mult (x, y)) = mult (ϕ A x, ϕ B y)

ϕ (U B) ∘ binddt (map ret ∘ f) = ϕ (U B) ∘ binddt (map ret ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
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
morph: ApplicativeMorphism G1 G2 ϕ
A, B: Type
f: W * A -> G1 B
appmor_app_F: Applicative G1
appmor_app_G: Applicative G2
appmor_natural: forall (A B : Type) (f : A -> B) (x : G1 A), ϕ B (map f x) = map f (ϕ A x)
appmor_pure: forall (A : Type) (a : A), ϕ A (pure a) = pure a
appmor_mult: forall (A B : Type) (x : G1 A) (y : G1 B), ϕ (A * B) (mult (x, y)) = mult (ϕ A x, ϕ B y)

ϕ (U B) ∘ mapdt f = ϕ (U B) ∘ mapdt f
reflexivity. Qed.
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
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
morph: ApplicativeMorphism G1 G2 ϕ

forall (A B : Type) (f : A -> G1 B), ϕ (U B) ∘ traverse f = traverse (ϕ B ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
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
morph: ApplicativeMorphism G1 G2 ϕ

forall (A B : Type) (f : A -> G1 B), ϕ (U B) ∘ traverse f = traverse (ϕ B ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
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
morph: ApplicativeMorphism G1 G2 ϕ
A, B: Type
f: A -> G1 B

ϕ (U B) ∘ traverse f = traverse (ϕ B ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
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
morph: ApplicativeMorphism G1 G2 ϕ
A, B: Type
f: A -> G1 B
appmor_app_F: Applicative G1
appmor_app_G: Applicative G2
appmor_natural: forall (A B : Type) (f : A -> B) (x : G1 A), ϕ B (map f x) = map f (ϕ A x)
appmor_pure: forall (A : Type) (a : A), ϕ A (pure a) = pure a
appmor_mult: forall (A B : Type) (x : G1 A) (y : G1 B), ϕ (A * B) (mult (x, y)) = mult (ϕ A x, ϕ B y)

ϕ (U B) ∘ traverse f = traverse (ϕ B ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
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
morph: ApplicativeMorphism G1 G2 ϕ
A, B: Type
f: A -> G1 B
appmor_app_F: Applicative G1
appmor_app_G: Applicative G2
appmor_natural: forall (A B : Type) (f : A -> B) (x : G1 A), ϕ B (map f x) = map f (ϕ A x)
appmor_pure: forall (A : Type) (a : A), ϕ A (pure a) = pure a
appmor_mult: forall (A B : Type) (x : G1 A) (y : G1 B), ϕ (A * B) (mult (x, y)) = mult (ϕ A x, ϕ B y)

ϕ (U B) ∘ binddt (map ret ∘ f ∘ extract) = traverse (ϕ B ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
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
morph: ApplicativeMorphism G1 G2 ϕ
A, B: Type
f: A -> G1 B
appmor_app_F: Applicative G1
appmor_app_G: Applicative G2
appmor_natural: forall (A B : Type) (f : A -> B) (x : G1 A), ϕ B (map f x) = map f (ϕ A x)
appmor_pure: forall (A : Type) (a : A), ϕ A (pure a) = pure a
appmor_mult: forall (A B : Type) (x : G1 A) (y : G1 B), ϕ (A * B) (mult (x, y)) = mult (ϕ A x, ϕ B y)

binddt (ϕ (T B) ∘ (map ret ∘ f ∘ extract)) = traverse (ϕ B ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
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
morph: ApplicativeMorphism G1 G2 ϕ
A, B: Type
f: A -> G1 B
appmor_app_F: Applicative G1
appmor_app_G: Applicative G2
appmor_natural: forall (A B : Type) (f : A -> B) (x : G1 A), ϕ B (map f x) = map f (ϕ A x)
appmor_pure: forall (A : Type) (a : A), ϕ A (pure a) = pure a
appmor_mult: forall (A B : Type) (x : G1 A) (y : G1 B), ϕ (A * B) (mult (x, y)) = mult (ϕ A x, ϕ B y)

binddt (ϕ (T B) ∘ map ret ∘ f ∘ extract) = traverse (ϕ B ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
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
morph: ApplicativeMorphism G1 G2 ϕ
A, B: Type
f: A -> G1 B
appmor_app_F: Applicative G1
appmor_app_G: Applicative G2
appmor_natural: forall (A B : Type) (f : A -> B) (x : G1 A), ϕ B (map f x) = map f (ϕ A x)
appmor_pure: forall (A : Type) (a : A), ϕ A (pure a) = pure a
appmor_mult: forall (A B : Type) (x : G1 A) (y : G1 B), ϕ (A * B) (mult (x, y)) = mult (ϕ A x, ϕ B y)

binddt (map ret ∘ ϕ B ∘ f ∘ extract) = traverse (ϕ B ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
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
morph: ApplicativeMorphism G1 G2 ϕ
A, B: Type
f: A -> G1 B
appmor_app_F: Applicative G1
appmor_app_G: Applicative G2
appmor_natural: forall (A B : Type) (f : A -> B) (x : G1 A), ϕ B (map f x) = map f (ϕ A x)
appmor_pure: forall (A : Type) (a : A), ϕ A (pure a) = pure a
appmor_mult: forall (A B : Type) (x : G1 A) (y : G1 B), ϕ (A * B) (mult (x, y)) = mult (ϕ A x, ϕ B y)

binddt (map ret ∘ (ϕ B ∘ f) ∘ extract) = traverse (ϕ B ∘ f)
W: Type
op: Monoid_op W
unit: Monoid_unit W
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
Monad_inst: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
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
morph: ApplicativeMorphism G1 G2 ϕ
A, B: Type
f: A -> G1 B
appmor_app_F: Applicative G1
appmor_app_G: Applicative G2
appmor_natural: forall (A B : Type) (f : A -> B) (x : G1 A), ϕ B (map f x) = map f (ϕ A x)
appmor_pure: forall (A : Type) (a : A), ϕ A (pure a) = pure a
appmor_mult: forall (A B : Type) (x : G1 A) (y : G1 B), ϕ (A * B) (mult (x, y)) = mult (ϕ A x, ϕ B y)

traverse (ϕ B ∘ f) = traverse (ϕ B ∘ f)
reflexivity. Qed. End applicative_morphisms. End derived_instances. (** ** Derived Typeclass Instances *) (**********************************************************************) Module DerivedInstances. Section derived_instances. Context (W: Type) (T: Type -> Type) `{op: Monoid_op W} `{unit: Monoid_unit W} `{ret_inst: Return T} `{Map_T_inst: Map T} `{Mapd_T_inst: Mapd W T} `{Traverse_T_inst: Traverse T} `{Bind_T_inst: Bind T T} `{Mapdt_T_inst: Mapdt W T} `{Bindd_T_inst: Bindd W T T} `{Bindt_T_inst: Bindt T T} `{Binddt_T_inst: Binddt W T T} `{! Compat_Map_Binddt W T T} `{! Compat_Mapd_Binddt W T T} `{! Compat_Traverse_Binddt W T T} `{! Compat_Bind_Binddt W T T} `{! Compat_Mapdt_Binddt W T T} `{! Compat_Bindd_Binddt W T T} `{! Compat_Bindt_Binddt W T T} `{dtm_T: ! DecoratedTraversableMonad W T}. (** *** Exported instances *) (******************************************************************)
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T

DecoratedMonad W T
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T

DecoratedMonad W T
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T

Monoid W
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
DecoratedRightPreModule W T T
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
forall (A B : Type) (f : W * A -> T B), bindd f ∘ ret = f ∘ ret
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T

Monoid W
typeclasses eauto.
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T

DecoratedRightPreModule W T T
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
A: Type

bindd (ret ∘ extract) = id
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
A, B, C: Type
g: W * B -> T C
f: W * A -> T B
bindd g ∘ bindd f = bindd (g ⋆5 f)
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
A, B, C: Type
g: W * B -> T C
f: W * A -> T B

bindd g ∘ bindd f = bindd (g ⋆5 f)
apply bindd_bindd.
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T

forall (A B : Type) (f : W * A -> T B), bindd f ∘ ret = f ∘ ret
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
A, B: Type
f: W * A -> T B

bindd f ∘ ret = f ∘ ret
apply bindd_ret. Qed.
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T

TraversableMonad T
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T

TraversableMonad T
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T

forall (G : Type -> Type) (Map_G : Map G) (Pure_G : Pure G) (Mult_G : Mult G), Applicative G -> forall (A B : Type) (f : A -> G (T B)), bindt f ∘ ret = f
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
TraversableRightPreModule T T
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T

forall (G : Type -> Type) (Map_G : Map G) (Pure_G : Pure G) (Mult_G : Mult G), Applicative G -> forall (A B : Type) (f : A -> G (T B)), bindt f ∘ ret = f
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
G: Type -> Type
Map_G: Map G
Pure_G: Pure G
Mult_G: Mult G
H: Applicative G
A, B: Type
f: A -> G (T B)

bindt f ∘ ret = f
now apply bindt_ret.
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T

TraversableRightPreModule T T
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
A: Type

bindt ret = id
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 (T C)
f: A -> G1 (T B)
map (bindt g) ∘ bindt f = bindt (g ⋆6 f)
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W 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 (T B)
ϕ (T B) ∘ bindt f = bindt (ϕ (T B) ∘ f)
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 (T C)
f: A -> G1 (T B)

map (bindt g) ∘ bindt f = bindt (g ⋆6 f)
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W 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 (T B)
ϕ (T B) ∘ bindt f = bindt (ϕ (T B) ∘ f)
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W 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 (T B)

ϕ (T B) ∘ bindt f = bindt (ϕ (T B) ∘ f)
apply (bindt_morph G1 G2 ϕ). Qed. #[export] Instance Monad_DecoratedTraversableMonad: Monad T := DecoratedMonad.DerivedInstances.Monad_DecoratedMonad W T.
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T

Functor T
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T

Functor T
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
A: Type

map id = id
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
A, B, C: Type
f: A -> B
g: B -> C
map g ∘ map f = map (g ∘ f)
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
A: Type

map id = id
apply map_id.
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
A, B, C: Type
f: A -> B
g: B -> C

map g ∘ map f = map (g ∘ f)
apply map_map. Qed. (** *** Local instances *) (******************************************************************) (* #[export] Instance DecoratedRightPreModule_DecoratedTraversableMonad: DecoratedRightPreModule W T T. Proof. constructor; intros. apply bindd_id. apply bindd_bindd. Qed. #[export] Instance DecoratedMonad_DecoratedTraversableMonad `{! DecoratedTraversableMonad W T}: DecoratedMonad W T := {| kdm_bindd0 := bindd_ret; |}. #[export] Instance TraversableRightPreModule_DecoratedTraversableMonad: TraversableRightPreModule T T. Proof. constructor; intros. - apply bindt_id. - apply bindt_bindt. - apply (bindt_morph G1 G2 ϕ). Qed. #[export] Instance TraversableMonad_DecoratedTraversableMonad `{! DecoratedTraversableMonad W T}: TraversableMonad T := {| ktm_bindt0 := bindt_ret; |}. #[export] Instance DecoratedTraversableFunctor_DecoratedTraversableMonad `{! DecoratedTraversableMonad W T}: DecoratedTraversableFunctor W T. Proof. constructor; intros. - apply mapdt_id. - apply mapdt_mapdt. - apply (mapdt_morph G1 G2 ϕ). Qed. #[export] Instance TraversableFunctor_DecoratedTraversableMonad `{! DecoratedTraversableMonad W T}: TraversableFunctor T. Proof. constructor. - apply traverse_id. - intros. apply traverse_traverse. - intros. apply traverse_morph. auto. Qed. #[export] Instance DecoratedFunctor_DecoratedTraversableMonad `{! DecoratedTraversableMonad W T}: DecoratedFunctor W T. Proof. constructor. - apply mapd_id. - intros. apply mapd_mapd. Qed. #[export] Instance Functor_DecoratedTraversableMonad `{! DecoratedTraversableMonad W T}: Functor T. Proof. constructor; intros. - apply map_id. - apply map_map. Qed. *)
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T, DecoratedTraversableMonad0: DecoratedTraversableMonad W T

DecoratedTraversableRightModule W T T
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T, DecoratedTraversableMonad0: DecoratedTraversableMonad W T

DecoratedTraversableRightModule W T T
constructor; typeclasses eauto. Qed. (* #[local] Instance TraversableRightModule_DecoratedTraversableMonad `{! DecoratedTraversableMonad W T}: TraversableRightModule T T. Proof. constructor; typeclasses eauto. Qed. #[local] Instance DecoratedRightModule_DecoratedTraversableMonad `{! DecoratedTraversableMonad W T}: DecoratedRightModule W T T. Proof. constructor; typeclasses eauto. Qed. #[local] Instance RightModule_DecoratedTraversableMonad `{! DecoratedTraversableMonad W T}: RightModule T T. Proof. constructor; typeclasses eauto. Qed. *) Context (U: Type -> Type) `{Map_U_inst: Map U} `{Mapd_U_inst: Mapd W U} `{Traverse_U_inst: Traverse U} `{Bind_U_inst: Bind T U} `{Mapdt_U_inst: Mapdt W U} `{Bindd_U_inst: Bindd W T U} `{Bindt_U_inst: Bindt T U} `{Binddt_U_inst: Binddt W T U} `{! Compat_Map_Binddt W T U} `{! Compat_Mapd_Binddt W T U} `{! Compat_Traverse_Binddt W T U} `{! Compat_Bind_Binddt W T U} `{! Compat_Mapdt_Binddt W T U} `{! Compat_Bindd_Binddt W T U} `{! Compat_Bindt_Binddt W T U} `{Module_inst: ! DecoratedTraversableRightPreModule W T U}. (** *** Exported instances *) (******************************************************************)
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U

TraversableRightPreModule T U
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U

TraversableRightPreModule T U
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A: Type

bindt ret = id
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 (T C)
f: A -> G1 (T B)
map (bindt g) ∘ bindt f = bindt (g ⋆6 f)
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
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 (T B)
ϕ (U B) ∘ bindt f = bindt (ϕ (T B) ∘ f)
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A: Type

bindt ret = id
apply bindt_id.
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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 (T C)
f: A -> G1 (T B)

map (bindt g) ∘ bindt f = bindt (g ⋆6 f)
apply bindt_bindt.
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
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 (T B)

ϕ (U B) ∘ bindt f = bindt (ϕ (T B) ∘ f)
apply (bindt_morph G1 G2 ϕ). Qed. #[export] Instance DecoratedRightPreModule_DecoratedTraversableRightPreModule: DecoratedRightPreModule W T U := {| kdmod_bindd1 := bindd_id; kdmod_bindd2 := bindd_bindd; |}.
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U

DecoratedTraversableFunctor W U
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U

DecoratedTraversableFunctor W U
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A: Type

mapdt extract = id
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H0: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H1: Applicative G2
A, B, C: Type
g: W * B -> G2 C
f: W * A -> G1 B
map (mapdt g) ∘ mapdt f = mapdt (g ⋆3 f)
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1, G2: Type -> Type
H0: Map G1
H1: Mult G1
H2: Pure G1
H3: Map G2
H4: Mult G2
H5: Pure G2
ϕ: forall A : Type, G1 A -> G2 A
morphism: ApplicativeMorphism G1 G2 ϕ
A, B: Type
f: W * A -> G1 B
ϕ (U B) ∘ mapdt f = mapdt (ϕ B ∘ f)
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A: Type

mapdt extract = id
apply mapdt_id.
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H0: Applicative G1
G2: Type -> Type
Map_G0: Map G2
Pure_G0: Pure G2
Mult_G0: Mult G2
H1: Applicative G2
A, B, C: Type
g: W * B -> G2 C
f: W * A -> G1 B

map (mapdt g) ∘ mapdt f = mapdt (g ⋆3 f)
apply mapdt_mapdt.
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1, G2: Type -> Type
H0: Map G1
H1: Mult G1
H2: Pure G1
H3: Map G2
H4: Mult G2
H5: Pure G2
ϕ: forall A : Type, G1 A -> G2 A
morphism: ApplicativeMorphism G1 G2 ϕ
A, B: Type
f: W * A -> G1 B

ϕ (U B) ∘ mapdt f = mapdt (ϕ B ∘ f)
apply (mapdt_morph G1 G2 ϕ). Qed.
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U

DecoratedFunctor W U
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U

DecoratedFunctor W U
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A: Type

mapd extract = id
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A, B, C: Type
g: W * B -> C
f: W * A -> B
mapd g ∘ mapd f = mapd (g ⋆1 f)
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A: Type

mapd extract = id
apply mapd_id.
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A, B, C: Type
g: W * B -> C
f: W * A -> B

mapd g ∘ mapd f = mapd (g ⋆1 f)
apply mapd_mapd. Qed.
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U

TraversableFunctor U
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U

TraversableFunctor U
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A: Type

traverse id = id
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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)
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
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
ϕ (U B) ∘ traverse f = traverse (ϕ B ∘ f)
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A: Type

traverse id = id
apply traverse_id.
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
G1: Type -> Type
Map_G: Map G1
Pure_G: Pure G1
Mult_G: Mult G1
H: 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.
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
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

ϕ (U B) ∘ traverse f = traverse (ϕ B ∘ f)
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
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

ApplicativeMorphism G1 G2 ϕ
auto. Qed.
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U

Functor U
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U

Functor U
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A: Type

map id = id
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A, B, C: Type
f: A -> B
g: B -> C
map g ∘ map f = map (g ∘ f)
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A: Type

map id = id
apply map_id.
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
A, B, C: Type
f: A -> B
g: B -> C

map g ∘ map f = map (g ∘ f)
apply map_map. Qed. (** *** Local instances *) (******************************************************************)
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
DecoratedTraversableMonad0: DecoratedTraversableMonad W T

DecoratedTraversableRightModule W T U
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
DecoratedTraversableMonad0: DecoratedTraversableMonad W T

DecoratedTraversableRightModule W T U
constructor; typeclasses eauto. Qed. #[local] Instance TraversableRightModule_DecoratedTraversableRightPreModule: TraversableRightModule T U := {| ktmod_monad := _ |}. #[local] Instance DecoratedRightModule_DecoratedTraversableRightPreModule `{! DecoratedTraversableMonad W T}: DecoratedRightModule W T U := {| kdmod_monad := _ |}.
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
DecoratedTraversableMonad0: DecoratedTraversableMonad W T

RightModule T T
W: Type
T: Type -> Type
op: Monoid_op W
unit: Monoid_unit W
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd W T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt W T
Bindd_T_inst: Bindd W T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt W T T
Compat_Map_Binddt0: Compat_Map_Binddt W T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T
Compat_Bind_Binddt0: Compat_Bind_Binddt W T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T
dtm_T: DecoratedTraversableMonad W T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd W U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt W U
Bindd_U_inst: Bindd W T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt W T U
Compat_Map_Binddt1: Compat_Map_Binddt W T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U
Compat_Bind_Binddt1: Compat_Bind_Binddt W T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U
Module_inst: DecoratedTraversableRightPreModule W T U
DecoratedTraversableMonad0: DecoratedTraversableMonad W T

RightModule T T
constructor; typeclasses eauto. Qed. End derived_instances. End DerivedInstances. (** * Notations *) (**********************************************************************) Module Notations. Infix "⋆7" := (kc7 _ _) (at level 60): tealeaves_scope. End Notations.