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 Export
Classes.Categorical.TraversableFunctor
Classes.Kleisli.TraversableFunctor
Adapters.CategoricalToKleisli.TraversableFunctor
Adapters.KleisliToCategorical.TraversableFunctor.(** * Categorical ~> Kleisli ~> Categorical *)(**********************************************************************)Moduletraversable_functor_categorical_kleisli_categorical.Context
(T: Type -> Type)
`{mapT: Map T}
`{distT: ApplicativeDist T}
`{! Categorical.TraversableFunctor.TraversableFunctor T}.#[local] Instancetraverse': Traverse T :=
DerivedOperations.Traverse_Categorical T.Definitionmap2: Map T :=
DerivedOperations.Map_Traverse T.Definitiondist2: ApplicativeDist T :=
DerivedOperations.Dist_Traverse T.
mapT = map2
mapT = map2
mapT = DerivedOperations.Map_Traverse T
mapT = (fun (AB : Type) (f : A -> B) => traverse f)
mapT =
(fun (AB : Type) (f : A -> B) =>
traverse' (funA0 : Type => A0) Map_I Pure_I Mult_I A
B f)
mapT =
(fun (AB : Type) (f : A -> B) =>
DerivedOperations.Traverse_Categorical T
(funA0 : Type => A0) Map_I Pure_I Mult_I A B f)
mapT =
(funAB : Type =>
compose (dist T (funA0 : Type => A0)) ○ map)
A, B: Type f: A -> B
mapT A B f = dist T (funA : Type => A) ∘ map f
A, B: Type f: A -> B
mapT A B f = id ∘ map f
reflexivity.Qed.
distT = dist2
distT = dist2
distT = DerivedOperations.Dist_Traverse T
distT =
(fun (G : Type -> Type) (H : Map G) (H0 : Pure G)
(H1 : Mult G) (A : Type) => traverse id)
distT =
(fun (G : Type -> Type) (H : Map G) (H0 : Pure G)
(H1 : Mult G) (A : Type) =>
traverse' G H H0 H1 (G A) A id)
distT =
(fun (G : Type -> Type) (H : Map G) (H0 : Pure G)
(H1 : Mult G) (A : Type) =>
DerivedOperations.Traverse_Categorical T G H H0 H1
(G A) A id)
distT =
(fun (G : Type -> Type) (H : Map G) (H0 : Pure G)
(H1 : Mult G) (A : Type) => dist T G ∘ map id)
G: Type -> Type Hmap: Map G Hpure: Pure G Hmult: Mult G
distT G Hmap Hpure Hmult =
(funA : Type => dist T G ∘ map id)
G: Type -> Type Hmap: Map G Hpure: Pure G Hmult: Mult G A: Type
distT G Hmap Hpure Hmult A = dist T G ∘ map id
G: Type -> Type Hmap: Map G Hpure: Pure G Hmult: Mult G A: Type
distT G Hmap Hpure Hmult A = dist T G ∘ id
reflexivity.Qed.Endtraversable_functor_categorical_kleisli_categorical.(** * Kleisli ~> Categorical ~> Kleisli *)(**********************************************************************)Moduletraversable_functor_kleisli_categorical_kleisli.Context
(T: Type -> Type)
`{traverseT: Traverse T}
`{@Classes.Kleisli.TraversableFunctor.TraversableFunctor T _}.Definitionmap': Map T :=
DerivedOperations.Map_Traverse T.Definitiondist': ApplicativeDist T :=
DerivedOperations.Dist_Traverse T.Definitiontraverse2: Traverse T :=
DerivedOperations.Traverse_Categorical T
(Map_T := map') (Dist_T := dist').
forall (G : Type -> Type) (Map_G : Map G)
(Pure_G : Pure G) (Mult_G : Mult G),
Applicative G ->
traverseT G Map_G Pure_G Mult_G =
traverse2 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 ->
traverseT G Map_G Pure_G Mult_G =
traverse2 G Map_G Pure_G Mult_G
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H0: Applicative G
traverseT G Map_G Pure_G Mult_G =
traverse2 G Map_G Pure_G Mult_G
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H0: Applicative G
traverseT G Map_G Pure_G Mult_G =
DerivedOperations.Traverse_Categorical T G Map_G
Pure_G Mult_G
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H0: Applicative G
traverseT G Map_G Pure_G Mult_G =
(funAB : Type => compose (dist T G) ○ map)
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H0: Applicative G
traverseT G Map_G Pure_G Mult_G =
(funAB : Type =>
compose (dist' G Map_G Pure_G Mult_G B) ○ map)
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H0: Applicative G
traverseT G Map_G Pure_G Mult_G =
(funAB : Type =>
compose
(DerivedOperations.Dist_Traverse T G Map_G Pure_G
Mult_G B) ○ map)
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H0: Applicative G
traverseT G Map_G Pure_G Mult_G =
(funAB : Type => compose (traverse id) ○ map)
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H0: Applicative G
traverseT G Map_G Pure_G Mult_G =
(funAB : Type =>
compose (traverse id)
○ DerivedOperations.Map_Traverse T A (G B))
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H0: Applicative G A, B: Type f: A -> G B
traverseT G Map_G Pure_G Mult_G A B f =
traverse id
∘ DerivedOperations.Map_Traverse T A (G B) f
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H0: Applicative G A, B: Type f: A -> G B
traverseT G Map_G Pure_G Mult_G A B f =
traverse id ∘ traverse f
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H0: Applicative G A, B: Type f: A -> G B
traverseT G Map_G Pure_G Mult_G A B f =
map (traverse id) ∘ traverse f
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H0: Applicative G A, B: Type f: A -> G B
traverseT G Map_G Pure_G Mult_G A B f =
traverse (kc2 id f)
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H0: Applicative G A, B: Type f: A -> G B
traverseT G Map_G Pure_G Mult_G A B f =
traverse (kc2 id f)