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
  Adapters.KleisliToCoalgebraic.DecoratedTraversableFunctor
  Functors.Early.Batch.

Import Product.Notations.
Import Kleisli.DecoratedTraversableMonad.Notations.
Import Kleisli.Comonad.Notations.
Import Batch.Notations.
Import Monoid.Notations.

#[local] Generalizable Variables U W G T M A B.

#[local] Arguments batch {A} (B)%type_scope _.


(** * DecoratedTraversableMonads as <<Batch7>> coalgebras *)
(**********************************************************************)
Module DerivedOperations.

  #[export] Instance ToBatch7_Binddt
    `{Binddt_WTU: Binddt W T U}:
  Coalgebraic.DecoratedTraversableMonad.ToBatch7 W T U :=
  (fun A B => binddt (G := Batch (W * A) (T B))
                (batch (T B)): U A -> Batch (W * A) (T B) (U B)).

End DerivedOperations.

Class Compat_ToBatch7_Binddt
  (W: Type)
  (T: Type -> Type)
  (U: Type -> Type)
  `{Binddt_inst: Binddt W T U}
  `{ToBatch7_inst: ToBatch7 W T U} :=
  compat_toBatch7_binddt:
    ToBatch7_inst = DerivedOperations.ToBatch7_Binddt.

W: Type
T, U: Type -> Type
Binddt_inst: Binddt W T U
ToBatch7_inst: ToBatch7 W T U
H: Compat_ToBatch7_Binddt W T U

forall A B : Type, toBatch7 = binddt (batch (T B))
W: Type
T, U: Type -> Type
Binddt_inst: Binddt W T U
ToBatch7_inst: ToBatch7 W T U
H: Compat_ToBatch7_Binddt W T U

forall A B : Type, toBatch7 = binddt (batch (T B))
W: Type
T, U: Type -> Type
Binddt_inst: Binddt W T U
ToBatch7_inst: ToBatch7 W T U
H: Compat_ToBatch7_Binddt W T U
A, B: Type

toBatch7 = binddt (batch (T B))
W: Type
T, U: Type -> Type
Binddt_inst: Binddt W T U
ToBatch7_inst: ToBatch7 W T U
H: Compat_ToBatch7_Binddt W T U
A, B: Type

DerivedOperations.ToBatch7_Binddt A B = binddt (batch (T B))
reflexivity. Qed. #[export] Instance Compat_ToBatch7_Binddt_Self `{Binddt W T U}: Compat_ToBatch7_Binddt W T U (ToBatch7_inst := DerivedOperations.ToBatch7_Binddt) := ltac:(hnf; reflexivity). Section dtm_coalgebraic_laws. Context `{Binddt W T T} `{Binddt W T U} `{Monoid W} `{Return T} `{! Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad W T} `{! DecoratedTraversableRightPreModule W T U}. Context `{ToBatch7_WTT: ToBatch7 W T T} `{ToBatch7_WTU: ToBatch7 W T U} `{! Compat_ToBatch7_Binddt W T T} `{! Compat_ToBatch7_Binddt W T U}. (** ** <<double_batch7>> as <<batch ⋆7 batch>> *) (********************************************************************)
W: Type
T: Type -> Type
H: Binddt W T T
U: Type -> Type
H0: Binddt W T U
op: Monoid_op W
unit0: Monoid_unit W
H1: Monoid W
H2: Return T
H3: Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad W T
DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule W T U
ToBatch7_WTT: ToBatch7 W T T
ToBatch7_WTU: ToBatch7 W T U
Compat_ToBatch7_Binddt0: Compat_ToBatch7_Binddt W T T
Compat_ToBatch7_Binddt1: Compat_ToBatch7_Binddt W T U

forall A B C : Type, double_batch7 = batch (T C) ⋆7 batch (T B)
W: Type
T: Type -> Type
H: Binddt W T T
U: Type -> Type
H0: Binddt W T U
op: Monoid_op W
unit0: Monoid_unit W
H1: Monoid W
H2: Return T
H3: Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad W T
DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule W T U
ToBatch7_WTT: ToBatch7 W T T
ToBatch7_WTU: ToBatch7 W T U
Compat_ToBatch7_Binddt0: Compat_ToBatch7_Binddt W T T
Compat_ToBatch7_Binddt1: Compat_ToBatch7_Binddt W T U

