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.DecoratedTraversableFunctor
Classes.Kleisli.DecoratedTraversableFunctor
Adapters.CategoricalToKleisli.DecoratedTraversableFunctor
Adapters.KleisliToCategorical.DecoratedTraversableFunctor.Import Product.Notations.Import Functor.Notations.Import Kleisli.DecoratedTraversableFunctor.Notations.#[local] Generalizable VariableT.(** * Categorical ~> Kleisli ~> Categorical *)(**********************************************************************)ModuleRoundtrip1.Context
(E: Type)
(T: Type -> Type)
`{mapT: Map T}
`{distT: ApplicativeDist T}
`{decorateT: Decorate E T}
`{! Categorical.DecoratedTraversableFunctor.DecoratedTraversableFunctor E T}.#[local] Instancemapdt': Mapdt E T :=
DerivedOperations.Mapdt_Categorical E T.Definitionmap2: Map T :=
DerivedOperations.Map_Mapdt.Definitiondecorate2: Decorate E T :=
DerivedOperations.Decorate_Mapdt E T.Definitiondist2: ApplicativeDist T :=
DerivedOperations.Dist_Mapdt E T.
mapT = map2
mapT = map2
mapT = DerivedOperations.Map_Mapdt
mapT =
(fun (AB : Type) (f : A -> B) => mapdt (f ∘ extract))
mapT =
(fun (AB : Type) (f : A -> B) =>
mapdt' (funA0 : Type => A0) Map_I Pure_I Mult_I A B
(f ∘ extract))
mapT =
(fun (AB : Type) (f : A -> B) =>
DerivedOperations.Mapdt_Categorical E T
(funA0 : Type => A0) Map_I Pure_I Mult_I A B
(f ∘ extract))
mapT =
(fun (AB : Type) (f : A -> B) =>
dist T (funA0 : Type => A0) ∘ map (f ∘ extract)
∘ dec T)
A, B: Type f: A -> B
mapT A B f =
dist T (funA : Type => A) ∘ map (f ∘ extract) ∘ dec T
A, B: Type f: A -> B
mapT A B f = id ∘ map (f ∘ extract) ∘ dec T
A, B: Type f: A -> B
mapT A B f = id ∘ (map f ∘ map extract) ∘ dec T
A, B: Type f: A -> B
mapT A B f = id ∘ (map f ∘ map extract ∘ dec T)
A, B: Type f: A -> B
mapT A B f = id ∘ (map f ∘ (map extract ∘ dec T))
A, B: Type f: A -> B
mapT A B f = id ∘ (map f ∘ id)
reflexivity.Qed.
distT = dist2
distT = dist2
G: Type -> Type Hmap: Map G Hpure: Pure G Hmult: Mult G u: Type
distT G Hmap Hpure Hmult u =
dist2 G Hmap Hpure Hmult u
G: Type -> Type Hmap: Map G Hpure: Pure G Hmult: Mult G u: Type
distT G Hmap Hpure Hmult u =
DerivedOperations.Dist_Mapdt E T G Hmap Hpure Hmult u
G: Type -> Type Hmap: Map G Hpure: Pure G Hmult: Mult G u: Type
distT G Hmap Hpure Hmult u = mapdt extract
G: Type -> Type Hmap: Map G Hpure: Pure G Hmult: Mult G u: Type
distT G Hmap Hpure Hmult u =
mapdt' G Hmap Hpure Hmult (G u) u extract
G: Type -> Type Hmap: Map G Hpure: Pure G Hmult: Mult G u: Type
distT G Hmap Hpure Hmult u =
DerivedOperations.Mapdt_Categorical E T G Hmap Hpure
Hmult (G u) u extract
G: Type -> Type Hmap: Map G Hpure: Pure G Hmult: Mult G u: Type
distT G Hmap Hpure Hmult u =
dist T G ∘ map extract ∘ dec T
G: Type -> Type Hmap: Map G Hpure: Pure G Hmult: Mult G u: Type
distT G Hmap Hpure Hmult u =
dist T G ∘ (map extract ∘ dec T)
G: Type -> Type Hmap: Map G Hpure: Pure G Hmult: Mult G u: Type
distT G Hmap Hpure Hmult u = dist T G ∘ id
reflexivity.Qed.
decorateT = decorate2
decorateT = decorate2
A: Type
decorateT A = decorate2 A
A: Type
decorateT A = DerivedOperations.Decorate_Mapdt E T A
A: Type
decorateT A = mapdt id
A: Type
decorateT A =
mapdt' (funA : Type => A) Map_I Pure_I Mult_I A
(E * A) id
A: Type
decorateT A =
DerivedOperations.Mapdt_Categorical E T
(funA : Type => A) Map_I Pure_I Mult_I A (E * A) id
A: Type
decorateT A =
dist T (funA : Type => A) ∘ map id ∘ dec T
A: Type
decorateT A = id ∘ map id ∘ dec T
A: Type
decorateT A = id ∘ id ∘ dec T
reflexivity.Qed.EndRoundtrip1.(** * Kleisli ~> Categorical ~> Kleisli *)(**********************************************************************)ModuleRoundtrip2.Context
(E: Type)
(T: Type -> Type)
`{mapdtT: Mapdt E T}
`{! Kleisli.DecoratedTraversableFunctor.DecoratedTraversableFunctor E T}.#[local] Instancemap': Map T :=
DerivedOperations.Map_Mapdt.#[local] Instancedist': ApplicativeDist T :=
DerivedOperations.Dist_Mapdt E T.#[local] Instancedecorate': Decorate E T :=
DerivedOperations.Decorate_Mapdt E T.Definitionmapdt2: Mapdt E T :=
DerivedOperations.Mapdt_Categorical E T.
forall (G : Type -> Type) (Map_G : Map G)
(Pure_G : Pure G) (Mult_G : Mult G),
Applicative G ->
mapdtT G Map_G Pure_G Mult_G =
mapdt2 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 ->
mapdtT G Map_G Pure_G Mult_G =
mapdt2 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
mapdtT G Map_G Pure_G Mult_G =
mapdt2 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 A, B: Type f: E * A -> G B
mapdtT G Map_G Pure_G Mult_G A B f =
mapdt2 G Map_G Pure_G Mult_G A B f
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H0: Applicative G A, B: Type f: E * A -> G B
mapdtT G Map_G Pure_G Mult_G A B f =
DerivedOperations.Mapdt_Categorical E T G Map_G Pure_G
Mult_G A B f
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H0: Applicative G A, B: Type f: E * A -> G B
mapdtT G Map_G Pure_G Mult_G A B f =
dist T G ∘ map f ∘ dec T
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H0: Applicative G A, B: Type f: E * A -> G B
mapdtT G Map_G Pure_G Mult_G A B f =
dist T G ∘ map' (E * A) (G B) f ∘ dec T
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H0: Applicative G A, B: Type f: E * A -> G B
mapdtT G Map_G Pure_G Mult_G A B f =
dist T G ∘ DerivedOperations.Map_Mapdt (E * A) (G B) f
∘ dec T
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H0: Applicative G A, B: Type f: E * A -> G B
mapdtT G Map_G Pure_G Mult_G A B f =
dist T G ∘ mapdt (f ∘ extract) ∘ dec T
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H0: Applicative G A, B: Type f: E * A -> G B
mapdtT G Map_G Pure_G Mult_G A B f =
dist' G Map_G Pure_G Mult_G B ∘ mapdt (f ∘ extract)
∘ dec T
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H0: Applicative G A, B: Type f: E * A -> G B
mapdtT G Map_G Pure_G Mult_G A B f =
DerivedOperations.Dist_Mapdt E T G Map_G Pure_G Mult_G
B ∘ mapdt (f ∘ extract) ∘ dec T
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H0: Applicative G A, B: Type f: E * A -> G B
mapdtT G Map_G Pure_G Mult_G A B f =
mapdt extract ∘ mapdt (f ∘ extract) ∘ dec T
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H0: Applicative G A, B: Type f: E * A -> G B
mapdtT G Map_G Pure_G Mult_G A B f =
mapdt extract ∘ mapdt (f ∘ extract) ∘ decorate' A
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H0: Applicative G A, B: Type f: E * A -> G B
mapdtT G Map_G Pure_G Mult_G A B f =
mapdt extract ∘ mapdt (f ∘ extract)
∘ DerivedOperations.Decorate_Mapdt E T A
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H0: Applicative G A, B: Type f: E * A -> G B
mapdtT G Map_G Pure_G Mult_G A B f =
mapdt extract ∘ mapdt (f ∘ extract) ∘ mapdt id
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H0: Applicative G A, B: Type f: E * A -> G B
mapdtT G Map_G Pure_G Mult_G A B f =
mapdt extract ∘ map f ∘ mapdt id
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H0: Applicative G A, B: Type f: E * A -> G B
mapdtT G Map_G Pure_G Mult_G A B f =
mapdt (extract ∘ map f) ∘ mapdt id
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H0: Applicative G A, B: Type f: E * A -> G B
mapdtT G Map_G Pure_G Mult_G A B f =
map (mapdt (extract ∘ map f)) ∘ mapdt id
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H0: Applicative G A, B: Type f: E * A -> G B
mapdtT G Map_G Pure_G Mult_G A B f =
mapdt (extract ∘ map f ⋆3 id)
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H0: Applicative G A, B: Type f: E * A -> G B
mapdtT G Map_G Pure_G Mult_G A B f =
mapdt (extract ∘ map f ⋆3 id)
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H0: Applicative G A, B: Type f: E * A -> G B
mapdtT G Map_G Pure_G Mult_G A B f =
mapdt (map f ∘ extract ⋆3 id)
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H0: Applicative G A, B: Type f: E * A -> G B
mapdtT G Map_G Pure_G Mult_G A B f =
mapdt (map (map f) ∘ id)
G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H0: Applicative G A, B: Type f: E * A -> G B
mapdtT G Map_G Pure_G Mult_G A B f = mapdt (f ∘ id)