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>> *)(**********************************************************************)ClassBinddt
(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 *)(**********************************************************************)Definitionkc7
{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))) :=
fungf '(w, a) =>
map (F := G1) (A := T B) (B := G2 (T C))
(binddt (g ⦿ w)) (f (w, a)).#[local] Infix"⋆7" := (kc7 _ _) (at level60): tealeaves_scope.(** ** Typeclass *)(**********************************************************************)ClassDecoratedTraversableRightPreModule
(W: Type)
(TU: 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 := funA => 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 (G1G2: Type -> Type) `{morph: ApplicativeMorphism G1 G2 ϕ}
`(f: W * A -> G1 (T B)),
ϕ (U B) ∘ binddt f = binddt (ϕ (T B) ∘ f);
}.ClassDecoratedTraversableMonad
(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;
}.ClassDecoratedTraversableRightModule
(W: Type)
(TU: 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 *)(**********************************************************************)ClassDecoratedTraversableMonadHom
(TU: 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 *)(**********************************************************************)Sectiondecorated_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] *)(********************************************************************)Sectionincr.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
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
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
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
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
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.Endincr.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
forallf : 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
forallf : 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
forallg : 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
forallg : 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
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)
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
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
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
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
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
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
reflexivity.Qed.Enddecorated_monad_kleisli_composition.(** * Derived Structures *)(**********************************************************************)(** ** Derived Operations *)(**********************************************************************)ModuleDerivedOperations.Sectionoperations.Context
(W: Type)
(T: Type -> Type)
(U: Type -> Type)
`{Return_T: Return T}
`{Bindd_WTU: Binddt W T U}.#[export] InstanceMap_Binddt: Map U :=
fun (AB: Type) (f: A -> B) =>
binddt (G := funA => A)
(ret (T := T) ∘ f ∘ extract (W := (W ×))).#[export] InstanceMapdt_Binddt: Mapdt W U
:= funG___ABf =>
binddt (map (F := G) (ret (T := T)) ∘ f).#[export] InstanceBindd_Binddt: Bindd W T U
:= funABf => binddt (G := funA => A) f.#[export] InstanceBindt_Binddt: Bindt T U
:= funG___ABf =>
binddt (f ∘ extract (W := (W ×))).#[export] InstanceBind_Binddt: Bind T U
:= funABf =>
binddt (G := funA => A)
(f ∘ extract (W := (W ×))).#[export] InstanceMapd_Binddt: Mapd W U
:= funABf =>
binddt (G := funA => A) (ret (T := T) ∘ f).#[export] InstanceTraverse_Binddt: Traverse U
:= funG___ABf =>
binddt (map (F := G) ret ∘ f ∘ extract).Endoperations.EndDerivedOperations.(** ** Compatibility Typeclasses *)(**********************************************************************)Sectiondecorated_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}.ClassCompat_Map_Binddt: Prop :=
compat_map_binddt:
Map_inst =
@DerivedOperations.Map_Binddt W T U Return_T Binddt_inst.ClassCompat_Mapd_Binddt: Prop :=
compat_mapd_binddt:
Mapd_inst =
@DerivedOperations.Mapd_Binddt W T U Return_T Binddt_inst.ClassCompat_Traverse_Binddt: Prop :=
compat_traverse_binddt:
Traverse_inst =
@DerivedOperations.Traverse_Binddt W T U Return_T Binddt_inst.ClassCompat_Bind_Binddt: Prop :=
compat_bind_binddt:
Bind_inst =
@DerivedOperations.Bind_Binddt W T U Binddt_inst.ClassCompat_Bindd_Binddt: Prop :=
compat_bindd_binddt:
Bindd_inst =
@DerivedOperations.Bindd_Binddt W T U Binddt_inst.ClassCompat_Bindt_Binddt: Prop :=
compat_bindt_binddt:
Bindt_inst =
@DerivedOperations.Bindt_Binddt W T U Binddt_inst.ClassCompat_Mapdt_Binddt: Prop :=
compat_mapdt_binddt:
Mapdt_inst =
@DerivedOperations.Mapdt_Binddt W T U Return_T Binddt_inst.ClassCompat_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;
}.Enddecorated_traversable_monad_compat.Sectiondecorated_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.Ltacnormalize_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)).Ltacsolve_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] InstanceCompat_Map_Traverse_Binddt:
Compat_Map_Traverse U := ltac:(solve_compat).#[export] InstanceCompat_Map_Mapd_Binddt:
Compat_Map_Mapd W U := ltac:(solve_compat).#[export] InstanceCompat_Map_Bind_Binddt:
Compat_Map_Bind T U := ltac:(solve_compat).(** *** Compatibility with <<bindd>> *)#[export] InstanceCompat_Map_Bindd_Binddt:
Compat_Map_Bindd W T U := ltac:(solve_compat).#[export] InstanceCompat_Mapd_Bindd_Binddt:
Compat_Mapd_Bindd W T U := ltac:(solve_compat).#[export] InstanceCompat_Bind_Bindd_Binddt:
Compat_Bind_Bindd W T U := ltac:(solve_compat).(** *** Compatibility with <<bindt>> *)#[export] InstanceCompat_Map_Bindt_Bindtt:
Compat_Map_Bindt T U := ltac:(solve_compat).#[export] InstanceCompat_Traverse_Bindt_Bindtt:
Compat_Traverse_Bindt T U := ltac:(solve_compat).#[export] InstanceCompat_Bind_Bindt_Bindtt:
Compat_Bind_Bindt T U := ltac:(solve_compat).(** *** Compatibility with <<mapdt>> *)#[export] InstanceCompat_Map_Mapdt_Binddt:
Compat_Map_Mapdt W U := ltac:(solve_compat).#[export] InstanceCompat_Mapd_Mapdt_Binddt:
Compat_Mapd_Mapdt W U := ltac:(solve_compat).#[export] InstanceCompat_Traverse_Mapdt_Binddt:
Compat_Traverse_Mapdt W U := ltac:(solve_compat).Enddecorated_traversable_monad_compat_self.(** ** Rewriting <<X>> to <<binddt>> Lemmas *)(**********************************************************************)Sectionrewriting.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 (AB : 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 (AB : 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 (AB : 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 (AB : 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 (AB : 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 (AB : 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 (AB : 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 (AB : 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 (AB : 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 (AB : 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 (AB : 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 (AB : 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 (AB : 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 (AB : 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 (AB : 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 ->
forallAB : 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 ->
forallAB : 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
forallAB : 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
forallAB : 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
forallAB : 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 (AB : 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 (AB : 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 (AB : 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 (AB : 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 (AB : 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.Endrewriting.(** ** Composition with the Identity Applicative Functor *)(**********************************************************************)Sectionproperties.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) (AB : Type) (Map_G : Map G)
(Pure_G : Pure G) (Mult_G : Mult G),
Applicative G ->
forallf : 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) (AB : Type) (Map_G : Map G)
(Pure_G : Pure G) (Mult_G : Mult G),
Applicative G ->
forallf : 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 (funA : Type => A) G = Mult_G
nowrewrite (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) (AB : Type) (Map_G : Map G)
(Pure_G : Pure G) (Mult_G : Mult G),
Applicative G ->
forallf : 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) (AB : Type) (Map_G : Map G)
(Pure_G : Pure G) (Mult_G : Mult G),
Applicative G ->
forallf : 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 (funA : Type => A) = Mult_G
nowrewrite (Mult_compose_identity1 G).Qed.Endproperties.(** ** Derived Kleisli Composition Laws *)(**********************************************************************)Sectionderived_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] Ltacunfold_map_id :=
repeat (change (map (F := funA => A) ?f) with f).#[local] Hint Unfold kc7 kc6 kc5 kc kc3 kc2 kc1: tealeaves_kc_unfold.#[local] Ltacsetup :=
intros;
autounfold with tealeaves_kc_unfold;
ext [w a];
unfold_map_id.Ltackdtmf_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))).Ltacsolve_kc7 :=
setup;
kdtmf_normalize_T;
try (reflexivity ||
rewrite preincr_assoc;
rewrite extract_preincr;
reflexivity).(** *** Homogeneous Kleisli composition laws *)(********************************************************************)Sectioncomposition.Context
`{Applicative G1}
`{Applicative G2}.Variables (ABC: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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)
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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 (funa : 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 (funa : 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 (funa : 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 ((funa : 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 ((funa : 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 ((funa : 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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 ((funa : 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 ((funa : 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 ((funa : 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
((funa : 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
((funa : W * B => ret (g (extract a))) ∘ pair w)
(f a) = ret (g (f a))
reflexivity.Qed.Endcomposition.(** ** Rewriting rules for special cases of <<kc7>> *)(********************************************************************)Sectionkc7_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)))
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
reflexivity.Qed.Endkc7_special_cases.Endderived_instances.(** ** Derived Composition Laws *)(**********************************************************************)Sectionother_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 *)(********************************************************************)Sectioncomposition.Context
{G1: Type -> Type}
`{Map G1} `{Pure G1} `{Mult G1} `{! Applicative G1}
{G2: Type -> Type}
`{Map G2} `{Pure G2} `{Mult G2} `{! Applicative G2}.Variables (ABC: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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)
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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)
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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)
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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)
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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)
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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)
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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)
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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)
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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)
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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)
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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)
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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)
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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)
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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)
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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)
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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)
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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)
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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)
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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)
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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)
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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)
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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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)
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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)
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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)
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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)
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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)
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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)
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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)
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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.Endcomposition_special_cases_middle.(* The lemmas below can cite the ones above *)Sectioncomposition_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)
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: 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 *)Endcomposition_special_cases_bottom.Endother_composition_laws.(** ** Derived Identity/<<ret>>/Appl. Homomorphism Laws *)(**********************************************************************)Sectionderived_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
W: Type op: Monoid_op W unit: Monoid_unit W T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd W T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt W T Bindd_T_inst: Bindd W T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt W T T Compat_Map_Binddt0: Compat_Map_Binddt W T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt W T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt W T T Compat_Bind_Binddt0: Compat_Bind_Binddt W T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt W T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt W T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt W T T Monad_inst: DecoratedTraversableMonad W T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd W U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt W U Bindd_U_inst: Bindd W T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt W T U Compat_Map_Binddt1: Compat_Map_Binddt W T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt W T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt W T U Compat_Bind_Binddt1: Compat_Bind_Binddt W T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt W T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt W T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt W T U Module_inst: DecoratedTraversableRightPreModule W T U
forallA : 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
forallA : 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
forallA : 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
forallA : 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
forallA : 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
forallA : 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
forallA : 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
forallA : 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
forallA : 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
forallA : 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
forallA : 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
forallA : 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
forallA : 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
forallA : 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 (AB : 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 (AB : 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 (AB : 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 (AB : 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 (AB : 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 (AB : 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 (AB : 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 (AB : 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 *)(********************************************************************)Sectionapplicative_morphisms.Context
(G1G2: Type -> Type)
`{Map G1} `{Mult G1} `{Pure G1}
`{Map G2} `{Mult G2} `{Pure G2}
(ϕ: forallA: 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 ϕ: forallA : Type, G1 A -> G2 A morph: ApplicativeMorphism G1 G2 ϕ
forall (AB : 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 ϕ: forallA : Type, G1 A -> G2 A morph: ApplicativeMorphism G1 G2 ϕ
forall (AB : 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 ϕ: forallA : 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 ϕ: forallA : 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 (AB : 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 (AB : 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 ϕ: forallA : 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 (AB : 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 (AB : 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 ϕ: forallA : 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 (AB : 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 (AB : 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 ϕ: forallA : 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 (AB : 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 (AB : 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 ϕ: forallA : 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 (AB : 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 (AB : 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 ϕ: forallA : Type, G1 A -> G2 A morph: ApplicativeMorphism G1 G2 ϕ
forall (AB : 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 ϕ: forallA : Type, G1 A -> G2 A morph: ApplicativeMorphism G1 G2 ϕ
forall (AB : 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 ϕ: forallA : 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 ϕ: forallA : 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 (AB : 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 (AB : 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 ϕ: forallA : 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 (AB : 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 (AB : 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 ϕ: forallA : 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 (AB : 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 (AB : 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 ϕ: forallA : 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 (AB : 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 (AB : 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 ϕ: forallA : 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 (AB : 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 (AB : 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 ϕ: forallA : 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 (AB : 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 (AB : 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 ϕ: forallA : 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 (AB : 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 (AB : 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 ϕ: forallA : 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 (AB : 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 (AB : 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 ϕ: forallA : Type, G1 A -> G2 A morph: ApplicativeMorphism G1 G2 ϕ
forall (AB : 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 ϕ: forallA : Type, G1 A -> G2 A morph: ApplicativeMorphism G1 G2 ϕ
forall (AB : 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 ϕ: forallA : 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 ϕ: forallA : 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 (AB : 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 (AB : 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 ϕ: forallA : 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 (AB : 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 (AB : 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 ϕ: forallA : 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 (AB : 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 (AB : 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 ϕ: forallA : 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 (AB : 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 (AB : 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 ϕ: forallA : 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 (AB : 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 (AB : 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 ϕ: forallA : 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 (AB : 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 (AB : 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 ϕ: forallA : 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 (AB : 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 (AB : 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.Endapplicative_morphisms.Endderived_instances.(** ** Derived Typeclass Instances *)(**********************************************************************)ModuleDerivedInstances.Sectionderived_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 (AB : 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 (AB : 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 (AB : 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 (AB : 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
nowapply 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 ϕ: forallA : 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 ϕ: forallA : 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 ϕ: forallA : 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] InstanceMonad_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 ϕ: forallA : 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 ϕ: forallA : 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] InstanceDecoratedRightPreModule_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 ϕ: forallA : 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 ϕ: forallA : 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 ϕ: forallA : 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 ϕ: forallA : 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 ϕ: forallA : 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] InstanceTraversableRightModule_DecoratedTraversableRightPreModule:
TraversableRightModule T U :=
{| ktmod_monad := _
|}.#[local] InstanceDecoratedRightModule_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