forall A B C : Type, double_batch7 = batch (T C) ⋆7 batch (T B)
W: Type
T: Type -> Type
H: Binddt W T T
U: Type -> Type
H0: Binddt W T U
op: Monoid_op W
unit0: Monoid_unit W
H1: Monoid W
H2: Return T
H3: Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad W T
DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule W T U
ToBatch7_WTT: ToBatch7 W T T
ToBatch7_WTU: ToBatch7 W T U
Compat_ToBatch7_Binddt0: Compat_ToBatch7_Binddt W T T
Compat_ToBatch7_Binddt1: Compat_ToBatch7_Binddt W T U
A, B, C: Type

double_batch7 = batch (T C) ⋆7 batch (T B)
W: Type
T: Type -> Type
H: Binddt W T T
U: Type -> Type
H0: Binddt W T U
op: Monoid_op W
unit0: Monoid_unit W
H1: Monoid W
H2: Return T
H3: Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad W T
DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule W T U
ToBatch7_WTT: ToBatch7 W T T
ToBatch7_WTU: ToBatch7 W T U
Compat_ToBatch7_Binddt0: Compat_ToBatch7_Binddt W T T
Compat_ToBatch7_Binddt1: Compat_ToBatch7_Binddt W T U
A, B, C: Type

(fun '(w, a) => (map (mapfst_Batch (incr w) ∘ toBatch7) ∘ batch (T B)) (w, a)) = batch (T C) ⋆7 batch (T B)
W: Type
T: Type -> Type
H: Binddt W T T
U: Type -> Type
H0: Binddt W T U
op: Monoid_op W
unit0: Monoid_unit W
H1: Monoid W
H2: Return T
H3: Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad W T
DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule W T U
ToBatch7_WTT: ToBatch7 W T T
ToBatch7_WTU: ToBatch7 W T U
Compat_ToBatch7_Binddt0: Compat_ToBatch7_Binddt W T T
Compat_ToBatch7_Binddt1: Compat_ToBatch7_Binddt W T U
A, B, C: Type
w: W
a: A

(map (mapfst_Batch (incr w) ∘ toBatch7) ∘ batch (T B)) (w, a) = (batch (T C) ⋆7 batch (T B)) (w, a)
W: Type
T: Type -> Type
H: Binddt W T T
U: Type -> Type
H0: Binddt W T U
op: Monoid_op W
unit0: Monoid_unit W
H1: Monoid W
H2: Return T
H3: Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad W T
DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule W T U
ToBatch7_WTT: ToBatch7 W T T
ToBatch7_WTU: ToBatch7 W T U
Compat_ToBatch7_Binddt0: Compat_ToBatch7_Binddt W T T
Compat_ToBatch7_Binddt1: Compat_ToBatch7_Binddt W T U
A, B, C: Type
w: W
a: A

Done (mapfst_Batch (incr w) ∘ toBatch7 ∘ id) ⧆ (w, a) = Done (binddt (batch (T C) ⦿ w) ∘ id) ⧆ (w, a)
W: Type
T: Type -> Type
H: Binddt W T T
U: Type -> Type
H0: Binddt W T U
op: Monoid_op W
unit0: Monoid_unit W
H1: Monoid W
H2: Return T
H3: Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad W T
DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule W T U
ToBatch7_WTT: ToBatch7 W T T
ToBatch7_WTU: ToBatch7 W T U
Compat_ToBatch7_Binddt0: Compat_ToBatch7_Binddt W T T
Compat_ToBatch7_Binddt1: Compat_ToBatch7_Binddt W T U
A, B, C: Type
w: W
a: A

Done (mapfst_Batch (incr w) ∘ toBatch7) ⧆ (w, a) = Done (binddt (batch (T C) ⦿ w)) ⧆ (w, a)
W: Type
T: Type -> Type
H: Binddt W T T
U: Type -> Type
H0: Binddt W T U
op: Monoid_op W
unit0: Monoid_unit W
H1: Monoid W
H2: Return T
H3: Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad W T
DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule W T U
ToBatch7_WTT: ToBatch7 W T T
ToBatch7_WTU: ToBatch7 W T U
Compat_ToBatch7_Binddt0: Compat_ToBatch7_Binddt W T T
Compat_ToBatch7_Binddt1: Compat_ToBatch7_Binddt W T U
A, B, C: Type
w: W
a: A

Done (mapfst_Batch (incr w) ∘ binddt (batch (T C))) ⧆ (w, a) = Done (binddt (batch (T C) ⦿ w)) ⧆ (w, a)
W: Type
T: Type -> Type
H: Binddt W T T
U: Type -> Type
H0: Binddt W T U
op: Monoid_op W
unit0: Monoid_unit W
H1: Monoid W
H2: Return T
H3: Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad W T
DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule W T U
ToBatch7_WTT: ToBatch7 W T T
ToBatch7_WTU: ToBatch7 W T U
Compat_ToBatch7_Binddt0: Compat_ToBatch7_Binddt W T T
Compat_ToBatch7_Binddt1: Compat_ToBatch7_Binddt W T U
A, B, C: Type
w: W
a: A

Done (binddt (mapfst_Batch (incr w) ∘ batch (T C))) ⧆ (w, a) = Done (binddt (batch (T C) ⦿ w)) ⧆ (w, a)
W: Type
T: Type -> Type
H: Binddt W T T
U: Type -> Type
H0: Binddt W T U
op: Monoid_op W
unit0: Monoid_unit W
H1: Monoid W
H2: Return T
H3: Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad W T
DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule W T U
ToBatch7_WTT: ToBatch7 W T T
ToBatch7_WTU: ToBatch7 W T U
Compat_ToBatch7_Binddt0: Compat_ToBatch7_Binddt W T T
Compat_ToBatch7_Binddt1: Compat_ToBatch7_Binddt W T U
A, B, C: Type
w: W
a: A

Done (binddt (batch (T C) ∘ incr w)) ⧆ (w, a) = Done (binddt (batch (T C) ⦿ w)) ⧆ (w, a)
reflexivity. Qed. (** ** Derived Laws *) (********************************************************************)
W: Type
T: Type -> Type
H: Binddt W T T
U: Type -> Type
H0: Binddt W T U
op: Monoid_op W
unit0: Monoid_unit W
H1: Monoid W
H2: Return T
H3: Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad W T
DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule W T U
ToBatch7_WTT: ToBatch7 W T T
ToBatch7_WTU: ToBatch7 W T U
Compat_ToBatch7_Binddt0: Compat_ToBatch7_Binddt W T T
Compat_ToBatch7_Binddt1: Compat_ToBatch7_Binddt W T U

forall A B : Type, toBatch7 ∘ ret = batch (T B) ∘ ret
W: Type
T: Type -> Type
H: Binddt W T T
U: Type -> Type
H0: Binddt W T U
op: Monoid_op W
unit0: Monoid_unit W
H1: Monoid W
H2: Return T
H3: Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad W T
DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule W T U
ToBatch7_WTT: ToBatch7 W T T
ToBatch7_WTU: ToBatch7 W T U
Compat_ToBatch7_Binddt0: Compat_ToBatch7_Binddt W T T
Compat_ToBatch7_Binddt1: Compat_ToBatch7_Binddt W T U

forall A B : Type, toBatch7 ∘ ret = batch (T B) ∘ ret
W: Type
T: Type -> Type
H: Binddt W T T
U: Type -> Type
H0: Binddt W T U
op: Monoid_op W
unit0: Monoid_unit W
H1: Monoid W
H2: Return T
H3: Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad W T
DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule W T U
ToBatch7_WTT: ToBatch7 W T T
ToBatch7_WTU: ToBatch7 W T U
Compat_ToBatch7_Binddt0: Compat_ToBatch7_Binddt W T T
Compat_ToBatch7_Binddt1: Compat_ToBatch7_Binddt W T U
A, B: Type

toBatch7 ∘ ret = batch (T B) ∘ ret
W: Type
T: Type -> Type
H: Binddt W T T
U: Type -> Type
H0: Binddt W T U
op: Monoid_op W
unit0: Monoid_unit W
H1: Monoid W
H2: Return T
H3: Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad W T
DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule W T U
ToBatch7_WTT: ToBatch7 W T T
ToBatch7_WTU: ToBatch7 W T U
Compat_ToBatch7_Binddt0: Compat_ToBatch7_Binddt W T T
Compat_ToBatch7_Binddt1: Compat_ToBatch7_Binddt W T U
A, B: Type

binddt (batch (T B)) ∘ ret = batch (T B) ∘ ret
W: Type
T: Type -> Type
H: Binddt W T T
U: Type -> Type
H0: Binddt W T U
op: Monoid_op W
unit0: Monoid_unit W
H1: Monoid W
H2: Return T
H3: Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad W T
DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule W T U
ToBatch7_WTT: ToBatch7 W T T
ToBatch7_WTU: ToBatch7 W T U
Compat_ToBatch7_Binddt0: Compat_ToBatch7_Binddt W T T
Compat_ToBatch7_Binddt1: Compat_ToBatch7_Binddt W T U
A, B: Type

batch (T B) ∘ ret = batch (T B) ∘ ret
reflexivity. Qed.
W: Type
T: Type -> Type
H: Binddt W T T
U: Type -> Type
H0: Binddt W T U
op: Monoid_op W
unit0: Monoid_unit W
H1: Monoid W
H2: Return T
H3: Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad W T
DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule W T U
ToBatch7_WTT: ToBatch7 W T T
ToBatch7_WTU: ToBatch7 W T U
Compat_ToBatch7_Binddt0: Compat_ToBatch7_Binddt W T T
Compat_ToBatch7_Binddt1: Compat_ToBatch7_Binddt W T U

forall A : Type, extract_Batch ∘ mapfst_Batch (ret ∘ extract) ∘ toBatch7 = id
W: Type
T: Type -> Type
H: Binddt W T T
U: Type -> Type
H0: Binddt W T U
op: Monoid_op W
unit0: Monoid_unit W
H1: Monoid W
H2: Return T
H3: Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad W T
DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule W T U
ToBatch7_WTT: ToBatch7 W T T
ToBatch7_WTU: ToBatch7 W T U
Compat_ToBatch7_Binddt0: Compat_ToBatch7_Binddt W T T
Compat_ToBatch7_Binddt1: Compat_ToBatch7_Binddt W T U

forall A : Type, extract_Batch ∘ mapfst_Batch (ret ∘ extract) ∘ toBatch7 = id
W: Type
T: Type -> Type
H: Binddt W T T
U: Type -> Type
H0: Binddt W T U
op: Monoid_op W
unit0: Monoid_unit W
H1: Monoid W
H2: Return T
H3: Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad W T
DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule W T U
ToBatch7_WTT: ToBatch7 W T T
ToBatch7_WTU: ToBatch7 W T U
Compat_ToBatch7_Binddt0: Compat_ToBatch7_Binddt W T T
Compat_ToBatch7_Binddt1: Compat_ToBatch7_Binddt W T U
A: Type

extract_Batch ∘ mapfst_Batch (ret ∘ extract) ∘ toBatch7 = id
W: Type
T: Type -> Type
H: Binddt W T T
U: Type -> Type
H0: Binddt W T U
op: Monoid_op W
unit0: Monoid_unit W
H1: Monoid W
H2: Return T
H3: Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad W T
DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule W T U
ToBatch7_WTT: ToBatch7 W T T
ToBatch7_WTU: ToBatch7 W T U
Compat_ToBatch7_Binddt0: Compat_ToBatch7_Binddt W T T
Compat_ToBatch7_Binddt1: Compat_ToBatch7_Binddt W T U
A: Type

extract_Batch ∘ mapfst_Batch (ret ∘ extract) ∘ binddt (batch (T A)) = id
W: Type
T: Type -> Type
H: Binddt W T T
U: Type -> Type
H0: Binddt W T U
op: Monoid_op W
unit0: Monoid_unit W
H1: Monoid W
H2: Return T
H3: Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad W T
DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule W T U
ToBatch7_WTT: ToBatch7 W T T
ToBatch7_WTU: ToBatch7 W T U
Compat_ToBatch7_Binddt0: Compat_ToBatch7_Binddt W T T
Compat_ToBatch7_Binddt1: Compat_ToBatch7_Binddt W T U
A: Type

extract_Batch ∘ (mapfst_Batch (ret ∘ extract) ∘ binddt (batch (T A))) = id
W: Type
T: Type -> Type
H: Binddt W T T
U: Type -> Type
H0: Binddt W T U
op: Monoid_op W
unit0: Monoid_unit W
H1: Monoid W
H2: Return T
H3: Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad W T
DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule W T U
ToBatch7_WTT: ToBatch7 W T T
ToBatch7_WTU: ToBatch7 W T U
Compat_ToBatch7_Binddt0: Compat_ToBatch7_Binddt W T T
Compat_ToBatch7_Binddt1: Compat_ToBatch7_Binddt W T U
A: Type

extract_Batch ∘ binddt (mapfst_Batch (ret ∘ extract) ∘ batch (T A)) = id
W: Type
T: Type -> Type
H: Binddt W T T
U: Type -> Type
H0: Binddt W T U
op: Monoid_op W
unit0: Monoid_unit W
H1: Monoid W
H2: Return T
H3: Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad W T
DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule W T U
ToBatch7_WTT: ToBatch7 W T T
ToBatch7_WTU: ToBatch7 W T U
Compat_ToBatch7_Binddt0: Compat_ToBatch7_Binddt W T T
Compat_ToBatch7_Binddt1: Compat_ToBatch7_Binddt W T U
A: Type

binddt (extract_Batch ∘ (mapfst_Batch (ret ∘ extract) ∘ batch (T A))) = id
W: Type
T: Type -> Type
H: Binddt W T T
U: Type -> Type
H0: Binddt W T U
op: Monoid_op W
unit0: Monoid_unit W
H1: Monoid W
H2: Return T
H3: Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad W T
DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule W T U
ToBatch7_WTT: ToBatch7 W T T
ToBatch7_WTU: ToBatch7 W T U
Compat_ToBatch7_Binddt0: Compat_ToBatch7_Binddt W T T
Compat_ToBatch7_Binddt1: Compat_ToBatch7_Binddt W T U
A: Type

binddt (extract_Batch ∘ (batch (T A) ∘ (ret ∘ extract))) = id
W: Type
T: Type -> Type
H: Binddt W T T
U: Type -> Type
H0: Binddt W T U
op: Monoid_op W
unit0: Monoid_unit W
H1: Monoid W
H2: Return T
H3: Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad W T
DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule W T U
ToBatch7_WTT: ToBatch7 W T T
ToBatch7_WTU: ToBatch7 W T U
Compat_ToBatch7_Binddt0: Compat_ToBatch7_Binddt W T T
Compat_ToBatch7_Binddt1: Compat_ToBatch7_Binddt W T U
A: Type

binddt (extract_Batch ∘ batch (T A) ∘ (ret ∘ extract)) = id
W: Type
T: Type -> Type
H: Binddt W T T
U: Type -> Type
H0: Binddt W T U
op: Monoid_op W
unit0: Monoid_unit W
H1: Monoid W
H2: Return T
H3: Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad W T
DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule W T U
ToBatch7_WTT: ToBatch7 W T T
ToBatch7_WTU: ToBatch7 W T U
Compat_ToBatch7_Binddt0: Compat_ToBatch7_Binddt W T T
Compat_ToBatch7_Binddt1: Compat_ToBatch7_Binddt W T U
A: Type

binddt (id ∘ (ret ∘ extract)) = id
W: Type
T: Type -> Type
H: Binddt W T T
U: Type -> Type
H0: Binddt W T U
op: Monoid_op W
unit0: Monoid_unit W
H1: Monoid W
H2: Return T
H3: Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad W T
DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule W T U
ToBatch7_WTT: ToBatch7 W T T
ToBatch7_WTU: ToBatch7 W T U
Compat_ToBatch7_Binddt0: Compat_ToBatch7_Binddt W T T
Compat_ToBatch7_Binddt1: Compat_ToBatch7_Binddt W T U
A: Type

binddt (ret ∘ extract) = id
W: Type
T: Type -> Type
H: Binddt W T T
U: Type -> Type
H0: Binddt W T U
op: Monoid_op W
unit0: Monoid_unit W
H1: Monoid W
H2: Return T
H3: Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad W T
DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule W T U
ToBatch7_WTT: ToBatch7 W T T
ToBatch7_WTU: ToBatch7 W T U
Compat_ToBatch7_Binddt0: Compat_ToBatch7_Binddt W T T
Compat_ToBatch7_Binddt1: Compat_ToBatch7_Binddt W T U
A: Type

id = id
reflexivity. Qed.
W: Type
T: Type -> Type
H: Binddt W T T
U: Type -> Type
H0: Binddt W T U
op: Monoid_op W
unit0: Monoid_unit W
H1: Monoid W
H2: Return T
H3: Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad W T
DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule W T U
ToBatch7_WTT: ToBatch7 W T T
ToBatch7_WTU: ToBatch7 W T U
Compat_ToBatch7_Binddt0: Compat_ToBatch7_Binddt W T T
Compat_ToBatch7_Binddt1: Compat_ToBatch7_Binddt W T U

forall A B C : Type, cojoin_Batch7 ∘ toBatch7 = map toBatch7 ∘ toBatch7
W: Type
T: Type -> Type
H: Binddt W T T
U: Type -> Type
H0: Binddt W T U
op: Monoid_op W
unit0: Monoid_unit W
H1: Monoid W
H2: Return T
H3: Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad W T
DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule W T U
ToBatch7_WTT: ToBatch7 W T T
ToBatch7_WTU: ToBatch7 W T U
Compat_ToBatch7_Binddt0: Compat_ToBatch7_Binddt W T T
Compat_ToBatch7_Binddt1: Compat_ToBatch7_Binddt W T U

forall A B C : Type, cojoin_Batch7 ∘ toBatch7 = map toBatch7 ∘ toBatch7
W: Type
T: Type -> Type
H: Binddt W T T
U: Type -> Type
H0: Binddt W T U
op: Monoid_op W
unit0: Monoid_unit W
H1: Monoid W
H2: Return T
H3: Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad W T
DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule W T U
ToBatch7_WTT: ToBatch7 W T T
ToBatch7_WTU: ToBatch7 W T U
Compat_ToBatch7_Binddt0: Compat_ToBatch7_Binddt W T T
Compat_ToBatch7_Binddt1: Compat_ToBatch7_Binddt W T U
A, B, C: Type

cojoin_Batch7 ∘ toBatch7 = map toBatch7 ∘ toBatch7
W: Type
T: Type -> Type
H: Binddt W T T
U: Type -> Type
H0: Binddt W T U
op: Monoid_op W
unit0: Monoid_unit W
H1: Monoid W
H2: Return T
H3: Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad W T
DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule W T U
ToBatch7_WTT: ToBatch7 W T T
ToBatch7_WTU: ToBatch7 W T U
Compat_ToBatch7_Binddt0: Compat_ToBatch7_Binddt W T T
Compat_ToBatch7_Binddt1: Compat_ToBatch7_Binddt W T U
A, B, C: Type

runBatch double_batch7 ∘ toBatch7 = map toBatch7 ∘ toBatch7
W: Type
T: Type -> Type
H: Binddt W T T
U: Type -> Type
H0: Binddt W T U
op: Monoid_op W
unit0: Monoid_unit W
H1: Monoid W
H2: Return T
H3: Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad W T
DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule W T U
ToBatch7_WTT: ToBatch7 W T T
ToBatch7_WTU: ToBatch7 W T U
Compat_ToBatch7_Binddt0: Compat_ToBatch7_Binddt W T T
Compat_ToBatch7_Binddt1: Compat_ToBatch7_Binddt W T U
A, B, C: Type

runBatch double_batch7 ∘ binddt (batch (T C)) = map toBatch7 ∘ toBatch7
W: Type
T: Type -> Type
H: Binddt W T T
U: Type -> Type
H0: Binddt W T U
op: Monoid_op W
unit0: Monoid_unit W
H1: Monoid W
H2: Return T
H3: Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad W T
DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule W T U
ToBatch7_WTT: ToBatch7 W T T
ToBatch7_WTU: ToBatch7 W T U
Compat_ToBatch7_Binddt0: Compat_ToBatch7_Binddt W T T
Compat_ToBatch7_Binddt1: Compat_ToBatch7_Binddt W T U
A, B, C: Type

runBatch double_batch7 ∘ binddt (batch (T C)) = map (binddt (batch (T C))) ∘ toBatch7
W: Type
T: Type -> Type
H: Binddt W T T
U: Type -> Type
H0: Binddt W T U
op: Monoid_op W
unit0: Monoid_unit W
H1: Monoid W
H2: Return T
H3: Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad W T
DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule W T U
ToBatch7_WTT: ToBatch7 W T T
ToBatch7_WTU: ToBatch7 W T U
Compat_ToBatch7_Binddt0: Compat_ToBatch7_Binddt W T T
Compat_ToBatch7_Binddt1: Compat_ToBatch7_Binddt W T U
A, B, C: Type

runBatch double_batch7 ∘ binddt (batch (T C)) = map (binddt (batch (T C))) ∘ binddt (batch (T B))
W: Type
T: Type -> Type
H: Binddt W T T
U: Type -> Type
H0: Binddt W T U
op: Monoid_op W
unit0: Monoid_unit W
H1: Monoid W
H2: Return T
H3: Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad W T
DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule W T U
ToBatch7_WTT: ToBatch7 W T T
ToBatch7_WTU: ToBatch7 W T U
Compat_ToBatch7_Binddt0: Compat_ToBatch7_Binddt W T T
Compat_ToBatch7_Binddt1: Compat_ToBatch7_Binddt W T U
A, B, C: Type

runBatch (batch (T C) ⋆7 batch (T B)) ∘ binddt (batch (T C)) = map (binddt (batch (T C))) ∘ binddt (batch (T B))
W: Type
T: Type -> Type
H: Binddt W T T
U: Type -> Type
H0: Binddt W T U
op: Monoid_op W
unit0: Monoid_unit W
H1: Monoid W
H2: Return T
H3: Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad W T
DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule W T U
ToBatch7_WTT: ToBatch7 W T T
ToBatch7_WTU: ToBatch7 W T U
Compat_ToBatch7_Binddt0: Compat_ToBatch7_Binddt W T T
Compat_ToBatch7_Binddt1: Compat_ToBatch7_Binddt W T U
A, B, C: Type

binddt (runBatch (batch (T C) ⋆7 batch (T B)) ∘ batch (T C)) = map (binddt (batch (T C))) ∘ binddt (batch (T B))
W: Type
T: Type -> Type
H: Binddt W T T
U: Type -> Type
H0: Binddt W T U
op: Monoid_op W
unit0: Monoid_unit W
H1: Monoid W
H2: Return T
H3: Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad W T
DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule W T U
ToBatch7_WTT: ToBatch7 W T T
ToBatch7_WTU: ToBatch7 W T U
Compat_ToBatch7_Binddt0: Compat_ToBatch7_Binddt W T T
Compat_ToBatch7_Binddt1: Compat_ToBatch7_Binddt W T U
A, B, C: Type

binddt (batch (T C) ⋆7 batch (T B)) = map (binddt (batch (T C))) ∘ binddt (batch (T B))
W: Type
T: Type -> Type
H: Binddt W T T
U: Type -> Type
H0: Binddt W T U
op: Monoid_op W
unit0: Monoid_unit W
H1: Monoid W
H2: Return T
H3: Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad W T
DecoratedTraversableRightPreModule0: DecoratedTraversableRightPreModule W T U
ToBatch7_WTT: ToBatch7 W T T
ToBatch7_WTU: ToBatch7 W T U
Compat_ToBatch7_Binddt0: Compat_ToBatch7_Binddt W T T
Compat_ToBatch7_Binddt1: Compat_ToBatch7_Binddt W T U
A, B, C: Type

binddt (batch (T C) ⋆7 batch (T B)) = binddt (batch (T C) ⋆7 batch (T B))
reflexivity. Qed. End dtm_coalgebraic_laws. Module DerivedInstances. Section instances. Context `{Binddt W T T} `{Binddt W T U} `{Monoid W} `{Return T} `{! Kleisli.DecoratedTraversableMonad.DecoratedTraversableMonad W T} `{! DecoratedTraversableRightPreModule W T U}. Context `{ToBatch7_WTT: ToBatch7 W T T} `{ToBatch7_WTU: ToBatch7 W T U} `{! Compat_ToBatch7_Binddt W T T} `{! Compat_ToBatch7_Binddt W T U}. #[export] Instance DecoratedTraversableMonad_Coalgebraic_Kleisli: Coalgebraic.DecoratedTraversableMonad.DecoratedTraversableMonad W T := {| dtm_ret := toBatch7_ret_Kleisli; dtm_extract := toBatch7_extract_Kleisli; dtm_duplicate := toBatch7_duplicate_Kleisli; |}. (* #[export] Instance Coalgebraic_DecoratedTraversableMonad_of_Kleisli: Coalgebraic.DecoratedTraversableMonad.DecoratedTraversableRightModule W T U := {| dtm_ret := toBatch7_ret_Kleisli; dtm_extract := toBatch7_extract_Kleisli; dtm_duplicate := toBatch7_duplicate_Kleisli; |}. *) End instances. End DerivedInstances.