Built with Alectryon, running Coq+SerAPI v8.16.0+0.16.3. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑Ctrl+↓ to navigate, Ctrl+🖱️ to focus. On Mac, use ⌘ instead of Ctrl.
From Tealeaves Require Export
Classes.Categorical.Applicative
Classes.Categorical.Monad (Return, ret).#[local] Generalizable VariablesU T G A B C D ϕ M f.(** * Traversable Monads *)(**********************************************************************)(** ** The [bindt] operation *)(**********************************************************************)ClassBindt (T: Type -> Type) (U: Type -> Type) :=
bindt:
forall (G: Type -> Type)
`{Map_G: Map G} `{Pure_G: Pure G} `{Mult_G: Mult G}
(A B: Type), (A -> G (T B)) -> U A -> G (U B).#[global] Arguments bindt {T U}%function_scope {Bindt} {G}%function_scope
{Map_G Pure_G Mult_G} {A B}%type_scope _%function_scope _.(** ** Kleisli Composition *)(**********************************************************************)Definitionkc6
`{Bindt T T}
{A B C: Type}
{G1 G2: Type -> Type}
`{Map G1} `{Pure G1} `{Mult G1}
`{Map G2} `{Pure G2} `{Mult G2}:
(B -> G2 (T C)) ->
(A -> G1 (T B)) ->
(A -> G1 (G2 (T C))) :=
fungf => map (F := G1) (bindt g) ∘ f.#[local] Infix"⋆6" := (kc6) (at level60): tealeaves_scope.(** ** Typeclass *)(**********************************************************************)ClassTraversableRightPreModule (T: Type -> Type) (U: Type -> Type)
`{Return_T: Return T}
`{Bindt_TT: Bindt T T}
`{Bindt_TU: Bindt T U} :=
{ ktm_bindt1: forall (A: Type),
bindt (U := U) (G := funA => A) (ret (T := T)) = @id (U A);
ktm_bindt2:
forall `{Applicative G1} `{Applicative G2} (A B C: Type)
(g: B -> G2 (T C)) (f: A -> G1 (T B)),
map (F := G1) (bindt g) ∘ bindt (U := U) f =
bindt (U := U) (kc6 (G1 := G1) (G2 := G2) g f);
ktm_morph:
forall `{morphism: ApplicativeMorphism G1 G2 ϕ}
(A B: Type) `(f: A -> G1 (T B)),
ϕ (U B) ∘ bindt (U := U) f = bindt (ϕ (T B) ∘ f);
}.ClassTraversableMonad (T: Type -> Type)
`{Return_T: Return T}
`{Bindt_TT: Bindt T T} :=
{ ktm_bindt0:
forall `{Applicative G} (A B: Type) (f: A -> G (T B)),
bindt f ∘ ret = f;
ktm_premod :> TraversableRightPreModule T T;
}.ClassTraversableRightModule (TU: Type -> Type)
`{Return_T: Return T}
`{Bindt_TT: Bindt T T}
`{Bindt_TU: Bindt T U} :=
{ ktmod_monad :> TraversableMonad T;
ktmod_premod :> TraversableRightPreModule T U;
}.#[local] InstanceTraversableRightModule_TraversableMonad
(T: Type -> Type)
`{TraversableMonad_T: TraversableMonad T}:
TraversableRightModule T T :=
{| ktmod_premod := ktm_premod;
|}.(** ** Kleisli Category laws *)(**********************************************************************)SectionKleisli_composition.Context
`{TraversableMonad T}
`{Applicative G1}
`{Applicative G2}
`{Applicative G3}.
T: Type -> Type Return_T: Return T Bindt_TT: Bindt T T H: TraversableMonad T 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 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H2: Applicative G3
forall (AB : Type) (g : A -> G2 (T B)), g ⋆6 ret = g
T: Type -> Type Return_T: Return T Bindt_TT: Bindt T T H: TraversableMonad T 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 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H2: Applicative G3
forall (AB : Type) (g : A -> G2 (T B)), g ⋆6 ret = g
T: Type -> Type Return_T: Return T Bindt_TT: Bindt T T H: TraversableMonad T 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 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H2: Applicative G3 A, B: Type g: A -> G2 (T B)
g ⋆6 ret = g
T: Type -> Type Return_T: Return T Bindt_TT: Bindt T T H: TraversableMonad T 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 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H2: Applicative G3 A, B: Type g: A -> G2 (T B)
map (bindt g) ∘ ret = g
T: Type -> Type Return_T: Return T Bindt_TT: Bindt T T H: TraversableMonad T 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 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H2: Applicative G3 A, B: Type g: A -> G2 (T B)
bindt g ∘ ret = g
T: Type -> Type Return_T: Return T Bindt_TT: Bindt T T H: TraversableMonad T 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 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H2: Applicative G3 A, B: Type g: A -> G2 (T B)
g = g
reflexivity.Qed.
T: Type -> Type Return_T: Return T Bindt_TT: Bindt T T H: TraversableMonad T 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 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H2: Applicative G3
forall (AB : Type) (g : A -> G2 (T B)),
g ⋆6 map ret = map g
T: Type -> Type Return_T: Return T Bindt_TT: Bindt T T H: TraversableMonad T 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 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H2: Applicative G3
forall (AB : Type) (g : A -> G2 (T B)),
g ⋆6 map ret = map g
T: Type -> Type Return_T: Return T Bindt_TT: Bindt T T H: TraversableMonad T 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 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H2: Applicative G3 A, B: Type g: A -> G2 (T B)
g ⋆6 map ret = map g
T: Type -> Type Return_T: Return T Bindt_TT: Bindt T T H: TraversableMonad T 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 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H2: Applicative G3 A, B: Type g: A -> G2 (T B)
map (bindt g) ∘ map ret = map g
T: Type -> Type Return_T: Return T Bindt_TT: Bindt T T H: TraversableMonad T 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 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H2: Applicative G3 A, B: Type g: A -> G2 (T B)
map (bindt g ∘ ret) = map g
T: Type -> Type Return_T: Return T Bindt_TT: Bindt T T H: TraversableMonad T 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 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H2: Applicative G3 A, B: Type g: A -> G2 (T B)
map g = map g
reflexivity.Qed.
T: Type -> Type Return_T: Return T Bindt_TT: Bindt T T H: TraversableMonad T 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 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H2: Applicative G3
forall (AB : Type) (f : A -> G1 (T B)), ret ⋆6 f = f
T: Type -> Type Return_T: Return T Bindt_TT: Bindt T T H: TraversableMonad T 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 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H2: Applicative G3
forall (AB : Type) (f : A -> G1 (T B)), ret ⋆6 f = f
T: Type -> Type Return_T: Return T Bindt_TT: Bindt T T H: TraversableMonad T 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 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H2: Applicative G3 A, B: Type f: A -> G1 (T B)
ret ⋆6 f = f
T: Type -> Type Return_T: Return T Bindt_TT: Bindt T T H: TraversableMonad T 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 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H2: Applicative G3 A, B: Type f: A -> G1 (T B)
map (bindt ret) ∘ f = f
T: Type -> Type Return_T: Return T Bindt_TT: Bindt T T H: TraversableMonad T 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 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H2: Applicative G3 A, B: Type f: A -> G1 (T B)
map id ∘ f = f
T: Type -> Type Return_T: Return T Bindt_TT: Bindt T T H: TraversableMonad T 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 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H2: Applicative G3 A, B: Type f: A -> G1 (T B)
id ∘ f = f
reflexivity.Qed.
T: Type -> Type Return_T: Return T Bindt_TT: Bindt T T H: TraversableMonad T 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 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H2: Applicative G3
forall (CD : Type) (h : C -> G3 (T D)) (B : Type)
(g : B -> G2 (T C)) (A : Type) (f : A -> G1 (T B)),
h ⋆6 (g ⋆6 f) = (h ⋆6 g) ⋆6 f
T: Type -> Type Return_T: Return T Bindt_TT: Bindt T T H: TraversableMonad T 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 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H2: Applicative G3
forall (CD : Type) (h : C -> G3 (T D)) (B : Type)
(g : B -> G2 (T C)) (A : Type) (f : A -> G1 (T B)),
h ⋆6 (g ⋆6 f) = (h ⋆6 g) ⋆6 f
T: Type -> Type Return_T: Return T Bindt_TT: Bindt T T H: TraversableMonad T 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 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H2: Applicative G3 C, D: Type h: C -> G3 (T D) B: Type g: B -> G2 (T C) A: Type f: A -> G1 (T B)
h ⋆6 (g ⋆6 f) = (h ⋆6 g) ⋆6 f
T: Type -> Type Return_T: Return T Bindt_TT: Bindt T T H: TraversableMonad T 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 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H2: Applicative G3 C, D: Type h: C -> G3 (T D) B: Type g: B -> G2 (T C) A: Type f: A -> G1 (T B)
T: Type -> Type Return_T: Return T Bindt_TT: Bindt T T H: TraversableMonad T 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 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H2: Applicative G3 C, D: Type h: C -> G3 (T D) B: Type g: B -> G2 (T C) A: Type f: A -> G1 (T B)
T: Type -> Type Return_T: Return T Bindt_TT: Bindt T T H: TraversableMonad T 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 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H2: Applicative G3 C, D: Type h: C -> G3 (T D) B: Type g: B -> G2 (T C) A: Type f: A -> G1 (T B)
T: Type -> Type Return_T: Return T Bindt_TT: Bindt T T H: TraversableMonad T 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 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H2: Applicative G3 C, D: Type h: C -> G3 (T D) B: Type g: B -> G2 (T C) A: Type f: A -> G1 (T B) a: A
T: Type -> Type Return_T: Return T Bindt_TT: Bindt T T H: TraversableMonad T 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 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H2: Applicative G3 C, D: Type h: C -> G3 (T D) B: Type g: B -> G2 (T C) A: Type f: A -> G1 (T B) a: A
T: Type -> Type Return_T: Return T Bindt_TT: Bindt T T H: TraversableMonad T 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 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H2: Applicative G3 C, D: Type h: C -> G3 (T D) B: Type g: B -> G2 (T C) A: Type f: A -> G1 (T B) a: A
T: Type -> Type Return_T: Return T Bindt_TT: Bindt T T H: TraversableMonad T 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 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H2: Applicative G3 C, D: Type h: C -> G3 (T D) B: Type g: B -> G2 (T C) A: Type f: A -> G1 (T B) a: A
map (map (bindt h) ∘ bindt g) (f a) =
(map (bindt (map (bindt h) ∘ g)) ∘ f) a
T: Type -> Type Return_T: Return T Bindt_TT: Bindt T T H: TraversableMonad T 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 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H2: Applicative G3 C, D: Type h: C -> G3 (T D) B: Type g: B -> G2 (T C) A: Type f: A -> G1 (T B) a: A
map (bindt (h ⋆6 g)) (f a) =
(map (bindt (map (bindt h) ∘ g)) ∘ f) a
T: Type -> Type Return_T: Return T Bindt_TT: Bindt T T H: TraversableMonad T 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 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H2: Applicative G3 C, D: Type h: C -> G3 (T D) B: Type g: B -> G2 (T C) A: Type f: A -> G1 (T B) a: A
map (bindt (h ⋆6 g)) (f a) =
map (bindt (map (bindt h) ∘ g)) (f a)
reflexivity.Qed.EndKleisli_composition.(** * Derived Structures *)(**********************************************************************)From Tealeaves.Classes.Kleisli Require Import
TraversableFunctor Monad.(** ** Derived Operations *)(**********************************************************************)ModuleDerivedOperations.Sectionoperations.Context
(TU: Type -> Type)
`{Return_T: Return T}
`{Bindt_TU: Bindt T U}.#[export] InstanceMap_Bindt: Map U :=
fun (AB: Type) (f: A -> B) =>
bindt (G := funA => A) (ret (T := T) ∘ f).#[export] InstanceBind_Bindt: Bind T U
:= funABf =>
bindt (T := T) (G := funA => A) f.#[export] InstanceTraverse_Bindt: Traverse U
:= funG___ABf =>
bindt (map (F := G) (ret (T := T)) ∘ f).Endoperations.EndDerivedOperations.Sectioncompat_classes.Context
(TU: Type -> Type)
`{Return_T: Return T}
`{Map_U: Map U}
`{Traverse_U: Traverse U}
`{Bind_TU: Bind T U}
`{Bindt_TU: Bindt T U}.ClassCompat_Map_Bindt: Prop :=
compat_map_bindt:
Map_U = @DerivedOperations.Map_Bindt T U Return_T Bindt_TU.ClassCompat_Bind_Bindt: Prop :=
compat_bind_bindt:
@Bind_TU = @DerivedOperations.Bind_Bindt T U Bindt_TU.ClassCompat_Traverse_Bindt: Prop :=
compat_traverse_bindt:
forall (G: Type -> Type)
`{Map_G: Map G}
`{Pure_G: Pure G}
`{Mult_G: Mult G}
`{! Applicative G},
@Traverse_U G Map_G Pure_G Mult_G =
@DerivedOperations.Traverse_Bindt T U Return_T
Bindt_TU G Map_G Pure_G Mult_G.Endcompat_classes.Sectioncompat_instances.Context
`{Return_T: Return T}
`{Bindt_TU: Bindt T U}.
T: Type -> Type Return_T: Return T U: Type -> Type Bindt_TU: Bindt T U
Compat_Map_Bindt T U
T: Type -> Type Return_T: Return T U: Type -> Type Bindt_TU: Bindt T U
Compat_Map_Bindt T U
reflexivity.Qed.
T: Type -> Type Return_T: Return T U: Type -> Type Bindt_TU: Bindt T U
Compat_Bind_Bindt T U
T: Type -> Type Return_T: Return T U: Type -> Type Bindt_TU: Bindt T U
Compat_Bind_Bindt T U
reflexivity.Qed.
T: Type -> Type Return_T: Return T U: Type -> Type Bindt_TU: Bindt T U
Compat_Traverse_Bindt T U
T: Type -> Type Return_T: Return T U: Type -> Type Bindt_TU: Bindt T U
Compat_Traverse_Bindt T U
T: Type -> Type Return_T: Return T U: Type -> Type Bindt_TU: Bindt T U
forall (G : Type -> Type) (Map_G : Map G)
(Pure_G : Pure G) (Mult_G : Mult G),
Applicative G ->
DerivedOperations.Traverse_Bindt T U G Map_G Pure_G
Mult_G =
DerivedOperations.Traverse_Bindt T U G Map_G Pure_G
Mult_G
T: Type -> Type Return_T: Return T U: Type -> Type Bindt_TU: Bindt T U G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G Applicative0: Applicative G
DerivedOperations.Traverse_Bindt T U G Map_G Pure_G
Mult_G =
DerivedOperations.Traverse_Bindt T U G Map_G Pure_G
Mult_G
reflexivity.Qed.
T: Type -> Type Return_T: Return T U: Type -> Type Bindt_TU: Bindt T U H: Map U H0: Bind T U Compat_Bind_Bindt0: Compat_Bind_Bindt T U Compat_Map_Bindt0: Compat_Map_Bindt T U
Compat_Map_Bind T U
T: Type -> Type Return_T: Return T U: Type -> Type Bindt_TU: Bindt T U H: Map U H0: Bind T U Compat_Bind_Bindt0: Compat_Bind_Bindt T U Compat_Map_Bindt0: Compat_Map_Bindt T U
Compat_Map_Bind T U
T: Type -> Type Return_T: Return T U: Type -> Type Bindt_TU: Bindt T U H: Map U H0: Bind T U Compat_Bind_Bindt0: Compat_Bind_Bindt T U Compat_Map_Bindt0: Compat_Map_Bindt T U
H = DerivedOperations.Map_Bind T U
T: Type -> Type Return_T: Return T U: Type -> Type Bindt_TU: Bindt T U H: Map U H0: Bind T U Compat_Bind_Bindt0: Compat_Bind_Bindt T U Compat_Map_Bindt0: Compat_Map_Bindt T U
DerivedOperations.Map_Bindt T U =
DerivedOperations.Map_Bind T U
T: Type -> Type Return_T: Return T U: Type -> Type Bindt_TU: Bindt T U H: Map U H0: Bind T U Compat_Bind_Bindt0: Compat_Bind_Bindt T U Compat_Map_Bindt0: Compat_Map_Bindt T U
DerivedOperations.Map_Bindt T U =
(funAB : Type => bind ○ compose ret)
T: Type -> Type Return_T: Return T U: Type -> Type Bindt_TU: Bindt T U H: Map U H0: Bind T U Compat_Bind_Bindt0: Compat_Bind_Bindt T U Compat_Map_Bindt0: Compat_Map_Bindt T U
DerivedOperations.Map_Bindt T U =
(funAB : Type =>
DerivedOperations.Bind_Bindt T U A B ○ compose ret)
reflexivity.Qed.
T: Type -> Type Return_T: Return T U: Type -> Type Bindt_TU: Bindt T U H: Map U H0: Traverse U Compat_Traverse_Bindt0: Compat_Traverse_Bindt T U Compat_Map_Bindt0: Compat_Map_Bindt T U
Compat_Map_Traverse U
T: Type -> Type Return_T: Return T U: Type -> Type Bindt_TU: Bindt T U H: Map U H0: Traverse U Compat_Traverse_Bindt0: Compat_Traverse_Bindt T U Compat_Map_Bindt0: Compat_Map_Bindt T U
Compat_Map_Traverse U
T: Type -> Type Return_T: Return T U: Type -> Type Bindt_TU: Bindt T U H: Map U H0: Traverse U Compat_Traverse_Bindt0: Compat_Traverse_Bindt T U Compat_Map_Bindt0: Compat_Map_Bindt T U
H = DerivedOperations.Map_Traverse U
T: Type -> Type Return_T: Return T U: Type -> Type Bindt_TU: Bindt T U H: Map U H0: Traverse U Compat_Traverse_Bindt0: Compat_Traverse_Bindt T U Compat_Map_Bindt0: Compat_Map_Bindt T U
DerivedOperations.Map_Bindt T U =
DerivedOperations.Map_Traverse U
T: Type -> Type Return_T: Return T U: Type -> Type Bindt_TU: Bindt T U H: Map U H0: Traverse U Compat_Traverse_Bindt0: Compat_Traverse_Bindt T U Compat_Map_Bindt0: Compat_Map_Bindt T U
DerivedOperations.Map_Bindt T U =
(fun (AB : Type) (f : A -> B) => traverse f)
T: Type -> Type Return_T: Return T U: Type -> Type Bindt_TU: Bindt T U H: Map U H0: Traverse U Compat_Traverse_Bindt0: Compat_Traverse_Bindt T U Compat_Map_Bindt0: Compat_Map_Bindt T U
DerivedOperations.Map_Bindt T U =
DerivedOperations.Traverse_Bindt T U
(funA : Type => A) Map_I Pure_I Mult_I
reflexivity.Qed.Endcompat_instances.Sectionrewriting_laws.Context
`{Return_T: Return T}
`{Map_U: Map U}
`{Traverse_U: Traverse U}
`{Bind_TU: Bind T U}
`{Bindt_TU: Bindt T U}.
T: Type -> Type Return_T: Return T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt0: Compat_Map_Bindt T U A, B: Type f: A -> B
map f = bindt (ret ∘ f)
T: Type -> Type Return_T: Return T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt0: Compat_Map_Bindt T U A, B: Type f: A -> B
map f = bindt (ret ∘ f)
T: Type -> Type Return_T: Return T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt0: Compat_Map_Bindt T U A, B: Type f: A -> B
DerivedOperations.Map_Bindt T U A B f =
bindt (ret ∘ f)
reflexivity.Qed.
T: Type -> Type Return_T: Return T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Bind_Bindt0: Compat_Bind_Bindt T U A, B: Type f: A -> T B
bind f = bindt f
T: Type -> Type Return_T: Return T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Bind_Bindt0: Compat_Bind_Bindt T U A, B: Type f: A -> T B
bind f = bindt f
T: Type -> Type Return_T: Return T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Bind_Bindt0: Compat_Bind_Bindt T U A, B: Type f: A -> T B
DerivedOperations.Bind_Bindt T U A B f = bindt f
reflexivity.Qed.
T: Type -> Type Return_T: Return T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Traverse_Bindt0: Compat_Traverse_Bindt 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 = bindt (map ret ∘ f)
T: Type -> Type Return_T: Return T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Traverse_Bindt0: Compat_Traverse_Bindt 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 = bindt (map ret ∘ f)
T: Type -> Type Return_T: Return T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Traverse_Bindt0: Compat_Traverse_Bindt 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
DerivedOperations.Traverse_Bindt T U G Map_G Pure_G
Mult_G A B f = bindt (map ret ∘ f)
reflexivity.Qed.Endrewriting_laws.(** ** Composition with the Identity Applicative *)(**********************************************************************)Sectiontraversable_monad_identity_applicative.Context
`{TraversableRightModule T U}.
T, U: Type -> Type Return_T: Return T Bindt_TT: Bindt T T Bindt_TU: Bindt T U H: TraversableRightModule T U
forall (AB : Type) (G : Type -> Type) (Map_G : Map G)
(Pure_G : Pure G) (Mult_G : Mult G),
Applicative G ->
forallf : A -> G (T B), bindt f = bindt f
T, U: Type -> Type Return_T: Return T Bindt_TT: Bindt T T Bindt_TU: Bindt T U H: TraversableRightModule T U
forall (AB : Type) (G : Type -> Type) (Map_G : Map G)
(Pure_G : Pure G) (Mult_G : Mult G),
Applicative G ->
forallf : A -> G (T B), bindt f = bindt f
T, U: Type -> Type Return_T: Return T Bindt_TT: Bindt T T Bindt_TU: Bindt T U H: TraversableRightModule T U A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H0: Applicative G f: A -> G (T B)
bindt f = bindt f
T, U: Type -> Type Return_T: Return T Bindt_TT: Bindt T T Bindt_TU: Bindt T U H: TraversableRightModule T U A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H0: Applicative G f: A -> G (T B)
Mult_compose (funA : Type => A) G = Mult_G
nowrewrite (Mult_compose_identity2 G).Qed.
T, U: Type -> Type Return_T: Return T Bindt_TT: Bindt T T Bindt_TU: Bindt T U H: TraversableRightModule T U
forall (AB : Type) (G : Type -> Type) (Map_G : Map G)
(Pure_G : Pure G) (Mult_G : Mult G),
Applicative G ->
forallf : A -> G (T B), bindt f = bindt f
T, U: Type -> Type Return_T: Return T Bindt_TT: Bindt T T Bindt_TU: Bindt T U H: TraversableRightModule T U
forall (AB : Type) (G : Type -> Type) (Map_G : Map G)
(Pure_G : Pure G) (Mult_G : Mult G),
Applicative G ->
forallf : A -> G (T B), bindt f = bindt f
T, U: Type -> Type Return_T: Return T Bindt_TT: Bindt T T Bindt_TU: Bindt T U H: TraversableRightModule T U A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H0: Applicative G f: A -> G (T B)
bindt f = bindt f
T, U: Type -> Type Return_T: Return T Bindt_TT: Bindt T T Bindt_TU: Bindt T U H: TraversableRightModule T U A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H0: Applicative G f: A -> G (T B)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type
forall (g : B -> G2 C) (f : A -> G1 B),
map ret ∘ g ⋆6 map ret ∘ f = map ret ∘ map g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type
forall (g : B -> G2 C) (f : A -> G1 B),
map ret ∘ g ⋆6 map ret ∘ f = map ret ∘ map g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> G2 C f: A -> G1 B
map ret ∘ g ⋆6 map ret ∘ f = map ret ∘ map g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> G2 C f: A -> G1 B
map (bindt (map ret ∘ g)) ∘ (map ret ∘ f) =
map ret ∘ map g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> G2 C f: A -> G1 B
map (bindt (map ret ∘ g)) ∘ map ret ∘ f =
map ret ∘ map g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> G2 C f: A -> G1 B
map (bindt (map ret ∘ g) ∘ ret) ∘ f =
map ret ∘ map g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> G2 C f: A -> G1 B
map (bindt (map ret ∘ g) ∘ ret) ∘ f =
map (map ret) ∘ map g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> G2 C f: A -> G1 B
map (bindt (map ret ∘ g) ∘ ret) ∘ f =
map (map ret) ∘ map g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> G2 C f: A -> G1 B
map (bindt (map ret ∘ g) ∘ ret) ∘ f =
map (map ret ∘ g) ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> G2 C f: A -> G1 B
map (map ret ∘ g) ∘ f = map (map ret ∘ g) ∘ f
reflexivity.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type
forall (g : B -> T C) (f : A -> T B), g ⋆6 f = g ⋆ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type
forall (g : B -> T C) (f : A -> T B), g ⋆6 f = g ⋆ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> T C f: A -> T B
g ⋆6 f = g ⋆ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> T C f: A -> T B
map (bindt g) ∘ f = bind g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> T C f: A -> T B
map (bindt g) ∘ f = bindt g ∘ f
reflexivity.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type
forall (g : B -> C) (f : A -> B),
ret ∘ g ⋆6 ret ∘ f = ret ∘ g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type
forall (g : B -> C) (f : A -> B),
ret ∘ g ⋆6 ret ∘ f = ret ∘ g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> C f: A -> B
ret ∘ g ⋆6 ret ∘ f = ret ∘ g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> C f: A -> B
map (bindt (ret ∘ g)) ∘ (ret ∘ f) = ret ∘ g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> C f: A -> B
map (bindt (ret ∘ g)) ∘ ret ∘ f = ret ∘ g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> C f: A -> B
bindt (ret ∘ g) ∘ ret ∘ f = ret ∘ g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> C f: A -> B
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type
forall (g : B -> G2 (T C)) (f : A -> T B),
g ⋆6 f = bindt g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type
forall (g : B -> G2 (T C)) (f : A -> T B),
g ⋆6 f = bindt g ∘ f
reflexivity.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type
forall (g : B -> G2 (T C)) (f : A -> G1 B),
g ⋆6 map ret ∘ f = map g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type
forall (g : B -> G2 (T C)) (f : A -> G1 B),
g ⋆6 map ret ∘ f = map g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> G2 (T C) f: A -> G1 B
g ⋆6 map ret ∘ f = map g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> G2 (T C) f: A -> G1 B
map (bindt g) ∘ (map ret ∘ f) = map g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> G2 (T C) f: A -> G1 B
map (bindt g) ∘ map ret ∘ f = map g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> G2 (T C) f: A -> G1 B
map (bindt g ∘ ret) ∘ f = map g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> G2 (T C) f: A -> G1 B
map g ∘ f = map g ∘ f
reflexivity.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type
forall (g : B -> G2 (T C)) (f : A -> B),
g ⋆6 ret ∘ f = g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type
forall (g : B -> G2 (T C)) (f : A -> B),
g ⋆6 ret ∘ f = g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> G2 (T C) f: A -> B
g ⋆6 ret ∘ f = g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> G2 (T C) f: A -> B
map (bindt g) ∘ (ret ∘ f) = g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> G2 (T C) f: A -> B
map (bindt g) ∘ ret ∘ f = g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> G2 (T C) f: A -> B
bindt g ∘ ret ∘ f = g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> G2 (T C) f: A -> B
g ∘ f = g ∘ f
reflexivity.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type
forall (g : B -> T C) (f : A -> G1 (T B)),
g ⋆6 f = map (bind g) ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type
forall (g : B -> T C) (f : A -> G1 (T B)),
g ⋆6 f = map (bind g) ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> T C f: A -> G1 (T B)
g ⋆6 f = map (bind g) ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> T C f: A -> G1 (T B)
g ⋆6 f = map (bindt g) ∘ f
reflexivity.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type
forall (g : B -> G2 C) (f : A -> G1 (T B)),
map ret ∘ g ⋆6 f = map (traverse g) ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type
forall (g : B -> G2 C) (f : A -> G1 (T B)),
map ret ∘ g ⋆6 f = map (traverse g) ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> G2 C f: A -> G1 (T B)
map ret ∘ g ⋆6 f = map (traverse g) ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> G2 C f: A -> G1 (T B)
map ret ∘ g ⋆6 f = map (bindt (map ret ∘ g)) ∘ f
reflexivity.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type
forall (g : B -> C) (f : A -> G1 (T B)),
ret ∘ g ⋆6 f = map (map g) ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type
forall (g : B -> C) (f : A -> G1 (T B)),
ret ∘ g ⋆6 f = map (map g) ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> C f: A -> G1 (T B)
ret ∘ g ⋆6 f = map (map g) ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> C f: A -> G1 (T B)
ret ∘ g ⋆6 f = map (bindt (ret ∘ g)) ∘ f
reflexivity.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type
forall (g : B -> T C) (f : A -> G1 B),
g ⋆6 map ret ∘ f = map g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type
forall (g : B -> T C) (f : A -> G1 B),
g ⋆6 map ret ∘ f = map g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> T C f: A -> G1 B
g ⋆6 map ret ∘ f = map g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> T C f: A -> G1 B
map (bindt g) ∘ (map ret ∘ f) = map g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> T C f: A -> G1 B
map (bindt g) ∘ map ret ∘ f = map g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> T C f: A -> G1 B
map (bindt g ∘ ret) ∘ f = map g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> T C f: A -> G1 B
map g ∘ f = map g ∘ f
reflexivity.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type
forall (g : B -> G2 C) (f : A -> T B),
map ret ∘ g ⋆6 f = traverse g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type
forall (g : B -> G2 C) (f : A -> T B),
map ret ∘ g ⋆6 f = traverse g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> G2 C f: A -> T B
map ret ∘ g ⋆6 f = traverse g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> G2 C f: A -> T B
map (bindt (map ret ∘ g)) ∘ f = traverse g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> G2 C f: A -> T B
map (bindt (map ret ∘ g)) ∘ f =
bindt (map ret ∘ g) ∘ f
reflexivity.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type
forall (g : B -> G2 C) (f : A -> B),
map ret ∘ g ⋆6 ret ∘ f = map ret ∘ g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type
forall (g : B -> G2 C) (f : A -> B),
map ret ∘ g ⋆6 ret ∘ f = map ret ∘ g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> G2 C f: A -> B
map ret ∘ g ⋆6 ret ∘ f = map ret ∘ g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> G2 C f: A -> B
map (bindt (map ret ∘ g)) ∘ (ret ∘ f) =
map ret ∘ g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> G2 C f: A -> B
map (bindt (map ret ∘ g)) ∘ ret ∘ f = map ret ∘ g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> G2 C f: A -> B
bindt (map ret ∘ g) ∘ ret ∘ f = map ret ∘ g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> G2 C f: A -> B
map ret ∘ g ∘ f = map ret ∘ g ∘ f
reflexivity.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type
forall (g : B -> C) (f : A -> G1 B),
ret ∘ g ⋆6 map ret ∘ f = map ret ∘ map g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type
forall (g : B -> C) (f : A -> G1 B),
ret ∘ g ⋆6 map ret ∘ f = map ret ∘ map g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> C f: A -> G1 B
ret ∘ g ⋆6 map ret ∘ f = map ret ∘ map g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> C f: A -> G1 B
map (bindt (ret ∘ g)) ∘ (map ret ∘ f) =
map ret ∘ map g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> C f: A -> G1 B
map (bindt (ret ∘ g)) ∘ map ret ∘ f =
map ret ∘ map g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> C f: A -> G1 B
map (bindt (ret ∘ g) ∘ ret) ∘ f = map ret ∘ map g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> C f: A -> G1 B
map (bindt (ret ∘ g) ∘ ret) ∘ f = map (ret ∘ g) ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> C f: A -> G1 B
map (ret ∘ g) ∘ f = map (ret ∘ g) ∘ f
reflexivity.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type
forall (g : B -> C) (f : A -> T B),
ret ∘ g ⋆6 f = map g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type
forall (g : B -> C) (f : A -> T B),
ret ∘ g ⋆6 f = map g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> C f: A -> T B
ret ∘ g ⋆6 f = map g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> C f: A -> T B
map (bindt (ret ∘ g)) ∘ f = map g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> C f: A -> T B
map (bindt (ret ∘ g)) ∘ f = bindt (ret ∘ g) ∘ f
reflexivity.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type
forall (g : B -> T C) (f : A -> B),
g ⋆6 ret ∘ f = g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type
forall (g : B -> T C) (f : A -> B),
g ⋆6 ret ∘ f = g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> T C f: A -> B
g ⋆6 ret ∘ f = g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> T C f: A -> B
map (bindt g) ∘ (ret ∘ f) = g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> T C f: A -> B
map (bindt g) ∘ ret ∘ f = g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> T C f: A -> B
bindt g ∘ ret ∘ f = g ∘ f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 G3: Type -> Type Map_G1: Map G3 Pure_G1: Pure G3 Mult_G1: Mult G3 H1: Applicative G3 A, B, C: Type g: B -> T C f: A -> B
g ∘ f = g ∘ f
reflexivity.Qed.Endtraversable_monad_derived_kleisli_composition_laws.(** ** Derived Composition Laws *)(**********************************************************************)Sectiontraversable_monad_derived_composition_laws.Import Kleisli.Monad.Notations.Import Kleisli.TraversableFunctor.Notations.Context
`{Return_T: Return T}
`{Map_T: Map T}
`{Traverse_T: Traverse T}
`{Bind_T: Bind T T}
`{Bindt_TT: Bindt T T}
`{! Compat_Map_Bindt T T}
`{! Compat_Traverse_Bindt T T}
`{! Compat_Bind_Bindt T T}
`{! TraversableMonad T}.Context
`{Map_U: Map U}
`{Traverse_U: Traverse U}
`{Bind_TU: Bind T U}
`{Bindt_TU: Bindt T U}
`{! Compat_Map_Bindt T U}
`{! Compat_Traverse_Bindt T U}
`{! Compat_Bind_Bindt T U}
`{! TraversableRightPreModule T U}.Context
`{Applicative G1}
`{Applicative G2}
(A B C: Type).(** *** Composition with <<traverse>> *)(********************************************************************)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: 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 (T B)),
map (traverse g) ∘ bindt f =
bindt (map (traverse g) ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: 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 (T B)),
map (traverse g) ∘ bindt f =
bindt (map (traverse g) ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 (T B)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 (T B)
map (bindt (map ret ∘ g)) ∘ bindt f =
bindt (map (traverse g) ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 (T B)
map (bindt (map ret ∘ g)) ∘ bindt f =
bindt (map (bindt (map ret ∘ g)) ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 (T B)
bindt (map ret ∘ g ⋆6 f) =
bindt (map (bindt (map ret ∘ g)) ∘ f)
reflexivity.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: 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 B),
map (bindt g) ∘ traverse f = bindt (map g ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: 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 B),
map (bindt g) ∘ traverse f = bindt (map g ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 B
map (bindt g) ∘ traverse f = bindt (map g ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 B
map (bindt g) ∘ bindt (map ret ∘ f) =
bindt (map g ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 B
bindt (g ⋆6 map ret ∘ f) = bindt (map g ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 B
bindt (map g ∘ f) = bindt (map g ∘ f)
reflexivity.Qed.(** *** Composition with <<bind>> *)(********************************************************************)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: 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 -> G1 (T B)),
map (bind g) ∘ bindt f = bindt (map (bind g) ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: 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 -> G1 (T B)),
map (bind g) ∘ bindt f = bindt (map (bind g) ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 -> G1 (T B)
map (bind g) ∘ bindt f = bindt (map (bind g) ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 -> G1 (T B)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 -> G1 (T B)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 -> G1 (T B)
bindt (g ⋆6 f) = bindt (map (bindt g) ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 -> G1 (T B)
bindt (g ⋆6 f) = bindt (map (bindt g) ∘ f)
reflexivity.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: 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 -> T B),
bindt g ∘ bind f = bindt (bindt g ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: 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 -> T B),
bindt g ∘ bind f = bindt (bindt g ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 -> T B
bindt g ∘ bind f = bindt (bindt g ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 -> T B
bindt g ∘ bindt f = bindt (bindt g ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 -> T B
map (bindt g) ∘ bindt f = bindt (bindt g ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 -> T B
bindt (g ⋆6 f) = bindt (bindt g ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 -> T B
bindt (g ⋆6 f) = bindt (bindt g ∘ f)
reflexivity.Qed.(** *** Composition with <<map>> *)(********************************************************************)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: 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 -> G1 (T B)),
map (map g) ∘ bindt f = bindt (map (map g) ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: 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 -> G1 (T B)),
map (map g) ∘ bindt f = bindt (map (map g) ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 -> G1 (T B)
map (map g) ∘ bindt f = bindt (map (map g) ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 -> G1 (T B)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 -> G1 (T B)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 -> G1 (T B)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 -> G1 (T B)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: 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 -> B),
bindt g ∘ map f = bindt (g ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: 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 -> B),
bindt g ∘ map f = bindt (g ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 -> B
bindt g ∘ map f = bindt (g ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 -> B
bindt g ∘ bindt (ret ∘ f) = bindt (g ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 -> B
map (bindt g) ∘ bindt (ret ∘ f) = bindt (g ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 -> B
bindt (g ⋆6 ret ∘ f) = bindt (g ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 -> B
bindt (g ⋆6 ret ∘ f) = bindt (g ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 -> B
bindt (g ∘ f) = bindt (g ∘ f)
reflexivity.Qed.(** *** Composition between <<traverse>> and <<bind>> *)(********************************************************************)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: 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 -> T B),
traverse g ∘ bind f = bindt (traverse g ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: 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 -> T B),
traverse g ∘ bind f = bindt (traverse g ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 -> T B
traverse g ∘ bind f = bindt (traverse g ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 -> T B
bindt (map ret ∘ g) ∘ bind f = bindt (traverse g ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 -> T B
bindt (map ret ∘ g) ∘ bindt f = bindt (traverse g ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 -> T B
map (bindt (map ret ∘ g)) ∘ bindt f =
bindt (traverse g ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 -> T B
bindt (map ret ∘ g ⋆6 f) = bindt (traverse g ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 -> T B
bindt (map ret ∘ g ⋆6 f) = bindt (traverse g ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 -> T B
bindt (traverse g ∘ f) = bindt (traverse g ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 -> T B
bindt (bindt (map ret ∘ g) ∘ f) =
bindt (bindt (map ret ∘ g) ∘ f)
reflexivity.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: 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 -> G1 B),
map (bind g) ∘ traverse f = bindt (map g ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: 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 -> G1 B),
map (bind g) ∘ traverse f = bindt (map g ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 -> G1 B
map (bind g) ∘ traverse f = bindt (map g ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 -> G1 B
map (bind g) ∘ bindt (map ret ∘ f) = bindt (map g ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 -> G1 B
map (bindt g) ∘ bindt (map ret ∘ f) =
bindt (map g ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 -> G1 B
bindt (g ⋆6 map ret ∘ f) = bindt (map g ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 -> G1 B
bindt (g ⋆6 map ret ∘ f) = bindt (map g ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 -> G1 B
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: 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 (AB : Type) (f : A -> T B), bind f ∘ ret = f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: 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 (AB : Type) (f : A -> T B), bind f ∘ ret = f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C, A0, B0: Type f: A0 -> T B0
bind f ∘ ret = f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C, A0, B0: Type f: A0 -> T B0
bindt f ∘ ret = f
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C, A0, B0: Type f: A0 -> T B0
f = f
reflexivity.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forallA : Type, bind ret = id
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forallA : Type, bind ret = id
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C, A0: Type
bind ret = id
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C, A0: Type
bindt ret = id
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C, A0: Type
id = id
reflexivity.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: 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),
bind g ∘ bind f = bind (g ⋆ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: 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),
bind g ∘ bind f = bind (g ⋆ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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
bind g ∘ bind f = bind (g ⋆ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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
bindt g ∘ bindt f = bind (g ⋆ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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
map (bindt g) ∘ bindt f = bind (g ⋆ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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
map (bindt g) ∘ bindt f = bind (g ⋆ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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
bindt (g ⋆6 f) = bind (g ⋆ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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
bindt (g ⋆6 f) = bind (g ⋆ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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
bindt (g ⋆ f) = bind (g ⋆ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forallA : Type, traverse id = id
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forallA : Type, traverse id = id
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C, A0: Type
traverse id = id
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C, A0: Type
bindt (map ret ∘ id) = id
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C, A0: Type
bindt (map ret) = id
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C, A0: Type
bindt ret = id
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C, A0: Type
id = id
reflexivity.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : B -> G2 C) (f : A -> G1 B),
map (traverse g) ∘ traverse f = traverse (map g ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type
forall (g : B -> G2 C) (f : A -> G1 B),
map (traverse g) ∘ traverse f = traverse (map g ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 (map g ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 (bindt (map ret ∘ g)) ∘ traverse f =
traverse (map g ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 (bindt (map ret ∘ g)) ∘ bindt (map ret ∘ f) =
traverse (map g ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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
bindt (map ret ∘ g ⋆6 map ret ∘ f) =
traverse (map g ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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
bindt (map ret ∘ map g ∘ f) = traverse (map g ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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
bindt (map ret ∘ map g ∘ f) =
bindt (map ret ∘ (map g ∘ f))
reflexivity.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: 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ϕ : forallA : Type, G1 A -> G2 A,
ApplicativeMorphism G1 G2 ϕ ->
forall (AB : Type) (f : A -> G1 B),
ϕ (U B) ∘ traverse f = traverse (ϕ B ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: 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ϕ : forallA : Type, G1 A -> G2 A,
ApplicativeMorphism G1 G2 ϕ ->
forall (AB : Type) (f : A -> G1 B),
ϕ (U B) ∘ traverse f = traverse (ϕ B ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type ϕ: forallA : Type, G1 A -> G2 A ApplicativeMorphism0: ApplicativeMorphism G1 G2 ϕ A0, B0: Type f: A0 -> G1 B0
ϕ (U B0) ∘ traverse f = traverse (ϕ B0 ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type ϕ: forallA : Type, G1 A -> G2 A ApplicativeMorphism0: ApplicativeMorphism G1 G2 ϕ A0, B0: Type f: A0 -> G1 B0 app1: Applicative G1 app2: Applicative G2
ϕ (U B0) ∘ traverse f = traverse (ϕ B0 ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type ϕ: forallA : Type, G1 A -> G2 A ApplicativeMorphism0: ApplicativeMorphism G1 G2 ϕ A0, B0: Type f: A0 -> G1 B0 app1: Applicative G1 app2: Applicative G2
ϕ (U B0) ∘ bindt (map ret ∘ f) = traverse (ϕ B0 ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type ϕ: forallA : Type, G1 A -> G2 A ApplicativeMorphism0: ApplicativeMorphism G1 G2 ϕ A0, B0: Type f: A0 -> G1 B0 app1: Applicative G1 app2: Applicative G2
ϕ (U B0) ∘ bindt (map ret ∘ f) =
bindt (map ret ∘ (ϕ B0 ∘ f))
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type ϕ: forallA : Type, G1 A -> G2 A ApplicativeMorphism0: ApplicativeMorphism G1 G2 ϕ A0, B0: Type f: A0 -> G1 B0 app1: Applicative G1 app2: Applicative G2
bindt (ϕ (T B0) ∘ (map ret ∘ f)) =
bindt (map ret ∘ (ϕ B0 ∘ f))
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type ϕ: forallA : Type, G1 A -> G2 A ApplicativeMorphism0: ApplicativeMorphism G1 G2 ϕ A0, B0: Type f: A0 -> G1 B0 app1: Applicative G1 app2: Applicative G2
bindt (ϕ (T B0) ∘ map ret ∘ f) =
bindt (map ret ∘ (ϕ B0 ∘ f))
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_T: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U: Map U Traverse_U: Traverse U Bind_TU: Bind T U Bindt_TU: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H0: Applicative G2 A, B, C: Type ϕ: forallA : Type, G1 A -> G2 A ApplicativeMorphism0: ApplicativeMorphism G1 G2 ϕ A0, B0: Type f: A0 -> G1 B0 app1: Applicative G1 app2: Applicative G2
bindt (map ret ∘ ϕ B0 ∘ f) =
bindt (map ret ∘ (ϕ B0 ∘ f))
reflexivity.Qed.Endtraversable_monad_derived_composition_laws.(** ** Derived Typeclass Instances *)(**********************************************************************)ModuleDerivedInstances.Sectioninstances.Context
`{Return_T: Return T}
`{Map_T: Map T}
`{Traverse_T: Traverse T}
`{Bind_TT: Bind T T}
`{Bindt_TT: Bindt T T}
`{! Compat_Map_Bindt T T}
`{! Compat_Traverse_Bindt T T}
`{! Compat_Bind_Bindt T T}
`{! TraversableMonad T}.
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_TT: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T
TraversableFunctor T
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_TT: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T
TraversableFunctor T
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_TT: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T A: Type
traverse id = id
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_TT: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 (kc2 g f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_TT: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1, G2: Type -> Type H: Map G1 H0: Mult G1 H1: Pure G1 H2: Map G2 H3: Mult G2 H4: Pure G2 ϕ: forallA : Type, G1 A -> G2 A morphism: ApplicativeMorphism G1 G2 ϕ A, B: Type f: A -> G1 B
ϕ (T B) ∘ traverse f = traverse (ϕ B ∘ f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_TT: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T A: Type
traverse id = id
apply traverse_id.
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_TT: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 (kc2 g f)
apply traverse_traverse.
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_TT: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T G1, G2: Type -> Type H: Map G1 H0: Mult G1 H1: Pure G1 H2: Map G2 H3: Mult G2 H4: Pure G2 ϕ: forallA : Type, G1 A -> G2 A morphism: ApplicativeMorphism G1 G2 ϕ A, B: Type f: A -> G1 B
ϕ (T B) ∘ traverse f = traverse (ϕ B ∘ f)
apply traverse_morphism.Qed.#[export] InstanceRightPreModule_TraversableMonad:
RightPreModule T T :=
{| kmod_bind1 := bind_id;
kmod_bind2 := bind_bind;
|}.#[export] InstanceMonad_TraversableMonad: Monad T :=
{| kmon_bind0 := bind_ret;
|}.#[local] InstanceTraversableRightModule_TraversableMonad:
TraversableRightModule T T :=
{| ktmod_monad := _;
|}.(* #[export] Instance Functor_TraversableMonad: Functor T := DerivedInstances.Functor_TraversableFunctor. (* or DerivedInstances.Functor_Monad. *) *)Context
`{Map_U_inst: Map U}
`{Traverse_U_inst: Traverse U}
`{Bind_U_inst: Bind T U}
`{Bindt_U_inst: Bindt T U}
`{! Compat_Map_Bindt T U}
`{! Compat_Traverse_Bindt T U}
`{! Compat_Bind_Bindt T U}
`{! TraversableRightPreModule T U}.
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_TT: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U
TraversableFunctor U
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_TT: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U
TraversableFunctor U
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_TT: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U A: Type
traverse id = id
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_TT: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 (kc2 g f)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_TT: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
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)
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_TT: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U A: Type
traverse id = id
apply traverse_id.
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_TT: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
T U G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H: Applicative 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 (kc2 g f)
apply traverse_traverse.
T: Type -> Type Return_T: Return T Map_T: Map T Traverse_T: Traverse T Bind_TT: Bind T T Bindt_TT: Bindt T T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T TraversableMonad0: TraversableMonad T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U TraversableRightPreModule0: TraversableRightPreModule
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)
apply traverse_morphism.Qed.#[export] InstanceRightPreModule_TraversableRightPreModule:
RightPreModule T U :=
{| kmod_bind1 := bind_id;
kmod_bind2 := bind_bind;
|}.#[export] InstanceRightModule_TraversableRightModule:
RightModule T U :=
{| kmod_premod := _
|}.Endinstances.EndDerivedInstances.(** * Notations *)(**********************************************************************)ModuleNotations.Infix"⋆6" := (kc6) (at level60): tealeaves_scope.EndNotations.