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 Import
Classes.Kleisli.DecoratedTraversableFunctor
Classes.Kleisli.DecoratedTraversableMonad.#[local] Generalizable VariablesF T U W.Import Monoid.Notations.Import Product.Notations.Import DecoratedTraversableFunctor.Notations.(** * Composition of Two <<DTF>> Instances *)(******************************************************************************)(** ** Composition of <<mapdt>> Operations *)(******************************************************************************)#[export] InstanceMapdt_compose `{op: Monoid_op W}
`{Mapdt W F1} `{Mapdt W F2}: Mapdt W (F1 ○ F2) :=
funGmappuremultABf =>
mapdt (T := F1) (G := G) (fun '(w1, t) => mapdt (T := F2) (f ⦿ w1) t).(** ** <<DecoratedTraversableFunctor>> Laws *)(******************************************************************************)Sectioncompose_functors.Context
`{Monoid W}.Context
`{Mapdt W F1} `{Mapdt W F2}
`{! DecoratedTraversableFunctor W F1}
`{! DecoratedTraversableFunctor W F2}.
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F1: Type -> Type H0: Mapdt W F1 F2: Type -> Type H1: Mapdt W F2 DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F1 DecoratedTraversableFunctor1: DecoratedTraversableFunctor
W F2
forallA : Type, mapdt extract = id
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F1: Type -> Type H0: Mapdt W F1 F2: Type -> Type H1: Mapdt W F2 DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F1 DecoratedTraversableFunctor1: DecoratedTraversableFunctor
W F2
forallA : Type, mapdt extract = id
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F1: Type -> Type H0: Mapdt W F1 F2: Type -> Type H1: Mapdt W F2 DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F1 DecoratedTraversableFunctor1: DecoratedTraversableFunctor
W F2 A: Type
mapdt extract = id
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F1: Type -> Type H0: Mapdt W F1 F2: Type -> Type H1: Mapdt W F2 DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F1 DecoratedTraversableFunctor1: DecoratedTraversableFunctor
W F2 A: Type
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F1: Type -> Type H0: Mapdt W F1 F2: Type -> Type H1: Mapdt W F2 DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F1 DecoratedTraversableFunctor1: DecoratedTraversableFunctor
W F2 A: Type
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F1: Type -> Type H0: Mapdt W F1 F2: Type -> Type H1: Mapdt W F2 DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F1 DecoratedTraversableFunctor1: DecoratedTraversableFunctor
W F2 A: Type
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F1: Type -> Type H0: Mapdt W F1 F2: Type -> Type H1: Mapdt W F2 DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F1 DecoratedTraversableFunctor1: DecoratedTraversableFunctor
W F2 A: Type w: W t: F2 A
mapdt (extract ⦿ w) t = extract (w, t)
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F1: Type -> Type H0: Mapdt W F1 F2: Type -> Type H1: Mapdt W F2 DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F1 DecoratedTraversableFunctor1: DecoratedTraversableFunctor
W F2 A: Type w: W t: F2 A
mapdt extract t = extract (w, t)
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F1: Type -> Type H0: Mapdt W F1 F2: Type -> Type H1: Mapdt W F2 DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F1 DecoratedTraversableFunctor1: DecoratedTraversableFunctor
W F2 A: Type w: W t: F2 A
id t = extract (w, t)
reflexivity.Qed.
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F1: Type -> Type H0: Mapdt W F1 F2: Type -> Type H1: Mapdt W F2 DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F1 DecoratedTraversableFunctor1: DecoratedTraversableFunctor
W F2
forall (G1 : Type -> Type) (H2 : Map G1)
(H3 : Pure G1) (H4 : Mult G1),
Applicative G1 ->
forall (G2 : Type -> Type) (H5 : Map G2)
(H6 : Pure G2) (H7 : Mult G2),
Applicative G2 ->
forall (ABC : Type) (g : W * B -> G2 C)
(f : W * A -> G1 B),
map (mapdt g) ∘ mapdt f = mapdt (g ⋆3 f)
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F1: Type -> Type H0: Mapdt W F1 F2: Type -> Type H1: Mapdt W F2 DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F1 DecoratedTraversableFunctor1: DecoratedTraversableFunctor
W F2
forall (G1 : Type -> Type) (H2 : Map G1)
(H3 : Pure G1) (H4 : Mult G1),
Applicative G1 ->
forall (G2 : Type -> Type) (H5 : Map G2)
(H6 : Pure G2) (H7 : Mult G2),
Applicative G2 ->
forall (ABC : Type) (g : W * B -> G2 C)
(f : W * A -> G1 B),
map (mapdt g) ∘ mapdt f = mapdt (g ⋆3 f)
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F1: Type -> Type H0: Mapdt W F1 F2: Type -> Type H1: Mapdt W F2 DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F1 DecoratedTraversableFunctor1: DecoratedTraversableFunctor
W F2 G1: Type -> Type H2: Map G1 H3: Pure G1 H4: Mult G1 H5: Applicative G1 G2: Type -> Type H6: Map G2 H7: Pure G2 H8: Mult G2 H9: Applicative G2 A, B, C: Type g: W * B -> G2 C f: W * A -> G1 B
map (mapdt g) ∘ mapdt f = mapdt (g ⋆3 f)
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F1: Type -> Type H0: Mapdt W F1 F2: Type -> Type H1: Mapdt W F2 DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F1 DecoratedTraversableFunctor1: DecoratedTraversableFunctor
W F2 G1: Type -> Type H2: Map G1 H3: Pure G1 H4: Mult G1 H5: Applicative G1 G2: Type -> Type H6: Map G2 H7: Pure G2 H8: Mult G2 H9: Applicative G2 A, B, C: Type g: W * B -> G2 C f: W * A -> G1 B
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F1: Type -> Type H0: Mapdt W F1 F2: Type -> Type H1: Mapdt W F2 DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F1 DecoratedTraversableFunctor1: DecoratedTraversableFunctor
W F2 G1: Type -> Type H2: Map G1 H3: Pure G1 H4: Mult G1 H5: Applicative G1 G2: Type -> Type H6: Map G2 H7: Pure G2 H8: Mult G2 H9: Applicative G2 A, B, C: Type g: W * B -> G2 C f: W * A -> G1 B
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F1: Type -> Type H0: Mapdt W F1 F2: Type -> Type H1: Mapdt W F2 DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F1 DecoratedTraversableFunctor1: DecoratedTraversableFunctor
W F2 G1: Type -> Type H2: Map G1 H3: Pure G1 H4: Mult G1 H5: Applicative G1 G2: Type -> Type H6: Map G2 H7: Pure G2 H8: Mult G2 H9: Applicative G2 A, B, C: Type g: W * B -> G2 C f: W * A -> G1 B
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F1: Type -> Type H0: Mapdt W F1 F2: Type -> Type H1: Mapdt W F2 DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F1 DecoratedTraversableFunctor1: DecoratedTraversableFunctor
W F2 G1: Type -> Type H2: Map G1 H3: Pure G1 H4: Mult G1 H5: Applicative G1 G2: Type -> Type H6: Map G2 H7: Pure G2 H8: Mult G2 H9: Applicative G2 A, B, C: Type g: W * B -> G2 C f: W * A -> G1 B w1: W t: F2 A
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F1: Type -> Type H0: Mapdt W F1 F2: Type -> Type H1: Mapdt W F2 DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F1 DecoratedTraversableFunctor1: DecoratedTraversableFunctor
W F2 G1: Type -> Type H2: Map G1 H3: Pure G1 H4: Mult G1 H5: Applicative G1 G2: Type -> Type H6: Map G2 H7: Pure G2 H8: Mult G2 H9: Applicative G2 A, B, C: Type g: W * B -> G2 C f: W * A -> G1 B w1: W t: F2 A
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F1: Type -> Type H0: Mapdt W F1 F2: Type -> Type H1: Mapdt W F2 DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F1 DecoratedTraversableFunctor1: DecoratedTraversableFunctor
W F2 G1: Type -> Type H2: Map G1 H3: Pure G1 H4: Mult G1 H5: Applicative G1 G2: Type -> Type H6: Map G2 H7: Pure G2 H8: Mult G2 H9: Applicative G2 A, B, C: Type g: W * B -> G2 C f: W * A -> G1 B w1: W t: F2 A
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F1: Type -> Type H0: Mapdt W F1 F2: Type -> Type H1: Mapdt W F2 DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F1 DecoratedTraversableFunctor1: DecoratedTraversableFunctor
W F2 G1: Type -> Type H2: Map G1 H3: Pure G1 H4: Mult G1 H5: Applicative G1 G2: Type -> Type H6: Map G2 H7: Pure G2 H8: Mult G2 H9: Applicative G2 A, B, C: Type g: W * B -> G2 C f: W * A -> G1 B w1: W t: F2 A
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F1: Type -> Type H0: Mapdt W F1 F2: Type -> Type H1: Mapdt W F2 DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F1 DecoratedTraversableFunctor1: DecoratedTraversableFunctor
W F2 G1: Type -> Type H2: Map G1 H3: Pure G1 H4: Mult G1 H5: Applicative G1 G2: Type -> Type H6: Map G2 H7: Pure G2 H8: Mult G2 H9: Applicative G2 A, B, C: Type g: W * B -> G2 C f: W * A -> G1 B w1: W t: F2 A
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F1: Type -> Type H0: Mapdt W F1 F2: Type -> Type H1: Mapdt W F2 DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F1 DecoratedTraversableFunctor1: DecoratedTraversableFunctor
W F2 G1: Type -> Type H2: Map G1 H3: Pure G1 H4: Mult G1 H5: Applicative G1 G2: Type -> Type H6: Map G2 H7: Pure G2 H8: Mult G2 H9: Applicative G2 A, B, C: Type g: W * B -> G2 C f: W * A -> G1 B w1: W t: F2 A
Functor G1
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F1: Type -> Type H0: Mapdt W F1 F2: Type -> Type H1: Mapdt W F2 DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F1 DecoratedTraversableFunctor1: DecoratedTraversableFunctor
W F2 G1: Type -> Type H2: Map G1 H3: Pure G1 H4: Mult G1 H5: Applicative G1 G2: Type -> Type H6: Map G2 H7: Pure G2 H8: Mult G2 H9: Applicative G2 A, B, C: Type g: W * B -> G2 C f: W * A -> G1 B w1: W t: F2 A H10: Functor G1
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F1: Type -> Type H0: Mapdt W F1 F2: Type -> Type H1: Mapdt W F2 DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F1 DecoratedTraversableFunctor1: DecoratedTraversableFunctor
W F2 G1: Type -> Type H2: Map G1 H3: Pure G1 H4: Mult G1 H5: Applicative G1 G2: Type -> Type H6: Map G2 H7: Pure G2 H8: Mult G2 H9: Applicative G2 A, B, C: Type g: W * B -> G2 C f: W * A -> G1 B w1: W t: F2 A
Functor G1
nowinversion H5.
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F1: Type -> Type H0: Mapdt W F1 F2: Type -> Type H1: Mapdt W F2 DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F1 DecoratedTraversableFunctor1: DecoratedTraversableFunctor
W F2 G1: Type -> Type H2: Map G1 H3: Pure G1 H4: Mult G1 H5: Applicative G1 G2: Type -> Type H6: Map G2 H7: Pure G2 H8: Mult G2 H9: Applicative G2 A, B, C: Type g: W * B -> G2 C f: W * A -> G1 B w1: W t: F2 A H10: Functor G1
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F1: Type -> Type H0: Mapdt W F1 F2: Type -> Type H1: Mapdt W F2 DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F1 DecoratedTraversableFunctor1: DecoratedTraversableFunctor
W F2 G1: Type -> Type H2: Map G1 H3: Pure G1 H4: Mult G1 H5: Applicative G1 G2: Type -> Type H6: Map G2 H7: Pure G2 H8: Mult G2 H9: Applicative G2 A, B, C: Type g: W * B -> G2 C f: W * A -> G1 B w1: W t: F2 A H10: Functor G1
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F1: Type -> Type H0: Mapdt W F1 F2: Type -> Type H1: Mapdt W F2 DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F1 DecoratedTraversableFunctor1: DecoratedTraversableFunctor
W F2
forall (G1G2 : Type -> Type) (H2 : Map G1)
(H3 : Mult G1) (H4 : Pure G1) (H5 : Map G2)
(H6 : Mult G2) (H7 : Pure G2)
(ϕ : forallA : Type, G1 A -> G2 A),
ApplicativeMorphism G1 G2 ϕ ->
forall (AB : Type) (f : W * A -> G1 B),
ϕ (F1 (F2 B)) ∘ mapdt f = mapdt (ϕ B ∘ f)
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F1: Type -> Type H0: Mapdt W F1 F2: Type -> Type H1: Mapdt W F2 DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F1 DecoratedTraversableFunctor1: DecoratedTraversableFunctor
W F2
forall (G1G2 : Type -> Type) (H2 : Map G1)
(H3 : Mult G1) (H4 : Pure G1) (H5 : Map G2)
(H6 : Mult G2) (H7 : Pure G2)
(ϕ : forallA : Type, G1 A -> G2 A),
ApplicativeMorphism G1 G2 ϕ ->
forall (AB : Type) (f : W * A -> G1 B),
ϕ (F1 (F2 B)) ∘ mapdt f = mapdt (ϕ B ∘ f)
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F1: Type -> Type H0: Mapdt W F1 F2: Type -> Type H1: Mapdt W F2 DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F1 DecoratedTraversableFunctor1: DecoratedTraversableFunctor
W F2 G1, G2: Type -> Type H2: Map G1 H3: Mult G1 H4: Pure G1 H5: Map G2 H6: Mult G2 H7: Pure G2 ϕ: forallA : Type, G1 A -> G2 A H8: ApplicativeMorphism G1 G2 ϕ A, B: Type f: W * A -> G1 B
ϕ (F1 (F2 B)) ∘ mapdt f = mapdt (ϕ B ∘ f)
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F1: Type -> Type H0: Mapdt W F1 F2: Type -> Type H1: Mapdt W F2 DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F1 DecoratedTraversableFunctor1: DecoratedTraversableFunctor
W F2 G1, G2: Type -> Type H2: Map G1 H3: Mult G1 H4: Pure G1 H5: Map G2 H6: Mult G2 H7: Pure G2 ϕ: forallA : Type, G1 A -> G2 A H8: ApplicativeMorphism G1 G2 ϕ A, B: Type f: W * A -> G1 B
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F1: Type -> Type H0: Mapdt W F1 F2: Type -> Type H1: Mapdt W F2 DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F1 DecoratedTraversableFunctor1: DecoratedTraversableFunctor
W F2 G1, G2: Type -> Type H2: Map G1 H3: Mult G1 H4: Pure G1 H5: Map G2 H6: Mult G2 H7: Pure G2 ϕ: forallA : Type, G1 A -> G2 A H8: ApplicativeMorphism G1 G2 ϕ A, B: Type f: W * A -> G1 B
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F1: Type -> Type H0: Mapdt W F1 F2: Type -> Type H1: Mapdt W F2 DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F1 DecoratedTraversableFunctor1: DecoratedTraversableFunctor
W F2 G1, G2: Type -> Type H2: Map G1 H3: Mult G1 H4: Pure G1 H5: Map G2 H6: Mult G2 H7: Pure G2 ϕ: forallA : Type, G1 A -> G2 A H8: ApplicativeMorphism G1 G2 ϕ A, B: Type f: W * A -> G1 B
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F1: Type -> Type H0: Mapdt W F1 F2: Type -> Type H1: Mapdt W F2 DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F1 DecoratedTraversableFunctor1: DecoratedTraversableFunctor
W F2 G1, G2: Type -> Type H2: Map G1 H3: Mult G1 H4: Pure G1 H5: Map G2 H6: Mult G2 H7: Pure G2 ϕ: forallA : Type, G1 A -> G2 A H8: ApplicativeMorphism G1 G2 ϕ A, B: Type f: W * A -> G1 B w: W t: F2 A
(ϕ (F2 B) ∘ (fun '(w1, t) => mapdt (f ⦿ w1) t)) (w, t) =
mapdt ((ϕ B ∘ f) ⦿ w) t
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F1: Type -> Type H0: Mapdt W F1 F2: Type -> Type H1: Mapdt W F2 DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F1 DecoratedTraversableFunctor1: DecoratedTraversableFunctor
W F2 G1, G2: Type -> Type H2: Map G1 H3: Mult G1 H4: Pure G1 H5: Map G2 H6: Mult G2 H7: Pure G2 ϕ: forallA : Type, G1 A -> G2 A H8: ApplicativeMorphism G1 G2 ϕ A, B: Type f: W * A -> G1 B w: W t: F2 A
ϕ (F2 B) (mapdt (f ⦿ w) t) = mapdt ((ϕ B ○ f) ⦿ w) t
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F1: Type -> Type H0: Mapdt W F1 F2: Type -> Type H1: Mapdt W F2 DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F1 DecoratedTraversableFunctor1: DecoratedTraversableFunctor
W F2 G1, G2: Type -> Type H2: Map G1 H3: Mult G1 H4: Pure G1 H5: Map G2 H6: Mult G2 H7: Pure G2 ϕ: forallA : Type, G1 A -> G2 A H8: ApplicativeMorphism G1 G2 ϕ A, B: Type f: W * A -> G1 B w: W t: F2 A
(ϕ (F2 B) ∘ mapdt (f ⦿ w)) t = mapdt ((ϕ B ○ f) ⦿ w) t
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F1: Type -> Type H0: Mapdt W F1 F2: Type -> Type H1: Mapdt W F2 DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F1 DecoratedTraversableFunctor1: DecoratedTraversableFunctor
W F2 G1, G2: Type -> Type H2: Map G1 H3: Mult G1 H4: Pure G1 H5: Map G2 H6: Mult G2 H7: Pure G2 ϕ: forallA : Type, G1 A -> G2 A H8: ApplicativeMorphism G1 G2 ϕ A, B: Type f: W * A -> G1 B w: W t: F2 A
mapdt (ϕ B ∘ f ⦿ w) t = mapdt ((ϕ B ○ f) ⦿ w) t
reflexivity.Qed.(** ** <<DecoratedTraversableFunctor>> Instance *)(******************************************************************************)#[export] InstanceDecoratedTraversableFunctor_compose:
DecoratedTraversableFunctor W (F1 ○ F2) :=
{| kdtf_mapdt1 := kdtf_comp_mapdt1;
kdtf_mapdt2 := kdtf_comp_mapdt2;
kdtf_morph := kdtf_comp_morph;
|}.Endcompose_functors.(** * Composition of a <<DTF>> with a <<DTM>> Right Module *)(******************************************************************************)(** ** Composition of <<mapdt>> with <<binddt>> *)(******************************************************************************)#[export] InstanceMapdt_Binddt_compose
`{op: Monoid_op W}
`{Mapdt_F: Mapdt W F}
`{Binddt_U: Binddt W T U}:
Binddt W T (F ∘ U) :=
funGmappuremultABf =>
mapdt (T := F) (G := G)
(fun '(w1, t) => binddt (U := U) (f ⦿ w1) t).(** ** <<DecoratedTraversableRightModule>> Laws *)(******************************************************************************)Sectioncompose_functor_module.Context
`{Monoid W}.Context
`{Mapdt_WF: Mapdt W F}
`{Return_T: Return T}
`{Binddt_WTU: Binddt W T U}
`{Binddt_WTT: Binddt W T T}
`{! DecoratedTraversableFunctor W F}
`{! DecoratedTraversableRightPreModule W T U}.
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F: Type -> Type Mapdt_WF: Mapdt W F T: Type -> Type Return_T: Return T U: Type -> Type Binddt_WTU: Binddt W T U Binddt_WTT: Binddt W T T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule
W T U
forallA : Type, binddt (ret ∘ extract) = id
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F: Type -> Type Mapdt_WF: Mapdt W F T: Type -> Type Return_T: Return T U: Type -> Type Binddt_WTU: Binddt W T U Binddt_WTT: Binddt W T T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule
W T U
forallA : Type, binddt (ret ∘ extract) = id
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F: Type -> Type Mapdt_WF: Mapdt W F T: Type -> Type Return_T: Return T U: Type -> Type Binddt_WTU: Binddt W T U Binddt_WTT: Binddt W T T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule
W T U A: Type
binddt (ret ∘ extract) = id
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F: Type -> Type Mapdt_WF: Mapdt W F T: Type -> Type Return_T: Return T U: Type -> Type Binddt_WTU: Binddt W T U Binddt_WTT: Binddt W T T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule
W T U A: Type
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F: Type -> Type Mapdt_WF: Mapdt W F T: Type -> Type Return_T: Return T U: Type -> Type Binddt_WTU: Binddt W T U Binddt_WTT: Binddt W T T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule
W T U A: Type
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F: Type -> Type Mapdt_WF: Mapdt W F T: Type -> Type Return_T: Return T U: Type -> Type Binddt_WTU: Binddt W T U Binddt_WTT: Binddt W T T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule
W T U A: Type cut: (fun '(w1, t) => binddt ((ret ∘ extract) ⦿ w1) t) =
extract
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F: Type -> Type Mapdt_WF: Mapdt W F T: Type -> Type Return_T: Return T U: Type -> Type Binddt_WTU: Binddt W T U Binddt_WTT: Binddt W T T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule
W T U A: Type
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F: Type -> Type Mapdt_WF: Mapdt W F T: Type -> Type Return_T: Return T U: Type -> Type Binddt_WTU: Binddt W T U Binddt_WTT: Binddt W T T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule
W T U A: Type w: W t: U A
binddt ((ret ∘ extract) ⦿ w) t = extract (w, t)
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F: Type -> Type Mapdt_WF: Mapdt W F T: Type -> Type Return_T: Return T U: Type -> Type Binddt_WTU: Binddt W T U Binddt_WTT: Binddt W T T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule
W T U A: Type w: W t: U A
binddt (ret ∘ extract) t = extract (w, t)
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F: Type -> Type Mapdt_WF: Mapdt W F T: Type -> Type Return_T: Return T U: Type -> Type Binddt_WTU: Binddt W T U Binddt_WTT: Binddt W T T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule
W T U A: Type w: W t: U A
id t = extract (w, t)
reflexivity.
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F: Type -> Type Mapdt_WF: Mapdt W F T: Type -> Type Return_T: Return T U: Type -> Type Binddt_WTU: Binddt W T U Binddt_WTT: Binddt W T T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule
W T U A: Type cut: (fun '(w1, t) => binddt ((ret ∘ extract) ⦿ w1) t) =
extract
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F: Type -> Type Mapdt_WF: Mapdt W F T: Type -> Type Return_T: Return T U: Type -> Type Binddt_WTU: Binddt W T U Binddt_WTT: Binddt W T T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule
W T U A: Type cut: (fun '(w1, t) => binddt ((ret ∘ extract) ⦿ w1) t) =
extract
mapdt extract = id
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F: Type -> Type Mapdt_WF: Mapdt W F T: Type -> Type Return_T: Return T U: Type -> Type Binddt_WTU: Binddt W T U Binddt_WTT: Binddt W T T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule
W T U A: Type cut: (fun '(w1, t) => binddt ((ret ∘ extract) ⦿ w1) t) =
extract
id = id
reflexivity.Qed.
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F: Type -> Type Mapdt_WF: Mapdt W F T: Type -> Type Return_T: Return T U: Type -> Type Binddt_WTU: Binddt W T U Binddt_WTT: Binddt W T T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule
W T U
forall (G1 : Type -> Type) (H : Map G1) (H0 : Pure G1)
(H1 : Mult G1),
Applicative G1 ->
forall (G2 : Type -> Type) (H3 : Map G2)
(H4 : Pure G2) (H5 : Mult G2),
Applicative G2 ->
forall (BC : Type) (g : W * B -> G2 (T C)) (A : Type)
(f : W * A -> G1 (T B)),
map (binddt g) ∘ binddt f = binddt (kc7 G1 G2 g f)
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F: Type -> Type Mapdt_WF: Mapdt W F T: Type -> Type Return_T: Return T U: Type -> Type Binddt_WTU: Binddt W T U Binddt_WTT: Binddt W T T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule
W T U
forall (G1 : Type -> Type) (H : Map G1) (H0 : Pure G1)
(H1 : Mult G1),
Applicative G1 ->
forall (G2 : Type -> Type) (H3 : Map G2)
(H4 : Pure G2) (H5 : Mult G2),
Applicative G2 ->
forall (BC : Type) (g : W * B -> G2 (T C)) (A : Type)
(f : W * A -> G1 (T B)),
map (binddt g) ∘ binddt f = binddt (kc7 G1 G2 g f)
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F: Type -> Type Mapdt_WF: Mapdt W F T: Type -> Type Return_T: Return T U: Type -> Type Binddt_WTU: Binddt W T U Binddt_WTT: Binddt W T T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule
W T U G1: Type -> Type H0: Map G1 H1: Pure G1 H2: Mult G1 H3: Applicative G1 G2: Type -> Type H4: Map G2 H5: Pure G2 H6: Mult G2 H7: Applicative G2 B, C: Type g: W * B -> G2 (T C) A: Type f: W * A -> G1 (T B)
map (binddt g) ∘ binddt f = binddt (kc7 G1 G2 g f)
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F: Type -> Type Mapdt_WF: Mapdt W F T: Type -> Type Return_T: Return T U: Type -> Type Binddt_WTU: Binddt W T U Binddt_WTT: Binddt W T T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule
W T U G1: Type -> Type H0: Map G1 H1: Pure G1 H2: Mult G1 H3: Applicative G1 G2: Type -> Type H4: Map G2 H5: Pure G2 H6: Mult G2 H7: Applicative G2 B, C: Type g: W * B -> G2 (T C) A: Type f: W * A -> G1 (T B)
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F: Type -> Type Mapdt_WF: Mapdt W F T: Type -> Type Return_T: Return T U: Type -> Type Binddt_WTU: Binddt W T U Binddt_WTT: Binddt W T T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule
W T U G1: Type -> Type H0: Map G1 H1: Pure G1 H2: Mult G1 H3: Applicative G1 G2: Type -> Type H4: Map G2 H5: Pure G2 H6: Mult G2 H7: Applicative G2 B, C: Type g: W * B -> G2 (T C) A: Type f: W * A -> G1 (T B)
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F: Type -> Type Mapdt_WF: Mapdt W F T: Type -> Type Return_T: Return T U: Type -> Type Binddt_WTU: Binddt W T U Binddt_WTT: Binddt W T T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule
W T U G1: Type -> Type H0: Map G1 H1: Pure G1 H2: Mult G1 H3: Applicative G1 G2: Type -> Type H4: Map G2 H5: Pure G2 H6: Mult G2 H7: Applicative G2 B, C: Type g: W * B -> G2 (T C) A: Type f: W * A -> G1 (T B)
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F: Type -> Type Mapdt_WF: Mapdt W F T: Type -> Type Return_T: Return T U: Type -> Type Binddt_WTU: Binddt W T U Binddt_WTT: Binddt W T T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule
W T U G1: Type -> Type H0: Map G1 H1: Pure G1 H2: Mult G1 H3: Applicative G1 G2: Type -> Type H4: Map G2 H5: Pure G2 H6: Mult G2 H7: Applicative G2 B, C: Type g: W * B -> G2 (T C) A: Type f: W * A -> G1 (T B)
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F: Type -> Type Mapdt_WF: Mapdt W F T: Type -> Type Return_T: Return T U: Type -> Type Binddt_WTU: Binddt W T U Binddt_WTT: Binddt W T T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule
W T U G1: Type -> Type H0: Map G1 H1: Pure G1 H2: Mult G1 H3: Applicative G1 G2: Type -> Type H4: Map G2 H5: Pure G2 H6: Mult G2 H7: Applicative G2 B, C: Type g: W * B -> G2 (T C) A: Type f: W * A -> G1 (T B) w: W t: U A
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F: Type -> Type Mapdt_WF: Mapdt W F T: Type -> Type Return_T: Return T U: Type -> Type Binddt_WTU: Binddt W T U Binddt_WTT: Binddt W T T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule
W T U G1: Type -> Type H0: Map G1 H1: Pure G1 H2: Mult G1 H3: Applicative G1 G2: Type -> Type H4: Map G2 H5: Pure G2 H6: Mult G2 H7: Applicative G2 B, C: Type g: W * B -> G2 (T C) A: Type f: W * A -> G1 (T B) w: W t: U A
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F: Type -> Type Mapdt_WF: Mapdt W F T: Type -> Type Return_T: Return T U: Type -> Type Binddt_WTU: Binddt W T U Binddt_WTT: Binddt W T T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule
W T U G1: Type -> Type H0: Map G1 H1: Pure G1 H2: Mult G1 H3: Applicative G1 G2: Type -> Type H4: Map G2 H5: Pure G2 H6: Mult G2 H7: Applicative G2 B, C: Type g: W * B -> G2 (T C) A: Type f: W * A -> G1 (T B) w: W t: U A
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F: Type -> Type Mapdt_WF: Mapdt W F T: Type -> Type Return_T: Return T U: Type -> Type Binddt_WTU: Binddt W T U Binddt_WTT: Binddt W T T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule
W T U G1: Type -> Type H0: Map G1 H1: Pure G1 H2: Mult G1 H3: Applicative G1 G2: Type -> Type H4: Map G2 H5: Pure G2 H6: Mult G2 H7: Applicative G2 B, C: Type g: W * B -> G2 (T C) A: Type f: W * A -> G1 (T B) w: W t: U A
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F: Type -> Type Mapdt_WF: Mapdt W F T: Type -> Type Return_T: Return T U: Type -> Type Binddt_WTU: Binddt W T U Binddt_WTT: Binddt W T T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule
W T U G1: Type -> Type H0: Map G1 H1: Pure G1 H2: Mult G1 H3: Applicative G1 G2: Type -> Type H4: Map G2 H5: Pure G2 H6: Mult G2 H7: Applicative G2 B, C: Type g: W * B -> G2 (T C) A: Type f: W * A -> G1 (T B) w: W t: U A
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F: Type -> Type Mapdt_WF: Mapdt W F T: Type -> Type Return_T: Return T U: Type -> Type Binddt_WTU: Binddt W T U Binddt_WTT: Binddt W T T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule
W T U
forall (G1G2 : 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),
ApplicativeMorphism G1 G2 ϕ ->
forall (AB : Type) (f : W * A -> G1 (T B)),
ϕ (F (U B)) ∘ binddt f = binddt (ϕ (T B) ∘ f)
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F: Type -> Type Mapdt_WF: Mapdt W F T: Type -> Type Return_T: Return T U: Type -> Type Binddt_WTU: Binddt W T U Binddt_WTT: Binddt W T T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule
W T U
forall (G1G2 : 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),
ApplicativeMorphism G1 G2 ϕ ->
forall (AB : Type) (f : W * A -> G1 (T B)),
ϕ (F (U B)) ∘ binddt f = binddt (ϕ (T B) ∘ f)
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F: Type -> Type Mapdt_WF: Mapdt W F T: Type -> Type Return_T: Return T U: Type -> Type Binddt_WTU: Binddt W T U Binddt_WTT: Binddt W T T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule
W T U G1, G2: Type -> Type H0: Map G1 H1: Mult G1 H2: Pure G1 H3: Map G2 H4: Mult G2 H5: Pure G2 ϕ: forallA : Type, G1 A -> G2 A Happl: ApplicativeMorphism G1 G2 ϕ
forall (AB : Type) (f : W * A -> G1 (T B)),
ϕ (F (U B)) ∘ binddt f = binddt (ϕ (T B) ∘ f)
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F: Type -> Type Mapdt_WF: Mapdt W F T: Type -> Type Return_T: Return T U: Type -> Type Binddt_WTU: Binddt W T U Binddt_WTT: Binddt W T T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule
W T U G1, G2: Type -> Type H0: Map G1 H1: Mult G1 H2: Pure G1 H3: Map G2 H4: Mult G2 H5: Pure G2 ϕ: forallA : Type, G1 A -> G2 A Happl: ApplicativeMorphism G1 G2 ϕ A, B: Type f: W * A -> G1 (T B)
ϕ (F (U B)) ∘ binddt f = binddt (ϕ (T B) ∘ f)
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F: Type -> Type Mapdt_WF: Mapdt W F T: Type -> Type Return_T: Return T U: Type -> Type Binddt_WTU: Binddt W T U Binddt_WTT: Binddt W T T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule
W T U G1, G2: Type -> Type H0: Map G1 H1: Mult G1 H2: Pure G1 H3: Map G2 H4: Mult G2 H5: Pure G2 ϕ: forallA : Type, G1 A -> G2 A Happl: ApplicativeMorphism G1 G2 ϕ A, B: Type f: W * A -> G1 (T B) H6: Applicative G1
ϕ (F (U B)) ∘ binddt f = binddt (ϕ (T B) ∘ f)
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F: Type -> Type Mapdt_WF: Mapdt W F T: Type -> Type Return_T: Return T U: Type -> Type Binddt_WTU: Binddt W T U Binddt_WTT: Binddt W T T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule
W T U G1, G2: Type -> Type H0: Map G1 H1: Mult G1 H2: Pure G1 H3: Map G2 H4: Mult G2 H5: Pure G2 ϕ: forallA : Type, G1 A -> G2 A Happl: ApplicativeMorphism G1 G2 ϕ A, B: Type f: W * A -> G1 (T B) H6: Applicative G1 H7: Applicative G2
ϕ (F (U B)) ∘ binddt f = binddt (ϕ (T B) ∘ f)
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F: Type -> Type Mapdt_WF: Mapdt W F T: Type -> Type Return_T: Return T U: Type -> Type Binddt_WTU: Binddt W T U Binddt_WTT: Binddt W T T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule
W T U G1, G2: Type -> Type H0: Map G1 H1: Mult G1 H2: Pure G1 H3: Map G2 H4: Mult G2 H5: Pure G2 ϕ: forallA : Type, G1 A -> G2 A Happl: ApplicativeMorphism G1 G2 ϕ A, B: Type f: W * A -> G1 (T B) H6: Applicative G1 H7: Applicative G2
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F: Type -> Type Mapdt_WF: Mapdt W F T: Type -> Type Return_T: Return T U: Type -> Type Binddt_WTU: Binddt W T U Binddt_WTT: Binddt W T T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule
W T U G1, G2: Type -> Type H0: Map G1 H1: Mult G1 H2: Pure G1 H3: Map G2 H4: Mult G2 H5: Pure G2 ϕ: forallA : Type, G1 A -> G2 A Happl: ApplicativeMorphism G1 G2 ϕ A, B: Type f: W * A -> G1 (T B) H6: Applicative G1 H7: Applicative G2
mapdt (ϕ (U B) ∘ (fun '(w1, t) => binddt (f ⦿ w1) t)) =
mapdt (fun '(w1, t) => binddt ((ϕ (T B) ∘ f) ⦿ w1) t)
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F: Type -> Type Mapdt_WF: Mapdt W F T: Type -> Type Return_T: Return T U: Type -> Type Binddt_WTU: Binddt W T U Binddt_WTT: Binddt W T T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule
W T U G1, G2: Type -> Type H0: Map G1 H1: Mult G1 H2: Pure G1 H3: Map G2 H4: Mult G2 H5: Pure G2 ϕ: forallA : Type, G1 A -> G2 A Happl: ApplicativeMorphism G1 G2 ϕ A, B: Type f: W * A -> G1 (T B) H6: Applicative G1 H7: Applicative G2
ϕ (U B) ∘ (fun '(w1, t) => binddt (f ⦿ w1) t) =
(fun '(w1, t) => binddt ((ϕ (T B) ∘ f) ⦿ w1) t)
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F: Type -> Type Mapdt_WF: Mapdt W F T: Type -> Type Return_T: Return T U: Type -> Type Binddt_WTU: Binddt W T U Binddt_WTT: Binddt W T T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule
W T U G1, G2: Type -> Type H0: Map G1 H1: Mult G1 H2: Pure G1 H3: Map G2 H4: Mult G2 H5: Pure G2 ϕ: forallA : Type, G1 A -> G2 A Happl: ApplicativeMorphism G1 G2 ϕ A, B: Type f: W * A -> G1 (T B) H6: Applicative G1 H7: Applicative G2 w': W t': U A
(ϕ (U B) ∘ (fun '(w1, t) => binddt (f ⦿ w1) t))
(w', t') = binddt ((ϕ (T B) ∘ f) ⦿ w') t'
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F: Type -> Type Mapdt_WF: Mapdt W F T: Type -> Type Return_T: Return T U: Type -> Type Binddt_WTU: Binddt W T U Binddt_WTT: Binddt W T T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule
W T U G1, G2: Type -> Type H0: Map G1 H1: Mult G1 H2: Pure G1 H3: Map G2 H4: Mult G2 H5: Pure G2 ϕ: forallA : Type, G1 A -> G2 A Happl: ApplicativeMorphism G1 G2 ϕ A, B: Type f: W * A -> G1 (T B) H6: Applicative G1 H7: Applicative G2 w': W t': U A
(ϕ (U B) ∘ binddt (f ⦿ w')) t' =
binddt ((ϕ (T B) ○ f) ⦿ w') t'
W: Type op: Monoid_op W unit0: Monoid_unit W H: Monoid W F: Type -> Type Mapdt_WF: Mapdt W F T: Type -> Type Return_T: Return T U: Type -> Type Binddt_WTU: Binddt W T U Binddt_WTT: Binddt W T T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
W F DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule
W T U G1, G2: Type -> Type H0: Map G1 H1: Mult G1 H2: Pure G1 H3: Map G2 H4: Mult G2 H5: Pure G2 ϕ: forallA : Type, G1 A -> G2 A Happl: ApplicativeMorphism G1 G2 ϕ A, B: Type f: W * A -> G1 (T B) H6: Applicative G1 H7: Applicative G2 w': W t': U A
binddt (ϕ (T B) ∘ f ⦿ w') t' =
binddt ((ϕ (T B) ○ f) ⦿ w') t'