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
Functors.Early.Batch
Classes.Kleisli.TraversableFunctor
Classes.Coalgebraic.TraversableFunctor.Import Batch.Notations.Import Kleisli.TraversableFunctor.Notations.#[local] Generalizable VariablesG T M A B.#[local] Arguments batch {A} (B)%type_scope _.(** * Coalgebraic Traversable Functors From Kleisli Traversable Functors *)(**********************************************************************)(** ** Derived <<ToBatch>> Operation *)(**********************************************************************)ModuleDerivedOperations.#[export] InstanceToBatch_Traverse `{Traverse T}:
Coalgebraic.TraversableFunctor.ToBatch T :=
(funAB => traverse (G := Batch A B) (batch B):
T A -> Batch A B (T B)).EndDerivedOperations.ClassCompat_ToBatch_Traverse
(T: Type -> Type)
`{Traverse_inst: Traverse T}
`{ToBatch_inst: ToBatch T} :=
compat_toBatch_traverse:
ToBatch_inst = DerivedOperations.ToBatch_Traverse.
T: Type -> Type Traverse_inst: Traverse T ToBatch_inst: ToBatch T H: Compat_ToBatch_Traverse T
forallAB : Type, toBatch = traverse (batch B)
T: Type -> Type Traverse_inst: Traverse T ToBatch_inst: ToBatch T H: Compat_ToBatch_Traverse T
forallAB : Type, toBatch = traverse (batch B)
T: Type -> Type Traverse_inst: Traverse T ToBatch_inst: ToBatch T H: Compat_ToBatch_Traverse T A, B: Type
toBatch = traverse (batch B)
T: Type -> Type Traverse_inst: Traverse T ToBatch_inst: ToBatch T H: Compat_ToBatch_Traverse T A, B: Type
DerivedOperations.ToBatch_Traverse A B =
traverse (batch B)
T: Type -> Type H: Traverse T H0: ToBatch T H1: Kleisli.TraversableFunctor.TraversableFunctor T Compat_ToBatch_Traverse0: Compat_ToBatch_Traverse T
forallA : Type, extract_Batch ∘ toBatch = id
T: Type -> Type H: Traverse T H0: ToBatch T H1: Kleisli.TraversableFunctor.TraversableFunctor T Compat_ToBatch_Traverse0: Compat_ToBatch_Traverse T
forallA : Type, extract_Batch ∘ toBatch = id
T: Type -> Type H: Traverse T H0: ToBatch T H1: Kleisli.TraversableFunctor.TraversableFunctor T Compat_ToBatch_Traverse0: Compat_ToBatch_Traverse T A: Type
extract_Batch ∘ toBatch = id
T: Type -> Type H: Traverse T H0: ToBatch T H1: Kleisli.TraversableFunctor.TraversableFunctor T Compat_ToBatch_Traverse0: Compat_ToBatch_Traverse T A: Type
extract_Batch ∘ traverse (batch A) = id
T: Type -> Type H: Traverse T H0: ToBatch T H1: Kleisli.TraversableFunctor.TraversableFunctor T Compat_ToBatch_Traverse0: Compat_ToBatch_Traverse T A: Type
traverse (extract_Batch ∘ batch A) = id
T: Type -> Type H: Traverse T H0: ToBatch T H1: Kleisli.TraversableFunctor.TraversableFunctor T Compat_ToBatch_Traverse0: Compat_ToBatch_Traverse T A: Type
traverse id = id
T: Type -> Type H: Traverse T H0: ToBatch T H1: Kleisli.TraversableFunctor.TraversableFunctor T Compat_ToBatch_Traverse0: Compat_ToBatch_Traverse T A: Type
id = id
reflexivity.Qed.
T: Type -> Type H: Traverse T H0: ToBatch T H1: Kleisli.TraversableFunctor.TraversableFunctor T Compat_ToBatch_Traverse0: Compat_ToBatch_Traverse T
T: Type -> Type H: Traverse T H0: ToBatch T H1: Kleisli.TraversableFunctor.TraversableFunctor T Compat_ToBatch_Traverse0: Compat_ToBatch_Traverse T A, B, C: Type
cojoin_Batch ∘ toBatch = map toBatch ∘ toBatch
T: Type -> Type H: Traverse T H0: ToBatch T H1: Kleisli.TraversableFunctor.TraversableFunctor T Compat_ToBatch_Traverse0: Compat_ToBatch_Traverse T A, B, C: Type
cojoin_Batch ∘ traverse (batch C) =
map toBatch ∘ toBatch
T: Type -> Type H: Traverse T H0: ToBatch T H1: Kleisli.TraversableFunctor.TraversableFunctor T Compat_ToBatch_Traverse0: Compat_ToBatch_Traverse T A, B, C: Type
traverse (cojoin_Batch ∘ batch C) =
map toBatch ∘ toBatch
T: Type -> Type H: Traverse T H0: ToBatch T H1: Kleisli.TraversableFunctor.TraversableFunctor T Compat_ToBatch_Traverse0: Compat_ToBatch_Traverse T A, B, C: Type
traverse double_batch = map toBatch ∘ toBatch
T: Type -> Type H: Traverse T H0: ToBatch T H1: Kleisli.TraversableFunctor.TraversableFunctor T Compat_ToBatch_Traverse0: Compat_ToBatch_Traverse T A, B, C: Type
T: Type -> Type H: Traverse T H0: ToBatch T H1: Kleisli.TraversableFunctor.TraversableFunctor T Compat_ToBatch_Traverse0: Compat_ToBatch_Traverse T A, B, C: Type
T: Type -> Type H: Traverse T H0: ToBatch T H1: Kleisli.TraversableFunctor.TraversableFunctor T Compat_ToBatch_Traverse0: Compat_ToBatch_Traverse T A, B, C: Type
traverse double_batch = traverse (batch C ⋆2 batch B)