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.Categorical.TraversableMonad
Classes.Kleisli.TraversableMonad
Classes.Coalgebraic.TraversableMonad
Adapters.CategoricalToKleisli.TraversableMonad
Adapters.KleisliToCategorical.TraversableMonad
Adapters.CoalgebraicToKleisli.TraversableMonad
Adapters.KleisliToCoalgebraic.TraversableMonad.Import Kleisli.TraversableMonad.Notations.Import Functors.Early.Batch.#[local] Generalizable VariablesT.(** * Categorical ~> Kleisli ~> Categorical *)(**********************************************************************)ModuleCategorical_Kleisli_Categorical.Context
`{mapT: Map T}
`{distT: ApplicativeDist T}
`{joinT: Join T}
`{Return T}
`{! Categorical.TraversableMonad.TraversableMonad T}.Definitionbindt':
Bindt T T :=
CategoricalToKleisli.TraversableMonad.DerivedOperations.Bindt_Categorical T.Definitionmap2: Map T :=
DerivedOperations.Map_Bindt T T (Bindt_TU := bindt').Definitiondist2: ApplicativeDist T :=
DerivedOperations.Dist_Bindt T (Bindt_TT := bindt').Definitionjoin2: Join T :=
DerivedOperations.Join_Bindt T (Bindt_TT := bindt').
mapT = map2
mapT = map2
A, B: Type f: A -> B
mapT A B f = map2 A B f
A, B: Type f: A -> B
mapT A B f = DerivedOperations.Map_Bindt T T A B f
A, B: Type f: A -> B
mapT A B f = bindt (ret ∘ f)
A, B: Type f: A -> B
mapT A B f =
bindt' (funA : Type => A) Map_I Pure_I Mult_I A B
(ret ∘ f)
A, B: Type f: A -> B
mapT A B f =
DerivedOperations.Bindt_Categorical T
(funA : Type => A) Map_I Pure_I Mult_I A B
(ret ∘ f)
A, B: Type f: A -> B
mapT A B f =
map join ∘ dist T (funA : Type => A) ∘ map (ret ∘ f)
A, B: Type f: A -> B
mapT A B f =
join ∘ dist T (funA : Type => A) ∘ map (ret ∘ f)
A, B: Type f: A -> B
mapT A B f = join ∘ id ∘ map (ret ∘ f)
A, B: Type f: A -> B
mapT A B f = join ∘ map (ret ∘ f)
A, B: Type f: A -> B
mapT A B f = join ∘ (map ret ∘ map f)
A, B: Type f: A -> B
mapT A B f = join ∘ map ret ∘ map f
A, B: Type f: A -> B
mapT A B f = id ∘ map f
reflexivity.Qed.
forall (G : Type -> Type) (Map_G : Map G)
(Pure_G : Pure G) (Mult_G : Mult G),
Applicative G ->
distT G Map_G Pure_G Mult_G =
dist2 G Map_G Pure_G Mult_G
forall (G : Type -> Type) (Map_G : Map G)
(Pure_G : Pure G) (Mult_G : Mult G),
Applicative G ->
distT G Map_G Pure_G Mult_G =
dist2 G Map_G Pure_G Mult_G
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G
distT G Map_G Pure_G Mult_G =
dist2 G Map_G Pure_G Mult_G
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G A: Type
distT G Map_G Pure_G Mult_G A =
dist2 G Map_G Pure_G Mult_G A
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G A: Type
distT G Map_G Pure_G Mult_G A =
DerivedOperations.Dist_Bindt T G Map_G Pure_G Mult_G A
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G A: Type
distT G Map_G Pure_G Mult_G A = bindt (map ret)
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G A: Type
distT G Map_G Pure_G Mult_G A =
bindt' G Map_G Pure_G Mult_G (G A) A (map ret)
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G A: Type
distT G Map_G Pure_G Mult_G A =
DerivedOperations.Bindt_Categorical T G Map_G Pure_G
Mult_G (G A) A (map ret)
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G A: Type
distT G Map_G Pure_G Mult_G A =
map join ∘ dist T G ∘ map (map ret)
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G A: Type
distT G Map_G Pure_G Mult_G A =
map join ∘ dist T G ∘ map ret
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G A: Type
distT G Map_G Pure_G Mult_G A =
map join ∘ (dist T G ∘ map ret)
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G A: Type
distT G Map_G Pure_G Mult_G A =
map join ∘ (dist T G ∘ map ret)
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G A: Type
distT G Map_G Pure_G Mult_G A =
map join ∘ (map ret ∘ dist T G)
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G A: Type
distT G Map_G Pure_G Mult_G A =
map join ∘ map ret ∘ dist T G
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G A: Type
distT G Map_G Pure_G Mult_G A =
map join ∘ map (map ret) ∘ dist T G
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G A: Type
distT G Map_G Pure_G Mult_G A =
map (join ∘ map ret) ∘ dist T G
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G A: Type
distT G Map_G Pure_G Mult_G A = map id ∘ dist T G
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G A: Type
distT G Map_G Pure_G Mult_G A = id ∘ dist T G
reflexivity.Qed.
joinT = join2
joinT = join2
A: Type
joinT A = join2 A
A: Type
joinT A = DerivedOperations.Join_Bindt T A
A: Type
joinT A = bindt id
A: Type
joinT A =
bindt' (funA : Type => A) Map_I Pure_I Mult_I (T A) A
id
A: Type
joinT A =
DerivedOperations.Bindt_Categorical T
(funA : Type => A) Map_I Pure_I Mult_I (T A) A id
A: Type
joinT A =
map join ∘ dist T (funA : Type => A) ∘ map id
A: Type
joinT A = map join ∘ dist T (funA : Type => A) ∘ id
A: Type
joinT A = join ∘ dist T (funA : Type => A) ∘ id
A: Type
joinT A = join ∘ id ∘ id
reflexivity.Qed.EndCategorical_Kleisli_Categorical.(** * Kleisli ~> Categorical ~> Kleisli *)(**********************************************************************)ModuleKleisli_Categorical_Kleisli.Context
`{bindtT: Bindt T T}
`{Return T}
`{! Kleisli.TraversableMonad.TraversableMonad T}.Definitionmap': Map T :=
DerivedOperations.Map_Bindt T T.Definitiondist': ApplicativeDist T :=
DerivedOperations.Dist_Bindt T.Definitionjoin': Join T :=
DerivedOperations.Join_Bindt T.Definitionbindt2: Bindt T T :=
DerivedOperations.Bindt_Categorical T
(Map_T := map') (Join_T := join') (Dist_T := dist').
forall (AB : Type) (G : Type -> Type) (Map_G : Map G)
(Pure_G : Pure G) (Mult_G : Mult G),
Applicative G ->
bindtT G Map_G Pure_G Mult_G A B =
bindt2 G Map_G Pure_G Mult_G A B
forall (AB : Type) (G : Type -> Type) (Map_G : Map G)
(Pure_G : Pure G) (Mult_G : Mult G),
Applicative G ->
bindtT G Map_G Pure_G Mult_G A B =
bindt2 G Map_G Pure_G Mult_G A B
A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G
bindtT G Map_G Pure_G Mult_G A B =
bindt2 G Map_G Pure_G Mult_G A B
A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G f: A -> G (T B)
bindtT G Map_G Pure_G Mult_G A B f =
bindt2 G Map_G Pure_G Mult_G A B f
A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G f: A -> G (T B)
bindtT G Map_G Pure_G Mult_G A B f =
DerivedOperations.Bindt_Categorical T G Map_G Pure_G
Mult_G A B f
A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G f: A -> G (T B)
bindtT G Map_G Pure_G Mult_G A B f =
map join ∘ dist T G ∘ map f
A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G f: A -> G (T B)
bindtT G Map_G Pure_G Mult_G A B f =
map (join' B) ∘ dist T G ∘ map f
A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G f: A -> G (T B)
bindtT G Map_G Pure_G Mult_G A B f =
map (DerivedOperations.Join_Bindt T B) ∘ dist T G
∘ map f
A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G f: A -> G (T B)
bindtT G Map_G Pure_G Mult_G A B f =
map (bindt id) ∘ dist T G ∘ map f
A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G f: A -> G (T B)
bindtT G Map_G Pure_G Mult_G A B f =
map (bindt id) ∘ dist' G Map_G Pure_G Mult_G (T B)
∘ map f
A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G f: A -> G (T B)
bindtT G Map_G Pure_G Mult_G A B f =
map (bindt id)
∘ DerivedOperations.Dist_Bindt T G Map_G Pure_G Mult_G
(T B) ∘ map f
A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G f: A -> G (T B)
bindtT G Map_G Pure_G Mult_G A B f =
map (bindt id) ∘ bindt (map ret) ∘ map f
A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G f: A -> G (T B)
bindtT G Map_G Pure_G Mult_G A B f =
map (bindt id) ∘ bindt (map ret) ∘ map' A (G (T B)) f
A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G f: A -> G (T B)
bindtT G Map_G Pure_G Mult_G A B f =
map (bindt id) ∘ bindt (map ret)
∘ DerivedOperations.Map_Bindt T T A (G (T B)) f
A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G f: A -> G (T B)
bindtT G Map_G Pure_G Mult_G A B f =
map (bindt id) ∘ bindt (map ret) ∘ bindt (ret ∘ f)
A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G f: A -> G (T B)
bindtT G Map_G Pure_G Mult_G A B f =
map (bindt id) ∘ (bindt (map ret) ∘ bindt (ret ∘ f))
A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G f: A -> G (T B)
bindtT G Map_G Pure_G Mult_G A B f =
map (bindt id)
∘ (map (bindt (map ret)) ∘ bindt (ret ∘ f))
A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G f: A -> G (T B)
bindtT G Map_G Pure_G Mult_G A B f =
map (bindt id)
∘ (map (bindt (map ret)) ∘ bindt (ret ∘ f))
A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G f: A -> G (T B)
bindtT G Map_G Pure_G Mult_G A B f =
map (bindt id) ∘ bindt (map ret ⋆6 ret ∘ f)
A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G f: A -> G (T B)
bindtT G Map_G Pure_G Mult_G A B f =
map (bindt id)
∘ bindt (map (bindt (map ret)) ∘ (ret ∘ f))
A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G f: A -> G (T B)
bindtT G Map_G Pure_G Mult_G A B f =
map (bindt id) ∘ bindt (bindt (map ret) ∘ (ret ∘ f))
A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G f: A -> G (T B)
bindtT G Map_G Pure_G Mult_G A B f =
map (bindt id) ∘ bindt (bindt (map ret) ∘ ret ∘ f)
A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G f: A -> G (T B)
bindtT G Map_G Pure_G Mult_G A B f =
map (bindt id) ∘ bindt (map ret ∘ f)
A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G f: A -> G (T B)
bindtT G Map_G Pure_G Mult_G A B f =
map (bindt id) ∘ bindt (map ret ∘ f)
A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G f: A -> G (T B)
bindtT G Map_G Pure_G Mult_G A B f =
map (bindt id) ∘ bindt (map ret ∘ f)
A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G f: A -> G (T B)
bindtT G Map_G Pure_G Mult_G A B f =
map (bindt id) ∘ bindt (map ret ∘ f)
A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G f: A -> G (T B)
bindtT G Map_G Pure_G Mult_G A B f =
bindt (id ⋆6 map ret ∘ f)
A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G f: A -> G (T B)
bindtT G Map_G Pure_G Mult_G A B f =
bindt (id ⋆6 map ret ∘ f)
A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G f: A -> G (T B)
bindtT G Map_G Pure_G Mult_G A B f =
bindt (map (bindt id) ∘ (map ret ∘ f))
A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G f: A -> G (T B)
bindtT G Map_G Pure_G Mult_G A B f =
bindt (map (bindt id) ∘ map ret ∘ f)
A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G f: A -> G (T B)
bindtT G Map_G Pure_G Mult_G A B f =
bindt (map (bindt id ∘ ret) ∘ f)
A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G f: A -> G (T B)
bindtT G Map_G Pure_G Mult_G A B f =
bindt (map id ∘ f)
A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G f: A -> G (T B)
bindtT G Map_G Pure_G Mult_G A B f = bindt (id ∘ f)
reflexivity.Qed.EndKleisli_Categorical_Kleisli.(** * Coalgebraic ~> Kleisli ~> Coalgebraic *)(**********************************************************************)ModuleCoalgebraic_Kleisli_Coalgebraic.Context
`{toBatch6_T: ToBatch6 T T}
`{Return T}
`{! Coalgebraic.TraversableMonad.TraversableMonad T}.Definitionbindt': Bindt T T :=
@DerivedOperations.Bindt_ToBatch6 T T toBatch6_T.DefinitiontoBatch6_2: ToBatch6 T T :=
@DerivedOperations.ToBatch6_Bindt T T bindt'.
forallAB : Type, toBatch6_T A B = toBatch6_2 A B
forallAB : Type, toBatch6_T A B = toBatch6_2 A B
A, B: Type
toBatch6_T A B = toBatch6_2 A B
A, B: Type
toBatch6_T A B = DerivedOperations.ToBatch6_Bindt A B
A, B: Type
toBatch6_T A B = bindt (batch A (T B))
A, B: Type
toBatch6_T A B =
bindt' (Batch A (T B)) Map_Batch Pure_Batch Mult_Batch
A B (batch A (T B))
A, B: Type
toBatch6_T A B =
DerivedOperations.Bindt_ToBatch6 T T (Batch A (T B))
Map_Batch Pure_Batch Mult_Batch A B (batch A (T B))
A, B: Type
toBatch6_T A B = runBatch (batch A (T B)) ∘ toBatch6
A, B: Type
toBatch6_T A B = id ∘ toBatch6
reflexivity.Qed.EndCoalgebraic_Kleisli_Coalgebraic.(** * Kleisli ~> Coalgebraic ~> Kleisli *)(**********************************************************************)ModuleKleisli_Coalgebraic_Kleisli.Context
`{bindtT: Bindt T T}
`{Return T}
`{! Kleisli.TraversableMonad.TraversableMonad T}.DefinitiontoBatch6': ToBatch6 T T :=
DerivedOperations.ToBatch6_Bindt.Definitionbindt2: Bindt T T :=
DerivedOperations.Bindt_ToBatch6 T T
(H := toBatch6').
forall (AB : Type) (G : Type -> Type) (Map_G : Map G)
(Pure_G : Pure G) (Mult_G : Mult G),
Applicative G ->
bindtT G Map_G Pure_G Mult_G A B =
bindt2 G Map_G Pure_G Mult_G A B
forall (AB : Type) (G : Type -> Type) (Map_G : Map G)
(Pure_G : Pure G) (Mult_G : Mult G),
Applicative G ->
bindtT G Map_G Pure_G Mult_G A B =
bindt2 G Map_G Pure_G Mult_G A B
A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G
bindtT G Map_G Pure_G Mult_G A B =
bindt2 G Map_G Pure_G Mult_G A B
A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G f: A -> G (T B)
bindtT G Map_G Pure_G Mult_G A B f =
bindt2 G Map_G Pure_G Mult_G A B f
A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G f: A -> G (T B)
bindtT G Map_G Pure_G Mult_G A B f =
DerivedOperations.Bindt_ToBatch6 T T G Map_G Pure_G
Mult_G A B f
A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G f: A -> G (T B)
bindtT G Map_G Pure_G Mult_G A B f =
runBatch f ∘ toBatch6
A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G f: A -> G (T B)
bindtT G Map_G Pure_G Mult_G A B f =
runBatch f ∘ toBatch6' A B
A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G f: A -> G (T B)
bindtT G Map_G Pure_G Mult_G A B f =
runBatch f ∘ DerivedOperations.ToBatch6_Bindt A B
A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G f: A -> G (T B)
bindtT G Map_G Pure_G Mult_G A B f =
runBatch f ∘ bindt (batch A (T B))
A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G f: A -> G (T B)
bindtT G Map_G Pure_G Mult_G A B f =
bindt (runBatch f ∘ batch A (T B))
A, B: Type G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H1: Applicative G f: A -> G (T B)