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.DecoratedTraversableMonad
Classes.Coalgebraic.DecoratedTraversableMonad
Functors.Early.Batch.Import Batch.Notations.Import Monoid.Notations.Import Applicative.Notations.Import Product.Notations.Import DecoratedTraversableMonad.Notations.#[local] Generalizable VariablesU W T G ϕ.#[local] Arguments batch {A} (B)%type_scope _.(** * Coalgebraic DTMsto Kleisli DTM *)(**********************************************************************)(** ** Derived Operation *)(**********************************************************************)#[export] InstanceBinddt_ToBatch7
(W: Type) (T: Type -> Type) `{ToBatch7 W T U}: Binddt W T U :=
funF___ABf => runBatch f (C := U B) ∘ toBatch7.Sectionwith_algebra.Context
`{Coalgebraic.DecoratedTraversableMonad.DecoratedTraversableMonad W T}.(** ** <<⋆7>> as <<runBatch ∘ map runBatch ∘ double_batch7>> *)(********************************************************************)
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T
forall (G1G2 : Type -> Type) (Map_G : Map G1)
(Pure_G : Pure G1) (Mult_G : Mult G1),
Applicative G1 ->
forall (Map_G0 : Map G2) (Pure_G0 : Pure G2)
(Mult_G0 : Mult G2),
Applicative G2 ->
forall (ABC : Type) (g : W * B -> G2 (T C))
(f : W * A -> G1 (T B)),
g ⋆7 f = runBatch f ∘ map (runBatch g) ∘ double_batch7
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T
forall (G1G2 : Type -> Type) (Map_G : Map G1)
(Pure_G : Pure G1) (Mult_G : Mult G1),
Applicative G1 ->
forall (Map_G0 : Map G2) (Pure_G0 : Pure G2)
(Mult_G0 : Mult G2),
Applicative G2 ->
forall (ABC : Type) (g : W * B -> G2 (T C))
(f : W * A -> G1 (T B)),
g ⋆7 f = runBatch f ∘ map (runBatch g) ∘ double_batch7
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T G1, G2: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H4: Applicative G1 Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H5: Applicative G2 A, B, C: Type g: W * B -> G2 (T C) f: W * A -> G1 (T B)
g ⋆7 f = runBatch f ∘ map (runBatch g) ∘ double_batch7
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T G1, G2: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H4: Applicative G1 Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H5: Applicative G2 A, B, C: Type g: W * B -> G2 (T C) f: W * A -> G1 (T B) w: W a: A
(g ⋆7 f) (w, a) =
(runBatch f ∘ map (runBatch g) ∘ double_batch7) (w, a)
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T G1, G2: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H4: Applicative G1 Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H5: Applicative G2 A, B, C: Type g: W * B -> G2 (T C) f: W * A -> G1 (T B) w: W a: A
(g ⋆7 f) (w, a) =
runBatch f (map (runBatch g) (double_batch7 (w, a)))
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T G1, G2: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H4: Applicative G1 Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H5: Applicative G2 A, B, C: Type g: W * B -> G2 (T C) f: W * A -> G1 (T B) w: W a: A
(g ⋆7 f) (w, a) =
runBatch f
(map (runBatch g)
(Done (mapfst_Batch (incr w) ∘ toBatch7) ⧆ (w, a)))
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T G1, G2: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H4: Applicative G1 Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H5: Applicative G2 A, B, C: Type g: W * B -> G2 (T C) f: W * A -> G1 (T B) w: W a: A
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T G1, G2: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H4: Applicative G1 Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H5: Applicative G2 A, B, C: Type g: W * B -> G2 (T C) f: W * A -> G1 (T B) w: W a: A
(g ⋆7 f) (w, a) =
runBatch f
(Done
(runBatch g ∘ (mapfst_Batch (incr w) ∘ toBatch7))
⧆ (w, a))
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T G1, G2: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H4: Applicative G1 Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H5: Applicative G2 A, B, C: Type g: W * B -> G2 (T C) f: W * A -> G1 (T B) w: W a: A
(g ⋆7 f) (w, a) =
runBatch f
(Done
(runBatch g ∘ (mapfst_Batch (incr w) ∘ toBatch7))) <⋆>
f (w, a)
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T G1, G2: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H4: Applicative G1 Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H5: Applicative G2 A, B, C: Type g: W * B -> G2 (T C) f: W * A -> G1 (T B) w: W a: A
(g ⋆7 f) (w, a) =
pure (runBatch g ∘ (mapfst_Batch (incr w) ∘ toBatch7)) <⋆>
f (w, a)
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T G1, G2: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H4: Applicative G1 Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H5: Applicative G2 A, B, C: Type g: W * B -> G2 (T C) f: W * A -> G1 (T B) w: W a: A
(g ⋆7 f) (w, a) =
map (runBatch g ∘ (mapfst_Batch (incr w) ∘ toBatch7))
(f (w, a))
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T G1, G2: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H4: Applicative G1 Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H5: Applicative G2 A, B, C: Type g: W * B -> G2 (T C) f: W * A -> G1 (T B) w: W a: A
(g ⋆7 f) (w, a) =
map (runBatch g ∘ mapfst_Batch (incr w) ∘ toBatch7)
(f (w, a))
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T G1, G2: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H4: Applicative G1 Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H5: Applicative G2 A, B, C: Type g: W * B -> G2 (T C) f: W * A -> G1 (T B) w: W a: A
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T
forall (F : Type -> Type) (Map_G : Map F)
(Pure_G : Pure F) (Mult_G : Mult F),
Applicative F ->
forall (AB : Type) (f : W * A -> F (T B)),
binddt f ∘ ret = f ∘ pair Ƶ
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T
forall (F : Type -> Type) (Map_G : Map F)
(Pure_G : Pure F) (Mult_G : Mult F),
Applicative F ->
forall (AB : Type) (f : W * A -> F (T B)),
binddt f ∘ ret = f ∘ pair Ƶ
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T F: Type -> Type Map_G: Map F Pure_G: Pure F Mult_G: Mult F H4: Applicative F A, B: Type f: W * A -> F (T B)
binddt f ∘ ret = f ∘ pair Ƶ
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T F: Type -> Type Map_G: Map F Pure_G: Pure F Mult_G: Mult F H4: Applicative F A, B: Type f: W * A -> F (T B)
runBatch f ∘ toBatch7 ∘ ret = f ∘ pair Ƶ
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T F: Type -> Type Map_G: Map F Pure_G: Pure F Mult_G: Mult F H4: Applicative F A, B: Type f: W * A -> F (T B)
runBatch f ∘ (toBatch7 ∘ ret) = f ∘ pair Ƶ
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T F: Type -> Type Map_G: Map F Pure_G: Pure F Mult_G: Mult F H4: Applicative F A, B: Type f: W * A -> F (T B)
runBatch f ∘ (Step (Done id) ∘ ret) = f ∘ pair Ƶ
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T F: Type -> Type Map_G: Map F Pure_G: Pure F Mult_G: Mult F H4: Applicative F A, B: Type f: W * A -> F (T B) a: A
runBatch f (Done id ⧆ ret a) = f (Ƶ, a)
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T F: Type -> Type Map_G: Map F Pure_G: Pure F Mult_G: Mult F H4: Applicative F A, B: Type f: W * A -> F (T B) a: A
runBatch f (Done id) <⋆> f (ret a) = f (Ƶ, a)
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T F: Type -> Type Map_G: Map F Pure_G: Pure F Mult_G: Mult F H4: Applicative F A, B: Type f: W * A -> F (T B) a: A
pure id <⋆> f (ret a) = f (Ƶ, a)
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T F: Type -> Type Map_G: Map F Pure_G: Pure F Mult_G: Mult F H4: Applicative F A, B: Type f: W * A -> F (T B) a: A
f (ret a) = f (Ƶ, a)
reflexivity.Qed.
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T
forallA : Type, binddt (ret ∘ extract) = id
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T
forallA : Type, binddt (ret ∘ extract) = id
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T A: Type
binddt (ret ∘ extract) = id
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T A: Type
runBatch (ret ∘ extract) ∘ toBatch7 = id
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T A: Type
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T
forall (G1G2 : Type -> Type) (H3 : Map G1)
(H4 : Pure G1) (H5 : Mult G1),
Applicative G1 ->
forall (H7 : Map G2) (H8 : Pure G2) (H9 : Mult G2),
Applicative G2 ->
forall (ABC : Type) (g : W * B -> G2 (T C))
(f : W * A -> G1 (T B)),
map (binddt g) ∘ binddt f = binddt (g ⋆7 f)
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T
forall (G1G2 : Type -> Type) (H3 : Map G1)
(H4 : Pure G1) (H5 : Mult G1),
Applicative G1 ->
forall (H7 : Map G2) (H8 : Pure G2) (H9 : Mult G2),
Applicative G2 ->
forall (ABC : Type) (g : W * B -> G2 (T C))
(f : W * A -> G1 (T B)),
map (binddt g) ∘ binddt f = binddt (g ⋆7 f)
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T G1, G2: Type -> Type H4: Map G1 H5: Pure G1 H6: Mult G1 H7: Applicative G1 H8: Map G2 H9: Pure G2 H10: Mult G2 H11: Applicative G2 A, B, C: Type g: W * B -> G2 (T C) f: W * A -> G1 (T B)
map (binddt g) ∘ binddt f = binddt (g ⋆7 f)
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T G1, G2: Type -> Type H4: Map G1 H5: Pure G1 H6: Mult G1 H7: Applicative G1 H8: Map G2 H9: Pure G2 H10: Mult G2 H11: Applicative G2 A, B, C: Type g: W * B -> G2 (T C) f: W * A -> G1 (T B)
map (runBatch g ∘ toBatch7) ∘ (runBatch f ∘ toBatch7) =
runBatch (g ⋆7 f) ∘ toBatch7
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T G1, G2: Type -> Type H4: Map G1 H5: Pure G1 H6: Mult G1 H7: Applicative G1 H8: Map G2 H9: Pure G2 H10: Mult G2 H11: Applicative G2 A, B, C: Type g: W * B -> G2 (T C) f: W * A -> G1 (T B)
map (runBatch g ∘ toBatch7) ∘ runBatch f ∘ toBatch7 =
runBatch (g ⋆7 f) ∘ toBatch7
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T G1, G2: Type -> Type H4: Map G1 H5: Pure G1 H6: Mult G1 H7: Applicative G1 H8: Map G2 H9: Pure G2 H10: Mult G2 H11: Applicative G2 A, B, C: Type g: W * B -> G2 (T C) f: W * A -> G1 (T B)
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T G1, G2: Type -> Type H4: Map G1 H5: Pure G1 H6: Mult G1 H7: Applicative G1 H8: Map G2 H9: Pure G2 H10: Mult G2 H11: Applicative G2 A, B, C: Type g: W * B -> G2 (T C) f: W * A -> G1 (T B)
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T G1, G2: Type -> Type H4: Map G1 H5: Pure G1 H6: Mult G1 H7: Applicative G1 H8: Map G2 H9: Pure G2 H10: Mult G2 H11: Applicative G2 A, B, C: Type g: W * B -> G2 (T C) f: W * A -> G1 (T B)
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T G1, G2: Type -> Type H4: Map G1 H5: Pure G1 H6: Mult G1 H7: Applicative G1 H8: Map G2 H9: Pure G2 H10: Mult G2 H11: Applicative G2 A, B, C: Type g: W * B -> G2 (T C) f: W * A -> G1 (T B)
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T G1, G2: Type -> Type H4: Map G1 H5: Pure G1 H6: Mult G1 H7: Applicative G1 H8: Map G2 H9: Pure G2 H10: Mult G2 H11: Applicative G2 A, B, C: Type g: W * B -> G2 (T C) f: W * A -> G1 (T B)
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T G1, G2: Type -> Type H4: Map G1 H5: Pure G1 H6: Mult G1 H7: Applicative G1 H8: Map G2 H9: Pure G2 H10: Mult G2 H11: Applicative G2 A, B, C: Type g: W * B -> G2 (T C) f: W * A -> G1 (T B)
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T G1, G2: Type -> Type H4: Map G1 H5: Pure G1 H6: Mult G1 H7: Applicative G1 H8: Map G2 H9: Pure G2 H10: Mult G2 H11: Applicative G2 A, B, C: Type g: W * B -> G2 (T C) f: W * A -> G1 (T B)
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T G1, G2: Type -> Type H4: Map G1 H5: Pure G1 H6: Mult G1 H7: Applicative G1 H8: Map G2 H9: Pure G2 H10: Mult G2 H11: Applicative G2 A, B, C: Type g: W * B -> G2 (T C) f: W * A -> G1 (T B)
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T G1, G2: Type -> Type H4: Map G1 H5: Pure G1 H6: Mult G1 H7: Applicative G1 H8: Map G2 H9: Pure G2 H10: Mult G2 H11: Applicative G2 A, B, C: Type g: W * B -> G2 (T C) f: W * A -> G1 (T B)
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T G1, G2: Type -> Type H4: Map G1 H5: Pure G1 H6: Mult G1 H7: Applicative G1 H8: Map G2 H9: Pure G2 H10: Mult G2 H11: Applicative G2 A, B, C: Type g: W * B -> G2 (T C) f: W * A -> G1 (T B)
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T G1, G2: Type -> Type H4: Map G1 H5: Pure G1 H6: Mult G1 H7: Applicative G1 H8: Map G2 H9: Pure G2 H10: Mult G2 H11: Applicative G2 A, B, C: Type g: W * B -> G2 (T C) f: W * A -> G1 (T B)
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T
forall (G1G2 : Type -> Type) (H4 : Map G1)
(H5 : Mult G1) (H6 : Pure G1) (H7 : Map G2)
(H8 : Mult G2) (H9 : Pure G2)
(ϕ : forallA : Type, G1 A -> G2 A),
ApplicativeMorphism G1 G2 ϕ ->
forall (AB : Type) (f : W * A -> G1 (T B)),
ϕ (T B) ∘ binddt f = binddt (ϕ (T B) ∘ f)
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T
forall (G1G2 : Type -> Type) (H4 : Map G1)
(H5 : Mult G1) (H6 : Pure G1) (H7 : Map G2)
(H8 : Mult G2) (H9 : Pure G2)
(ϕ : forallA : Type, G1 A -> G2 A),
ApplicativeMorphism G1 G2 ϕ ->
forall (AB : Type) (f : W * A -> G1 (T B)),
ϕ (T B) ∘ binddt f = binddt (ϕ (T B) ∘ f)
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T G1, G2: Type -> Type H4: Map G1 H5: Mult G1 H6: Pure G1 H7: Map G2 H8: Mult G2 H9: Pure G2 ϕ: forallA : Type, G1 A -> G2 A morph: ApplicativeMorphism G1 G2 ϕ A, B: Type f: W * A -> G1 (T B)
ϕ (T B) ∘ binddt f = binddt (ϕ (T B) ∘ f)
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T G1, G2: Type -> Type H4: Map G1 H5: Mult G1 H6: Pure G1 H7: Map G2 H8: Mult G2 H9: Pure G2 ϕ: forallA : Type, G1 A -> G2 A morph: ApplicativeMorphism G1 G2 ϕ A, B: Type f: W * A -> G1 (T B) t: T A
(ϕ (T B) ∘ binddt f) t = binddt (ϕ (T B) ∘ f) t
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T G1, G2: Type -> Type H4: Map G1 H5: Mult G1 H6: Pure G1 H7: Map G2 H8: Mult G2 H9: Pure G2 ϕ: forallA : Type, G1 A -> G2 A morph: ApplicativeMorphism G1 G2 ϕ A, B: Type f: W * A -> G1 (T B) t: T A
(ϕ (T B) ∘ (runBatch f ∘ toBatch7)) t =
(runBatch (ϕ (T B) ∘ f) ∘ toBatch7) t
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T G1, G2: Type -> Type H4: Map G1 H5: Mult G1 H6: Pure G1 H7: Map G2 H8: Mult G2 H9: Pure G2 ϕ: forallA : Type, G1 A -> G2 A morph: ApplicativeMorphism G1 G2 ϕ A, B: Type f: W * A -> G1 (T B) t: T A
(ϕ (T B) ∘ runBatch f ∘ toBatch7) t =
(runBatch (ϕ (T B) ∘ f) ∘ toBatch7) t
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T G1, G2: Type -> Type H4: Map G1 H5: Mult G1 H6: Pure G1 H7: Map G2 H8: Mult G2 H9: Pure G2 ϕ: forallA : Type, G1 A -> G2 A morph: ApplicativeMorphism G1 G2 ϕ A, B: Type f: W * A -> G1 (T B) t: T A
(runBatch (ϕ (T B) ∘ f) ∘ toBatch7) t =
(runBatch (ϕ (T B) ∘ f) ∘ toBatch7) t
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T
Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad
W T
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T
Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad
W T
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T
Monoid W
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T
forall (G : Type -> Type) (Map_G : Map G)
(Pure_G : Pure G) (Mult_G : Mult G),
Applicative G ->
forall (AB : Type) (f : W * A -> G (T B)),
binddt f ∘ ret = f ∘ ret
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T
DecoratedTraversableRightPreModule W T T
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T
Monoid W
typeclasses eauto.
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T
forall (G : Type -> Type) (Map_G : Map G)
(Pure_G : Pure G) (Mult_G : Mult G),
Applicative G ->
forall (AB : Type) (f : W * A -> G (T B)),
binddt f ∘ ret = f ∘ ret
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H4: Applicative G A, B: Type f: W * A -> G (T B)
binddt f ∘ ret = f ∘ ret
apply (kdtm_binddt0_T G).
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T
DecoratedTraversableRightPreModule W T T
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T A: Type
binddt (ret ∘ extract) = id
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H4: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H5: 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 (g ⋆7 f)
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T G1, G2: Type -> Type H4: Map G1 H5: Mult G1 H6: Pure G1 H7: Map G2 H8: Mult G2 H9: Pure G2 ϕ: forallA : Type, G1 A -> G2 A morph: ApplicativeMorphism G1 G2 ϕ A, B: Type f: W * A -> G1 (T B)
ϕ (T B) ∘ binddt f = binddt (ϕ (T B) ∘ f)
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T A: Type
binddt (ret ∘ extract) = id
apply kdtm_binddt1_T.
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T G1: Type -> Type Map_G: Map G1 Pure_G: Pure G1 Mult_G: Mult G1 H4: Applicative G1 G2: Type -> Type Map_G0: Map G2 Pure_G0: Pure G2 Mult_G0: Mult G2 H5: 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 (g ⋆7 f)
apply (kdtm_binddt2_T G1 G2); auto.
W: Type T: Type -> Type H: Monoid_op W H0: Monoid_unit W H1: Return T H2: ToBatch7 W T T H3: DecoratedTraversableMonad W T G1, G2: Type -> Type H4: Map G1 H5: Mult G1 H6: Pure G1 H7: Map G2 H8: Mult G2 H9: Pure G2 ϕ: forallA : Type, G1 A -> G2 A morph: ApplicativeMorphism G1 G2 ϕ A, B: Type f: W * A -> G1 (T B)
ϕ (T B) ∘ binddt f = binddt (ϕ (T B) ∘ f)
apply kdtm_morph_T; auto.Qed.#[export] InstanceDecoratedTraversableMonad_Kleisli_Coalgebra:
Classes.Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad W T :=
{|
kdtm_binddt0 := kdtm_binddt0_T;
|}.Endwith_algebra.