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.Kleisli.DecoratedTraversableFunctor
Classes.Kleisli.Theory.TraversableFunctor
Classes.Kleisli.DecoratedContainerFunctor
Classes.Kleisli.DecoratedShapelyFunctor
Classes.Kleisli.Theory.DecoratedContainerFunctor
Functors.Early.Environment.From Coq.Logic Require Import Decidable.#[local] Generalizable VariableE T M ϕ A B C G.Import DecoratedContainerFunctor.Notations.Import ContainerFunctor.Notations.Import Monoid.Notations.Import Subset.Notations.Import Product.Notations.Import Kleisli.DecoratedTraversableFunctor.DerivedInstances.(** * Theory of Decorated Traversable Functors *)(**********************************************************************)(** ** <<mapdt>> with constant applicative functors *)(**********************************************************************)Sectionmapdt_constant_applicatives.Context
{E: Type}
{T: Type -> Type}
`{Mapdt_inst: Mapdt E T}
`{Map_inst: Map T}
`{! Compat_Map_Mapdt E T}
`{! DecoratedTraversableFunctor E T}
`{Monoid M}.
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M A, B: Type f: E * A -> const M B
mapdt f = mapdt f
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M A, B: Type f: E * A -> const M B
mapdt f = mapdt f
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M A, B: Type f: E * A -> const M B
mapdt f = map (map exfalso) ∘ mapdt f
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M A, B: Type f: E * A -> const M B
mapdt f = mapdt (map exfalso ∘ f)
reflexivity.Qed.
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M B, fake1, fake2, A: Type f: E * A -> const M B
mapdt f = mapdt f
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M B, fake1, fake2, A: Type f: E * A -> const M B
mapdt f = mapdt f
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M B, fake1, fake2, A: Type f: E * A -> const M B
mapdt f = mapdt f
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M B, fake1, fake2, A: Type f: E * A -> const M B
mapdt f = mapdt f
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M B, fake1, fake2, A: Type f: E * A -> const M B
mapdt f = mapdt f
easy.Qed.Endmapdt_constant_applicatives.(** * Derived Operation <<mapdReduce>> *)(**********************************************************************)DefinitionmapdReduce {T: Type -> Type} `{Mapdt E T}
`{op: Monoid_op M} `{unit: Monoid_unit M}
{A: Type} (f: E * A -> M): T A -> M :=
mapdt (G := const M) (B := False) f.Sectionmapdt_mapdReduce.Context
{E: Type}
{T: Type -> Type}
`{Mapdt_inst: Mapdt E T}
`{Mapd_inst: Mapd E T}
`{Traverse_inst: Traverse T}
`{Map_inst: Map T}
`{! Compat_Map_Mapdt E T}
`{! Compat_Mapd_Mapdt E T}
`{! Compat_Traverse_Mapdt E T}
`{! DecoratedTraversableFunctor E T}.(** ** Rewriting Laws *)(********************************************************************)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M A: Type f: E * A -> M
mapdReduce f = mapdt f
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M A: Type f: E * A -> M
mapdReduce f = mapdt f
reflexivity.Qed.
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M A: Type f: E * A -> M
forallfake : Type, mapdReduce f = mapdt f
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M A: Type f: E * A -> M
forallfake : Type, mapdReduce f = mapdt f
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M A: Type f: E * A -> M fake: Type
mapdReduce f = mapdt f
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M A: Type f: E * A -> M fake: Type
mapdt f = mapdt f
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M A: Type f: E * A -> M fake: Type
mapdt f = mapdt f
reflexivity.Qed.(** ** Composition Laws with <<mapd>> and <<map>> *)(********************************************************************)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M B: Type
forall (g : E * B -> M) (A : Type) (f : E * A -> B),
mapdReduce g ∘ mapd f = mapdReduce (g ∘ cobind f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M B: Type
forall (g : E * B -> M) (A : Type) (f : E * A -> B),
mapdReduce g ∘ mapd f = mapdReduce (g ∘ cobind f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M B: Type g: E * B -> M A: Type f: E * A -> B
mapdReduce g ∘ mapd f = mapdReduce (g ∘ cobind f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M B: Type g: E * B -> M A: Type f: E * A -> B
mapdt g ∘ mapd f = mapdReduce (g ∘ cobind f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M B: Type g: E * B -> M A: Type f: E * A -> B
mapdt (kc1 g f) = mapdReduce (g ∘ cobind f)
reflexivity.Qed.
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M
forall (B : Type) (g : E * B -> M) (A : Type)
(f : A -> B),
mapdReduce g ∘ map f = mapdReduce (g ∘ map f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M
forall (B : Type) (g : E * B -> M) (A : Type)
(f : A -> B),
mapdReduce g ∘ map f = mapdReduce (g ∘ map f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M B: Type g: E * B -> M A: Type f: A -> B
mapdReduce g ∘ map f = mapdReduce (g ∘ map f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M B: Type g: E * B -> M A: Type f: A -> B
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M B: Type g: E * B -> M A: Type f: A -> B
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M B: Type g: E * B -> M A: Type f: A -> B
mapd (f ∘ extract) = mapdt (f ∘ extract)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M B: Type g: E * B -> M A: Type f: A -> B
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M B: Type g: E * B -> M A: Type f: A -> B
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M B: Type g: E * B -> M A: Type f: A -> B
mapd (f ∘ extract) = mapdt (f ∘ extract)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M B: Type g: E * B -> M A: Type f: A -> B
mapdt (f ∘ extract) = mapdt (f ∘ extract)
reflexivity.Qed.(** ** Composition with Monoid Homomorphisms *)(********************************************************************)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M1, M2: Type src_op: Monoid_op M1 src_unit: Monoid_unit M1 tgt_op: Monoid_op M2 tgt_unit: Monoid_unit M2 ϕ: M1 -> M2 morphism: Monoid_Morphism M1 M2 ϕ
forall (A : Type) (f : E * A -> M1),
ϕ ∘ mapdReduce f = mapdReduce (ϕ ∘ f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M1, M2: Type src_op: Monoid_op M1 src_unit: Monoid_unit M1 tgt_op: Monoid_op M2 tgt_unit: Monoid_unit M2 ϕ: M1 -> M2 morphism: Monoid_Morphism M1 M2 ϕ
forall (A : Type) (f : E * A -> M1),
ϕ ∘ mapdReduce f = mapdReduce (ϕ ∘ f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M1, M2: Type src_op: Monoid_op M1 src_unit: Monoid_unit M1 tgt_op: Monoid_op M2 tgt_unit: Monoid_unit M2 ϕ: M1 -> M2 morphism: Monoid_Morphism M1 M2 ϕ A: Type f: E * A -> M1
ϕ ∘ mapdReduce f = mapdReduce (ϕ ∘ f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M1, M2: Type src_op: Monoid_op M1 src_unit: Monoid_unit M1 tgt_op: Monoid_op M2 tgt_unit: Monoid_unit M2 ϕ: M1 -> M2 morphism: Monoid_Morphism M1 M2 ϕ A: Type f: E * A -> M1 monmor_src: Monoid M1 monmor_tgt: Monoid M2 monmor_unit: ϕ Ƶ = Ƶ monmor_op: foralla1a2 : M1,
ϕ (a1 ● a2) = ϕ a1 ● ϕ a2
ϕ ∘ mapdReduce f = mapdReduce (ϕ ∘ f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M1, M2: Type src_op: Monoid_op M1 src_unit: Monoid_unit M1 tgt_op: Monoid_op M2 tgt_unit: Monoid_unit M2 ϕ: M1 -> M2 morphism: Monoid_Morphism M1 M2 ϕ A: Type f: E * A -> M1 monmor_src: Monoid M1 monmor_tgt: Monoid M2 monmor_unit: ϕ Ƶ = Ƶ monmor_op: foralla1a2 : M1,
ϕ (a1 ● a2) = ϕ a1 ● ϕ a2
ϕ ∘ mapdt f = mapdReduce (ϕ ∘ f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M1, M2: Type src_op: Monoid_op M1 src_unit: Monoid_unit M1 tgt_op: Monoid_op M2 tgt_unit: Monoid_unit M2 ϕ: M1 -> M2 morphism: Monoid_Morphism M1 M2 ϕ A: Type f: E * A -> M1 monmor_src: Monoid M1 monmor_tgt: Monoid M2 monmor_unit: ϕ Ƶ = Ƶ monmor_op: foralla1a2 : M1,
ϕ (a1 ● a2) = ϕ a1 ● ϕ a2
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M1, M2: Type src_op: Monoid_op M1 src_unit: Monoid_unit M1 tgt_op: Monoid_op M2 tgt_unit: Monoid_unit M2 ϕ: M1 -> M2 morphism: Monoid_Morphism M1 M2 ϕ A: Type f: E * A -> M1 monmor_src: Monoid M1 monmor_tgt: Monoid M2 monmor_unit: ϕ Ƶ = Ƶ monmor_op: foralla1a2 : M1,
ϕ (a1 ● a2) = ϕ a1 ● ϕ a2
reflexivity.Qed.(** *** <<mapdReduce>> as a generalization of <<mapReduce>> *)(********************************************************************)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forall (M : Type) (op : Monoid_op M)
(unit0 : Monoid_unit M),
Monoid M ->
forall (A : Type) (f : A -> M),
mapReduce f = mapdReduce (f ∘ extract)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forall (M : Type) (op : Monoid_op M)
(unit0 : Monoid_unit M),
Monoid M ->
forall (A : Type) (f : A -> M),
mapReduce f = mapdReduce (f ∘ extract)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M A: Type f: A -> M
mapReduce f = mapdReduce (f ∘ extract)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M A: Type f: A -> M
traverse f = mapdReduce (f ∘ extract)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M A: Type f: A -> M
mapdt (f ∘ extract) = mapdReduce (f ∘ extract)
reflexivity.Qed.Endmapdt_mapdReduce.(** * The <<toctxlist>> operation *)(**********************************************************************)#[local] InstanceToCtxlist_Mapdt
`{Mapdt E T}: ToCtxlist E T :=
funA => mapdReduce (ret (T := list)).ClassCompat_ToCtxlist_Mapdt
(E: Type)
(T: Type -> Type)
`{ToCtxlist_inst: ToCtxlist E T}
`{Mapdt_inst: Mapdt E T}: Prop :=
compat_toctxlist_mapdt:
ToCtxlist_inst = @ToCtxlist_Mapdt E T Mapdt_inst.#[export] InstanceCompat_ToCtxlist_Mapdt_Self
`{Mapdt_ET: Mapdt E T}:
@Compat_ToCtxlist_Mapdt E T ToCtxlist_Mapdt Mapdt_ET
:= ltac:(reflexivity).
E: Type T: Type -> Type ToCtxlist_inst: ToCtxlist E T Mapdt_ET: Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T
forallA : Type, toctxlist = mapdReduce ret
E: Type T: Type -> Type ToCtxlist_inst: ToCtxlist E T Mapdt_ET: Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T
forallA : Type, toctxlist = mapdReduce ret
E: Type T: Type -> Type ToCtxlist_inst: ToCtxlist E T Mapdt_ET: Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T A: Type
toctxlist = mapdReduce ret
E: Type T: Type -> Type ToCtxlist_inst: ToCtxlist E T Mapdt_ET: Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T A: Type
ToCtxlist_Mapdt A = mapdReduce ret
reflexivity.Qed.Sectionmapdt_toctxlist.Context
{E: Type}
{T: Type -> Type}
`{Mapdt_inst: Mapdt E T}
`{Mapd_inst: Mapd E T}
`{Traverse_inst: Traverse T}
`{Map_inst: Map T}
`{Toctxlist_inst: ToCtxlist E T}
`{! Compat_Map_Mapdt E T}
`{! Compat_Mapd_Mapdt E T}
`{! Compat_Traverse_Mapdt E T}
`{! Compat_ToCtxlist_Mapdt E T}
`{! DecoratedTraversableFunctor E T}.(** ** Rewriting to <<mapdReduce>>/<<mapdt>>*)(********************************************************************)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forallA : Type, toctxlist = mapdReduce ret
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forallA : Type, toctxlist = mapdReduce ret
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type
toctxlist = mapdReduce ret
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type
mapdReduce ret = mapdReduce ret
reflexivity.Qed.
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forallA : Type, toctxlist = mapdt ret
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forallA : Type, toctxlist = mapdt ret
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type
toctxlist = mapdt ret
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type
mapdReduce ret = mapdt ret
reflexivity.Qed.
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forallAfake : Type, toctxlist = mapdt ret
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forallAfake : Type, toctxlist = mapdt ret
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, fake: Type
toctxlist = mapdt ret
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, fake: Type
mapdt ret = mapdt ret
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, fake: Type
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
Natural (@toctxlist E T Toctxlist_inst)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
Natural (@toctxlist E T Toctxlist_inst)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
Functor T
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
Functor (env E)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forall (AB : Type) (f : A -> B),
map f ∘ toctxlist = toctxlist ∘ map f
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
Functor T
typeclasses eauto.
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
Functor (env E)
typeclasses eauto.
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forall (AB : Type) (f : A -> B),
map f ∘ toctxlist = toctxlist ∘ map f
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: A -> B
map f ∘ toctxlist = toctxlist ∘ map f
(* LHS *)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: A -> B
map f ∘ toctxlist = toctxlist ∘ map f
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: A -> B
map f ∘ mapdReduce ret = toctxlist ∘ map f
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: A -> B
Monoid_Morphism (list (E * A)) (list (E * B)) (map f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: A -> B H: Monoid_Morphism (list (E * A))
(list (E * B)) (map f)
map f ∘ mapdReduce ret = toctxlist ∘ map f
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: A -> B
Monoid_Morphism (list (E * A)) (list (E * B)) (map f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: A -> B
Monoid_Morphism (list (E * A)) (list (E * B))
(map (map f))
apply Monmor_list_map.
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: A -> B H: Monoid_Morphism (list (E * A))
(list (E * B)) (map f)
map f ∘ mapdReduce ret = toctxlist ∘ map f
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: A -> B H: Monoid_Morphism (list (E * A))
(list (E * B)) (map f)
mapdReduce (map f ∘ ret) = toctxlist ∘ map f
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: A -> B H: Monoid_Morphism (list (E * A))
(list (E * B)) (map f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: A -> B H: Monoid_Morphism (list (E * A))
(list (E * B)) (map f)
mapdReduce (ret ∘ map f) = toctxlist ∘ map f
(* RHS *)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: A -> B H: Monoid_Morphism (list (E * A))
(list (E * B)) (map f)
mapdReduce (ret ∘ map f) = mapdReduce ret ∘ map f
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: A -> B H: Monoid_Morphism (list (E * A))
(list (E * B)) (map f)
reflexivity.Qed.(** ** Composing <<toctxlist>> with <<mapd>> *)(********************************************************************)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forall (AB : Type) (f : E * A -> B),
toctxlist ∘ mapd f = mapdReduce (ret ∘ cobind f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forall (AB : Type) (f : E * A -> B),
toctxlist ∘ mapd f = mapdReduce (ret ∘ cobind f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B
toctxlist ∘ mapd f = mapdReduce (ret ∘ cobind f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B
mapdReduce ret ∘ mapd f = mapdReduce (ret ∘ cobind f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forall (AB : Type) (f : A -> B),
toctxlist ∘ map f = mapdReduce (ret ∘ map f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forall (AB : Type) (f : A -> B),
toctxlist ∘ map f = mapdReduce (ret ∘ map f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: A -> B
toctxlist ∘ map f = mapdReduce (ret ∘ map f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: A -> B
mapdReduce ret ∘ map f = mapdReduce (ret ∘ map f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: A -> B
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forall (AB : Type) (f : E * A -> B),
tolist ∘ mapd f = mapdReduce (ret ∘ f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forall (AB : Type) (f : E * A -> B),
tolist ∘ mapd f = mapdReduce (ret ∘ f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B
tolist ∘ mapd f = mapdReduce (ret ∘ f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B
mapReduce ret ∘ mapd f = mapdReduce (ret ∘ f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B
mapdReduce (ret ∘ f) = mapdReduce (ret ∘ f)
reflexivity.Qed.(** ** Naturality for <<toctxlist>> *)(********************************************************************)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forall (AB : Type) (f : E * A -> B),
mapd f ∘ toctxlist = toctxlist ∘ mapd f
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forall (AB : Type) (f : E * A -> B),
mapd f ∘ toctxlist = toctxlist ∘ mapd f
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B
mapd f ∘ toctxlist = toctxlist ∘ mapd f
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B
mapd f ∘ toctxlist = mapdReduce (ret ∘ cobind f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B
mapd f ∘ mapdReduce ret = mapdReduce (ret ∘ cobind f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B
Monoid_Morphism (env E A) (env E B) (mapd f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B H: Monoid_Morphism (env E A) (env E B) (mapd f)
mapd f ∘ mapdReduce ret = mapdReduce (ret ∘ cobind f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B
Monoid_Morphism (env E A) (env E B) (mapd f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B
Monoid_Morphism (list (E * A)) (list (E * B)) (mapd f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B
Monoid_Morphism (list (E * A)) (list (E * B))
(map (cobind f))
typeclasses eauto.
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B H: Monoid_Morphism (env E A) (env E B) (mapd f)
mapd f ∘ mapdReduce ret = mapdReduce (ret ∘ cobind f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B H: Monoid_Morphism (env E A) (env E B) (mapd f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B H: Monoid_Morphism (env E A) (env E B) (mapd f)
mapd f ∘ ret = ret ∘ cobind f
now ext [e a].(* TODO ^ generalize this part *)Qed.
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forall (AB : Type) (f : A -> B),
map f ∘ toctxlist = toctxlist ∘ map f
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forall (AB : Type) (f : A -> B),
map f ∘ toctxlist = toctxlist ∘ map f
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: A -> B
map f ∘ toctxlist = toctxlist ∘ map f
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: A -> B
map f ∘ mapdReduce ret = toctxlist ∘ map f
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: A -> B
map f ∘ mapdReduce ret = mapdReduce ret ∘ map f
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: A -> B
map f ∘ mapdReduce ret = mapdReduce (ret ∘ map f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: A -> B
Monoid_Morphism (env E A) (env E B) (map f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: A -> B H: Monoid_Morphism (env E A) (env E B) (map f)
map f ∘ mapdReduce ret = mapdReduce (ret ∘ map f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: A -> B
Monoid_Morphism (env E A) (env E B) (map f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: A -> B
Monoid_Morphism (list (E * A)) (list (E * B)) (map f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: A -> B
Monoid_Morphism (list (E * A)) (list (E * B))
(map (map f))
typeclasses eauto.
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: A -> B H: Monoid_Morphism (env E A) (env E B) (map f)
map f ∘ mapdReduce ret = mapdReduce (ret ∘ map f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: A -> B H: Monoid_Morphism (env E A) (env E B) (map f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: A -> B H: Monoid_Morphism (env E A) (env E B) (map f)
map f ∘ ret = ret ∘ map f
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: A -> B H: Monoid_Morphism (env E A) (env E B) (map f)
map (map f) ∘ ret = ret ∘ map f
nowrewrite (natural (ϕ := @ret list _) (A := E * A) (B := E * B)).Qed.(** ** Factoring <<mapdReduce>> through <<toctxlist>> *)(********************************************************************)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M
forall (A : Type) (f : E * A -> M),
mapdReduce f = mapReduce f ∘ toctxlist
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M
forall (A : Type) (f : E * A -> M),
mapdReduce f = mapReduce f ∘ toctxlist
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M A: Type f: E * A -> M
mapdReduce f = mapReduce f ∘ toctxlist
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M A: Type f: E * A -> M
mapdReduce f = mapReduce f ∘ mapdReduce ret
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M A: Type f: E * A -> M
mapdReduce f = mapReduce_list f ∘ mapdReduce ret
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M A: Type f: E * A -> M
mapdReduce f = mapdReduce (mapReduce_list f ∘ ret)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M A: Type f: E * A -> M
mapdReduce f = mapdReduce f
reflexivity.Qed.(** ** Relating <<tolist>> and <<toctxlist>> *)(********************************************************************)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forallA : Type, tolist = map extract ∘ toctxlist
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forallA : Type, tolist = map extract ∘ toctxlist
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type
tolist = map extract ∘ toctxlist
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type
mapReduce ret = map extract ∘ toctxlist
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type
mapdReduce (ret ∘ extract) =
map extract ∘ mapdReduce ret
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T Toctxlist_inst: ToCtxlist E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxlist_Mapdt0: Compat_ToCtxlist_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type
reflexivity.Qed.Endmapdt_toctxlist.(** * <<toctxset>> and <<∈d>> *)(**********************************************************************)#[local] InstanceToCtxset_Mapdt
`{Mapdt E T}: ToCtxset E T :=
funA => mapdReduce (ret (T := subset) (A := E * A)).ClassCompat_ToCtxset_Mapdt
(E: Type)
(T: Type -> Type)
`{ToCtxset_inst: ToCtxset E T}
`{Mapdt_inst: Mapdt E T}: Prop :=
compat_toctxset_mapdt:
ToCtxset_inst = @ToCtxset_Mapdt E T Mapdt_inst.#[export] InstanceCompat_ToCtxset_Mapdt_Self
`{Mapdt_ET: Mapdt E T}:
@Compat_ToCtxset_Mapdt E T ToCtxset_Mapdt Mapdt_ET
:= ltac:(reflexivity).
E: Type T: Type -> Type ToCtxset_inst: ToCtxset E T Mapdt_ET: Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T
forallA : Type, toctxset = mapdReduce ret
E: Type T: Type -> Type ToCtxset_inst: ToCtxset E T Mapdt_ET: Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T
forallA : Type, toctxset = mapdReduce ret
E: Type T: Type -> Type ToCtxset_inst: ToCtxset E T Mapdt_ET: Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type
toctxset = mapdReduce ret
E: Type T: Type -> Type ToCtxset_inst: ToCtxset E T Mapdt_ET: Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type
ToCtxset_Mapdt A = mapdReduce ret
reflexivity.Qed.(** A <<tosubset>> that is compatible with <<traverse>> is compatible with the <<toctxset>> that is compatible with <<mapdt>>, if <<traverse>> is compatible with <<mapdt>> *)
E: Type T: Type -> Type H: Mapdt E T H0: Traverse T ToSubset_T: ToSubset T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
Compat_ToSubset_ToCtxset E T
E: Type T: Type -> Type H: Mapdt E T H0: Traverse T ToSubset_T: ToSubset T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
Compat_ToSubset_ToCtxset E T
E: Type T: Type -> Type H: Mapdt E T H0: Traverse T ToSubset_T: ToSubset T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
ToSubset_T = ToSubset_ToCtxset
E: Type T: Type -> Type H: Mapdt E T H0: Traverse T ToSubset_T: ToSubset T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
ToSubset_Traverse = ToSubset_ToCtxset
E: Type T: Type -> Type H: Mapdt E T H0: Traverse T ToSubset_T: ToSubset T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
(funA : Type => mapReduce ret) = ToSubset_ToCtxset
E: Type T: Type -> Type H: Mapdt E T H0: Traverse T ToSubset_T: ToSubset T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
(funA : Type => mapReduce ret) =
(funA : Type => map extract ∘ toctxset)
E: Type T: Type -> Type H: Mapdt E T H0: Traverse T ToSubset_T: ToSubset T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
(funA : Type => mapReduce ret) =
(funA : Type => map extract ∘ mapdReduce ret)
E: Type T: Type -> Type H: Mapdt E T H0: Traverse T ToSubset_T: ToSubset T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type
mapReduce ret = map extract ∘ mapdReduce ret
E: Type T: Type -> Type H: Mapdt E T H0: Traverse T ToSubset_T: ToSubset T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type
mapdReduce (ret ∘ extract) =
map extract ∘ mapdReduce ret
E: Type T: Type -> Type H: Mapdt E T H0: Traverse T ToSubset_T: ToSubset T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type
E: Type T: Type -> Type H: Mapdt E T H0: Traverse T ToSubset_T: ToSubset T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type
reflexivity.Qed.Sectionmapdt_toctxset.Context
{E: Type}
{T: Type -> Type}
`{Mapdt_inst: Mapdt E T}
`{Mapd_inst: Mapd E T}
`{Traverse_inst: Traverse T}
`{Map_inst: Map T}
`{ToCtxset_inst: ToCtxset E T}
`{! Compat_Map_Mapdt E T}
`{! Compat_Mapd_Mapdt E T}
`{! Compat_Traverse_Mapdt E T}
`{! Compat_ToCtxset_Mapdt E T}
`{! DecoratedTraversableFunctor E T}.(** ** Rewriting <<toctxset_of>> and <<∈d>> to <<mapdReduce>> *)(********************************************************************)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forallA : Type, toctxset = mapdReduce ret
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forallA : Type, toctxset = mapdReduce ret
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type
toctxset = mapdReduce ret
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type
mapdReduce ret = mapdReduce ret
reflexivity.Qed.
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forallA : Type, toctxset = mapdt ret
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forallA : Type, toctxset = mapdt ret
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type
toctxset = mapdt ret
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type
mapdReduce ret = mapdt ret
reflexivity.Qed.
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forallAfake : Type, toctxset = mapdt ret
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forallAfake : Type, toctxset = mapdt ret
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, fake: Type
toctxset = mapdt ret
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, fake: Type
mapdt ret = mapdt ret
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, fake: Type
mapdt ret = mapdt ret
reflexivity.Qed.
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T H: ToSubset T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T
forall (A : Type) (p : E * A),
element_ctx_of p = mapdReduce {{p}}
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T H: ToSubset T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T
forall (A : Type) (p : E * A),
element_ctx_of p = mapdReduce {{p}}
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T H: ToSubset T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T A: Type p: E * A
element_ctx_of p = mapdReduce {{p}}
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T H: ToSubset T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T A: Type p: E * A
evalAt p ∘ toctxset = mapdReduce {{p}}
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T H: ToSubset T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T A: Type p: E * A
evalAt p ∘ mapdReduce ret = mapdReduce {{p}}
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T H: ToSubset T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T A: Type p: E * A
mapdReduce (evalAt p ∘ ret) = mapdReduce {{p}}
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T H: ToSubset T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T A: Type p: E * A
mapdReduce (funa : E * A => ret a p) =
mapdReduce {{p}}
now (fequal; ext [e' a']; propext; intuition).Qed.
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T H: ToSubset T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T
forallA : Type, element_ctx_of = mapdReduce ∘ ret
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T H: ToSubset T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T
forallA : Type, element_ctx_of = mapdReduce ∘ ret
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T H: ToSubset T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T A: Type
element_ctx_of = mapdReduce ∘ ret
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T H: ToSubset T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T A: Type p: E * A
element_ctx_of p = (mapdReduce ∘ ret) p
apply element_ctx_of_to_mapdReduce.Qed.(** ** Factoring <<toctxset_of>> through <<toctxlist>>/<<mapdReduce>> *)(********************************************************************)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forallA : Type, toctxset = tosubset ∘ toctxlist
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forallA : Type, toctxset = tosubset ∘ toctxlist
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type
toctxset = tosubset ∘ toctxlist
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type
toctxset = tosubset ∘ mapdReduce ret
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type
toctxset = mapdReduce (tosubset ∘ ret)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type
mapdReduce ret = mapdReduce (tosubset ∘ ret)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type
mapdReduce ret = mapdReduce ret
reflexivity.Qed.
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forallA : Type, tosubset = toctxset
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forallA : Type, tosubset = toctxset
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type
tosubset = toctxset
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type l: list (E * A)
tosubset l = toctxset l
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type
tosubset nil = toctxset nil
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type a: E * A l: list (E * A) IHl: tosubset l = toctxset l
tosubset (a :: l) = toctxset (a :: l)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type
tosubset nil = toctxset nil
reflexivity.
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type a: E * A l: list (E * A) IHl: tosubset l = toctxset l
tosubset (a :: l) = toctxset (a :: l)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type a: E * A l: list (E * A) IHl: tosubset l = toctxset l
{{a}} ∪ tosubset l = toctxset (a :: l)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type e: E a: A l: list (E * A) IHl: tosubset l = toctxset l
{{(e, a)}} ∪ tosubset l = toctxset ((e, a) :: l)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type e: E a: A l: list (E * A) IHl: tosubset l = toctxset l
{{(e, a)}} ∪ tosubset l =
(pure cons ● map (pair e) (ret (e, a))) ● toctxset l
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type e: E a: A l: list (E * A) IHl: tosubset l = toctxset l
{{(e, a)}} ∪ tosubset l =
(Ƶ ● map (pair e) (ret (e, a))) ● toctxset l
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type e: E a: A l: list (E * A) IHl: tosubset l = toctxset l
{{(e, a)}} ∪ tosubset l =
map (pair e) (ret (e, a)) ● toctxset l
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type e: E a: A l: list (E * A) IHl: tosubset l = toctxset l
{{(e, a)}} ∪ tosubset l =
map (pair e) (ret (e, a)) ● tosubset l
reflexivity.Qed.
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forallA : Type, toctxset = toctxset ∘ toctxlist
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forallA : Type, toctxset = toctxset ∘ toctxlist
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type
toctxset = toctxset ∘ toctxlist
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type
tosubset ∘ toctxlist = toctxset ∘ toctxlist
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type
toctxset ∘ toctxlist = toctxset ∘ toctxlist
reflexivity.Qed.
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forallA : Type, toctxset = tosubset ∘ mapdReduce ret
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forallA : Type, toctxset = tosubset ∘ mapdReduce ret
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type
toctxset = tosubset ∘ mapdReduce ret
apply toctxset_through_toctxlist.Qed.(** ** Fusion Laws for <<toctxset>> *)(********************************************************************)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forall (AB : Type) (f : E * A -> B),
toctxset ∘ mapd f = mapdReduce (ret ∘ cobind f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forall (AB : Type) (f : E * A -> B),
toctxset ∘ mapd f = mapdReduce (ret ∘ cobind f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B
toctxset ∘ mapd f = mapdReduce (ret ∘ cobind f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B
mapdReduce ret ∘ mapd f = mapdReduce (ret ∘ cobind f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forall (AB : Type) (f : A -> B),
toctxset ∘ map f = mapdReduce (ret ∘ map f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forall (AB : Type) (f : A -> B),
toctxset ∘ map f = mapdReduce (ret ∘ map f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: A -> B
toctxset ∘ map f = mapdReduce (ret ∘ map f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: A -> B
mapdReduce ret ∘ map f = mapdReduce (ret ∘ map f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: A -> B
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T H: ToSubset T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T
forall (AB : Type) (f : E * A -> B),
tosubset ∘ mapd f = mapdReduce (ret ∘ f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T H: ToSubset T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T
forall (AB : Type) (f : E * A -> B),
tosubset ∘ mapd f = mapdReduce (ret ∘ f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T H: ToSubset T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T A, B: Type f: E * A -> B
tosubset ∘ mapd f = mapdReduce (ret ∘ f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T H: ToSubset T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T A, B: Type f: E * A -> B
mapReduce ret ∘ mapd f = mapdReduce (ret ∘ f)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T H: ToSubset T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T A, B: Type f: E * A -> B
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T H: ToSubset T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T A, B: Type f: E * A -> B
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T H: ToSubset T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T A, B: Type f: E * A -> B
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T H: ToSubset T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T A, B: Type f: E * A -> B
mapdReduce (ret ∘ f) = mapdReduce (ret ∘ f)
reflexivity.Qed.(** ** Naturality for <<toctxset>> *)(********************************************************************)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forall (AB : Type) (f : E * A -> B),
mapd f ∘ ret = ret ∘ mapd f
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B
mapd f ∘ ret = ret ∘ mapd f
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B e: E a: A
(mapd f ∘ ret) (e, a) = (ret ∘ mapd f) (e, a)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B e: E a: A
mapd f (ret (e, a)) = ret (mapd f (e, a))
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B e: E a: A
mapd f (funb : E * A => (e, a) = b) =
(funb : E * B => mapd f (e, a) = b)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B e: E a: A
(fun '(e0, b) =>
existsa0 : A, (e, a) = (e0, a0) /\ f (e0, a0) = b) =
(funb : E * B => mapd f (e, a) = b)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B e: E a: A
(fun '(e0, b) =>
existsa0 : A, (e, a) = (e0, a0) /\ f (e0, a0) = b) =
(funb : E * B => cobind f (e, a) = b)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B e: E a: A e': E b: B
(existsa0 : A, (e, a) = (e', a0) /\ f (e', a0) = b) =
(cobind f (e, a) = (e', b))
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B e: E a: A e': E b: B
(existsa0 : A, (e, a) = (e', a0) /\ f (e', a0) = b) =
((e, f (e, a)) = (e', b))
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B e: E a: A e': E b: B
(existsa0 : A, (e, a) = (e', a0) /\ f (e', a0) = b) ->
(e, f (e, a)) = (e', b)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B e: E a: A e': E b: B
(e, f (e, a)) = (e', b) ->
existsa0 : A, (e, a) = (e', a0) /\ f (e', a0) = b
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B e: E a: A e': E b: B
(existsa0 : A, (e, a) = (e', a0) /\ f (e', a0) = b) ->
(e, f (e, a)) = (e', b)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B e: E a: A e': E b: B a'': A Heq: (e, a) = (e', a'') Hf: f (e', a'') = b
(e, f (e, a)) = (e', b)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B e: E a: A e': E b: B a'': A Heq: (e, a) = (e', a'') Hf: f (e', a'') = b H0: e = e' H1: a = a''
(e', f (e', a'')) = (e', b)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B e: E a: A e': E b: B a'': A Heq: (e, a) = (e', a'') Hf: f (e', a'') = b H0: e = e' H1: a = a''
(e', b) = (e', b)
reflexivity.
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B e: E a: A e': E b: B
(e, f (e, a)) = (e', b) ->
existsa0 : A, (e, a) = (e', a0) /\ f (e', a0) = b
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B e: E a: A e': E b: B H: (e, f (e, a)) = (e', b)
existsa0 : A, (e, a) = (e', a0) /\ f (e', a0) = b
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B e: E a: A e': E b: B H: (e, f (e, a)) = (e', b)
(e, a) = (e', a) /\ f (e', a) = b
nowinversion H.Qed.
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forall (AB : Type) (f : E * A -> B),
toctxset ∘ mapd f = mapd f ∘ toctxset
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forall (AB : Type) (f : E * A -> B),
toctxset ∘ mapd f = mapd f ∘ toctxset
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B
toctxset ∘ mapd f = mapd f ∘ toctxset
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B
mapdReduce ret ∘ mapd f = mapd f ∘ toctxset
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B
mapdReduce ret ∘ mapd f = mapd f ∘ mapdReduce ret
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B
mapdReduce (ret ∘ cobind f) = mapd f ∘ mapdReduce ret
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B
mapdReduce
((@ret subset Return_subset ○ prod E) B ∘ mapd f) =
mapdReduce (mapd f ∘ ret)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: E * A -> B
mapdReduce (mapd f ∘ ret) = mapdReduce (mapd f ∘ ret)
reflexivity.Qed.
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forall (AB : Type) (f : A -> B),
toctxset ∘ map f = map f ∘ toctxset
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forall (AB : Type) (f : A -> B),
toctxset ∘ map f = map f ∘ toctxset
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: A -> B
toctxset ∘ map f = map f ∘ toctxset
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: A -> B
toctxset ∘ map f = map (map f) ∘ toctxset
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: A -> B
mapdReduce ret ∘ map f = map (map f) ∘ toctxset
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: A -> B
mapdReduce (ret ∘ map f) = map (map f) ∘ toctxset
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: A -> B
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: A -> B
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: A -> B
reflexivity.Qed.(* Theorem ind_mapd_iff_core: forall `(f: E * A -> B), mapd f ∘ toctxset = toctxset ∘ mapd (T := T) f. Proof. intros. rewrite toctxset_through_toctxlist. rewrite toctxset_through_toctxlist. reassociate -> on right. change (list (prod ?E ?X)) with (env E X). (* hidden *) rewrite <- (mapd_toctxlist f). rewrite env_mapd_spec. reassociate <- on right. rewrite ctxset_mapd_spec. change (env ?E ?X) with (list (prod E X)). (* hidden *) unfold ctxset. rewrite <- (natural (ϕ := @tosubset list _)). reflexivity. Qed. *)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
Natural (@toctxset E T ToCtxset_inst)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
Natural (@toctxset E T ToCtxset_inst)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forall (AB : Type) (f : A -> B),
map f ∘ toctxset = toctxset ∘ map f
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: A -> B
map f ∘ toctxset = toctxset ∘ map f
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A, B: Type f: A -> B
map f ∘ toctxset = map f ∘ toctxset
reflexivity.Qed.(** ** Relating <<tosubset>> and <<toctxset>> *)(********************************************************************)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T H: ToSubset T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T
forallA : Type, tosubset = map extract ∘ toctxset
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T H: ToSubset T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T
forallA : Type, tosubset = map extract ∘ toctxset
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T H: ToSubset T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T A: Type
tosubset = map extract ∘ toctxset
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T H: ToSubset T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T A: Type
mapReduce ret = map extract ∘ toctxset
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T H: ToSubset T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T A: Type
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T H: ToSubset T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T A: Type
mapdReduce (ret ∘ extract) =
map extract ∘ mapdReduce ret
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T H: ToSubset T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T A: Type
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T H: ToSubset T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T A: Type
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forall (A : Type) (e : E) (a : A) (t : T A),
(e, a) ∈d t <-> (e, a) ∈ (toctxlist t : list (E * A))
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forall (A : Type) (e : E) (a : A) (t : T A),
(e, a) ∈d t <-> (e, a) ∈ (toctxlist t : list (E * A))
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type e: E a: A t: T A
(e, a) ∈d t <-> (e, a) ∈ (toctxlist t : list (E * A))
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type e: E a: A t: T A
toctxset t (e, a) <-> (e, a) ∈ toctxlist t
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type e: E a: A t: T A
(tosubset ∘ toctxlist) t (e, a) <->
(e, a) ∈ toctxlist t
reflexivity.Qed.
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forall (A : Type) (e : E) (a : A) (t : T A),
(e, a) ∈d t <-> (e, a) ∈d toctxlist t
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T
forall (A : Type) (e : E) (a : A) (t : T A),
(e, a) ∈d t <-> (e, a) ∈d toctxlist t
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type e: E a: A t: T A
(e, a) ∈d t <-> (e, a) ∈d toctxlist t
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type e: E a: A t: T A
toctxset t (e, a) <-> toctxset (toctxlist t) (e, a)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type e: E a: A t: T A
toctxset t (e, a) <-> tosubset (toctxlist t) (e, a)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T A: Type e: E a: A t: T A
(tosubset ∘ toctxlist) t (e, a) <->
tosubset (toctxlist t) (e, a)
reflexivity.Qed.(** ** Folding by Preordered Monoids *)(********************************************************************)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoid M R
forall (A : Type) (fg : E * A -> M) (t : T A),
(forall (e : E) (a : A),
(e, a) ∈d t -> R (f (e, a)) (g (e, a))) ->
R (mapdReduce f t) (mapdReduce g t)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoid M R
forall (A : Type) (fg : E * A -> M) (t : T A),
(forall (e : E) (a : A),
(e, a) ∈d t -> R (f (e, a)) (g (e, a))) ->
R (mapdReduce f t) (mapdReduce g t)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoid M R A: Type f, g: E * A -> M t: T A Hin: forall (e : E) (a : A),
(e, a) ∈d t -> R (f (e, a)) (g (e, a))
R (mapdReduce f t) (mapdReduce g t)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoid M R A: Type f, g: E * A -> M t: T A Hin: forall (e : E) (a : A),
(e, a) ∈ toctxlist t -> R (f (e, a)) (g (e, a))
R (mapdReduce f t) (mapdReduce g t)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoid M R A: Type f, g: E * A -> M t: T A Hin: forall (e : E) (a : A),
(e, a) ∈ toctxlist t -> R (f (e, a)) (g (e, a))
R ((mapReduce f ∘ toctxlist) t) (mapdReduce g t)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoid M R A: Type f, g: E * A -> M t: T A Hin: forall (e : E) (a : A),
(e, a) ∈ toctxlist t -> R (f (e, a)) (g (e, a))
R ((mapReduce f ∘ toctxlist) t)
((mapReduce g ∘ toctxlist) t)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoid M R A: Type f, g: E * A -> M t: T A Hin: forall (e : E) (a : A),
(e, a) ∈ toctxlist t -> R (f (e, a)) (g (e, a))
R (mapReduce f (toctxlist t))
(mapReduce g (toctxlist t))
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoid M R A: Type f, g: E * A -> M t: T A Hin: forall (e : E) (a : A),
(e, a) ∈ nil -> R (f (e, a)) (g (e, a))
R (mapReduce f nil) (mapReduce g nil)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoid M R A: Type f, g: E * A -> M t: T A a: E * A e: list (E * A) Hin: forall (e0 : E) (a0 : A),
(e0, a0) ∈ (a :: e) ->
R (f (e0, a0)) (g (e0, a0)) IHe: (forall (e0 : E) (a : A),
(e0, a) ∈ e -> R (f (e0, a)) (g (e0, a))) ->
R (mapReduce f e) (mapReduce g e)
R (mapReduce f (a :: e)) (mapReduce g (a :: e))
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoid M R A: Type f, g: E * A -> M t: T A Hin: forall (e : E) (a : A),
(e, a) ∈ nil -> R (f (e, a)) (g (e, a))
R (mapReduce f nil) (mapReduce g nil)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoid M R A: Type f, g: E * A -> M t: T A Hin: forall (e : E) (a : A),
(e, a) ∈ nil -> R (f (e, a)) (g (e, a))
R unit unit
reflexivity.
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoid M R A: Type f, g: E * A -> M t: T A a: E * A e: list (E * A) Hin: forall (e0 : E) (a0 : A),
(e0, a0) ∈ (a :: e) ->
R (f (e0, a0)) (g (e0, a0)) IHe: (forall (e0 : E) (a : A),
(e0, a) ∈ e -> R (f (e0, a)) (g (e0, a))) ->
R (mapReduce f e) (mapReduce g e)
R (mapReduce f (a :: e)) (mapReduce g (a :: e))
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoid M R A: Type f, g: E * A -> M t: T A hd: E * A e: list (E * A) Hin: forall (e0 : E) (a : A),
(e0, a) ∈ (hd :: e) -> R (f (e0, a)) (g (e0, a)) IHe: (forall (e0 : E) (a : A),
(e0, a) ∈ e -> R (f (e0, a)) (g (e0, a))) ->
R (mapReduce f e) (mapReduce g e)
R (mapReduce f (hd :: e)) (mapReduce g (hd :: e))
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoid M R A: Type f, g: E * A -> M t: T A hd: E * A tl: list (E * A) Hin: forall (e : E) (a : A),
(e, a) ∈ (hd :: tl) -> R (f (e, a)) (g (e, a)) IHe: (forall (e : E) (a : A),
(e, a) ∈ tl -> R (f (e, a)) (g (e, a))) ->
R (mapReduce f tl) (mapReduce g tl)
R (mapReduce f (hd :: tl)) (mapReduce g (hd :: tl))
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoid M R A: Type f, g: E * A -> M t: T A e: E a: A tl: list (E * A) Hin: forall (e0 : E) (a0 : A),
(e0, a0) ∈ ((e, a) :: tl) ->
R (f (e0, a0)) (g (e0, a0)) IHe: (forall (e : E) (a : A),
(e, a) ∈ tl -> R (f (e, a)) (g (e, a))) ->
R (mapReduce f tl) (mapReduce g tl)
R (mapReduce f ((e, a) :: tl))
(mapReduce g ((e, a) :: tl))
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoid M R A: Type f, g: E * A -> M t: T A e: E a: A tl: list (E * A) Hin: forall (e0 : E) (a0 : A),
(e0, a0) = (e, a) \/ (e0, a0) ∈ tl ->
R (f (e0, a0)) (g (e0, a0)) IHe: (forall (e : E) (a : A),
(e, a) ∈ tl -> R (f (e, a)) (g (e, a))) ->
R (mapReduce f tl) (mapReduce g tl)
R (mapReduce f ((e, a) :: tl))
(mapReduce g ((e, a) :: tl))
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoid M R A: Type f, g: E * A -> M t: T A e: E a: A tl: list (E * A) Hin: forall (e0 : E) (a0 : A),
(e0, a0) = (e, a) \/ (e0, a0) ∈ tl ->
R (f (e0, a0)) (g (e0, a0)) IHe: (forall (e : E) (a : A),
(e, a) ∈ tl -> R (f (e, a)) (g (e, a))) ->
R (mapReduce f tl) (mapReduce g tl)
R (mapReduce_list f ((e, a) :: tl))
(mapReduce_list g ((e, a) :: tl))
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoid M R A: Type f, g: E * A -> M t: T A e: E a: A tl: list (E * A) Hin: forall (e0 : E) (a0 : A),
(e0, a0) = (e, a) \/ (e0, a0) ∈ tl ->
R (f (e0, a0)) (g (e0, a0)) IHe: (forall (e : E) (a : A),
(e, a) ∈ tl -> R (f (e, a)) (g (e, a))) ->
R (mapReduce f tl) (mapReduce g tl)
R (f (e, a) ● mapReduce_list f tl)
(g (e, a) ● mapReduce_list g tl)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoid M R A: Type f, g: E * A -> M t: T A e: E a: A tl: list (E * A) Hin: forall (e0 : E) (a0 : A),
(e0, a0) = (e, a) \/ (e0, a0) ∈ tl ->
R (f (e0, a0)) (g (e0, a0)) IHe: (forall (e : E) (a : A),
(e, a) ∈ tl -> R (f (e, a)) (g (e, a))) ->
R (mapReduce f tl) (mapReduce g tl)
R (f (e, a)) (g (e, a))
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoid M R A: Type f, g: E * A -> M t: T A e: E a: A tl: list (E * A) Hin: forall (e0 : E) (a0 : A),
(e0, a0) = (e, a) \/ (e0, a0) ∈ tl ->
R (f (e0, a0)) (g (e0, a0)) IHe: (forall (e : E) (a : A),
(e, a) ∈ tl -> R (f (e, a)) (g (e, a))) ->
R (mapReduce f tl) (mapReduce g tl)
R (mapReduce_list f tl) (mapReduce_list g tl)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoid M R A: Type f, g: E * A -> M t: T A e: E a: A tl: list (E * A) Hin: forall (e0 : E) (a0 : A),
(e0, a0) = (e, a) \/ (e0, a0) ∈ tl ->
R (f (e0, a0)) (g (e0, a0)) IHe: (forall (e : E) (a : A),
(e, a) ∈ tl -> R (f (e, a)) (g (e, a))) ->
R (mapReduce f tl) (mapReduce g tl)
R (f (e, a)) (g (e, a))
auto.
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoid M R A: Type f, g: E * A -> M t: T A e: E a: A tl: list (E * A) Hin: forall (e0 : E) (a0 : A),
(e0, a0) = (e, a) \/ (e0, a0) ∈ tl ->
R (f (e0, a0)) (g (e0, a0)) IHe: (forall (e : E) (a : A),
(e, a) ∈ tl -> R (f (e, a)) (g (e, a))) ->
R (mapReduce f tl) (mapReduce g tl)
R (mapReduce_list f tl) (mapReduce_list g tl)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoid M R A: Type f, g: E * A -> M t: T A e: E a: A tl: list (E * A) Hin: forall (e0 : E) (a0 : A),
(e0, a0) = (e, a) \/ (e0, a0) ∈ tl ->
R (f (e0, a0)) (g (e0, a0)) IHe: (forall (e : E) (a : A),
(e, a) ∈ tl -> R (f (e, a)) (g (e, a))) ->
R (mapReduce f tl) (mapReduce g tl)
R (mapReduce f tl) (mapReduce g tl)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoid M R A: Type f, g: E * A -> M t: T A e: E a: A tl: list (E * A) Hin: forall (e0 : E) (a0 : A),
(e0, a0) = (e, a) \/ (e0, a0) ∈ tl ->
R (f (e0, a0)) (g (e0, a0)) IHe: (forall (e : E) (a : A),
(e, a) ∈ tl -> R (f (e, a)) (g (e, a))) ->
R (mapReduce f tl) (mapReduce g tl)
forall (e : E) (a : A),
(e, a) ∈ tl -> R (f (e, a)) (g (e, a))
intuition.Qed.
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoidPos M R
forall (A : Type) (f : E * A -> M) (t : T A) (e : E)
(a : A),
(e, a) ∈d t -> R (f (e, a)) (mapdReduce f t)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoidPos M R
forall (A : Type) (f : E * A -> M) (t : T A) (e : E)
(a : A),
(e, a) ∈d t -> R (f (e, a)) (mapdReduce f t)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoidPos M R A: Type f: E * A -> M t: T A e: E a: A Hin: (e, a) ∈d t
R (f (e, a)) (mapdReduce f t)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoidPos M R A: Type f: E * A -> M t: T A e: E a: A Hin: (e, a) ∈ toctxlist t
R (f (e, a)) (mapdReduce f t)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoidPos M R A: Type f: E * A -> M t: T A e: E a: A Hin: (e, a) ∈ toctxlist t
R (f (e, a)) ((mapReduce f ∘ toctxlist) t)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoidPos M R A: Type f: E * A -> M t: T A e: E a: A Hin: (e, a) ∈ toctxlist t
R (f (e, a)) (mapReduce f (toctxlist t))
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoidPos M R A: Type f: E * A -> M t: T A e: E a: A Hin: (e, a) ∈ nil
R (f (e, a)) (mapReduce f nil)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoidPos M R A: Type f: E * A -> M t: T A e: E a: A a0: E * A e0: list (E * A) Hin: (e, a) ∈ (a0 :: e0) IHe0: (e, a) ∈ e0 -> R (f (e, a)) (mapReduce f e0)
R (f (e, a)) (mapReduce f (a0 :: e0))
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoidPos M R A: Type f: E * A -> M t: T A e: E a: A Hin: (e, a) ∈ nil
R (f (e, a)) (mapReduce f nil)
inversion Hin.
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoidPos M R A: Type f: E * A -> M t: T A e: E a: A a0: E * A e0: list (E * A) Hin: (e, a) ∈ (a0 :: e0) IHe0: (e, a) ∈ e0 -> R (f (e, a)) (mapReduce f e0)
R (f (e, a)) (mapReduce f (a0 :: e0))
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoidPos M R A: Type f: E * A -> M t: T A e: E a: A hd: E * A e0: list (E * A) Hin: (e, a) ∈ (hd :: e0) IHe0: (e, a) ∈ e0 -> R (f (e, a)) (mapReduce f e0)
R (f (e, a)) (mapReduce f (hd :: e0))
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoidPos M R A: Type f: E * A -> M t: T A e: E a: A hd: E * A tl: list (E * A) Hin: (e, a) ∈ (hd :: tl) IHe0: (e, a) ∈ tl -> R (f (e, a)) (mapReduce f tl)
R (f (e, a)) (mapReduce f (hd :: tl))
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoidPos M R A: Type f: E * A -> M t: T A e: E a: A e': E a': A tl: list (E * A) Hin: (e, a) ∈ ((e', a') :: tl) IHe0: (e, a) ∈ tl -> R (f (e, a)) (mapReduce f tl)
R (f (e, a)) (mapReduce f ((e', a') :: tl))
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoidPos M R A: Type f: E * A -> M t: T A e: E a: A e': E a': A tl: list (E * A) Hin: (e, a) = (e', a') \/ (e, a) ∈ tl IHe0: (e, a) ∈ tl -> R (f (e, a)) (mapReduce f tl)
R (f (e, a)) (mapReduce f ((e', a') :: tl))
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoidPos M R A: Type f: E * A -> M t: T A e: E a: A e': E a': A tl: list (E * A) Hin: (e, a) = (e', a') \/ (e, a) ∈ tl IHe0: (e, a) ∈ tl -> R (f (e, a)) (mapReduce f tl)
R (f (e, a)) (mapReduce_list f ((e', a') :: tl))
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoidPos M R A: Type f: E * A -> M t: T A e: E a: A e': E a': A tl: list (E * A) Hin: (e, a) = (e', a') \/ (e, a) ∈ tl IHe0: (e, a) ∈ tl -> R (f (e, a)) (mapReduce f tl)
R (f (e, a)) (f (e', a') ● mapReduce_list f tl)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoidPos M R A: Type f: E * A -> M t: T A e: E a: A e': E a': A tl: list (E * A) Hin: (e, a) = (e', a') \/ (e, a) ∈ tl IHe0: (e, a) ∈ tl -> R (f (e, a)) (mapReduce f tl)
R (f (e, a)) (f (e', a') ● mapReduce f tl)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoidPos M R A: Type f: E * A -> M t: T A e: E a: A e': E a': A tl: list (E * A) Hin: (e, a) = (e', a') IHe0: (e, a) ∈ tl -> R (f (e, a)) (mapReduce f tl)
R (f (e, a)) (f (e', a') ● mapReduce f tl)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoidPos M R A: Type f: E * A -> M t: T A e: E a: A e': E a': A tl: list (E * A) Hin: (e, a) ∈ tl IHe0: (e, a) ∈ tl -> R (f (e, a)) (mapReduce f tl)
R (f (e, a)) (f (e', a') ● mapReduce f tl)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoidPos M R A: Type f: E * A -> M t: T A e: E a: A e': E a': A tl: list (E * A) Hin: (e, a) = (e', a') IHe0: (e, a) ∈ tl -> R (f (e, a)) (mapReduce f tl)
R (f (e, a)) (f (e', a') ● mapReduce f tl)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoidPos M R A: Type f: E * A -> M t: T A e: E a: A e': E a': A tl: list (E * A) Hin: (e, a) = (e', a') IHe0: (e, a) ∈ tl -> R (f (e, a)) (mapReduce f tl) H1: e = e' H2: a = a'
R (f (e', a')) (f (e', a') ● mapReduce f tl)
apply pompos_incr_r.
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoidPos M R A: Type f: E * A -> M t: T A e: E a: A e': E a': A tl: list (E * A) Hin: (e, a) ∈ tl IHe0: (e, a) ∈ tl -> R (f (e, a)) (mapReduce f tl)
R (f (e, a)) (f (e', a') ● mapReduce f tl)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoidPos M R A: Type f: E * A -> M t: T A e: E a: A e': E a': A tl: list (E * A) Hin: (e, a) ∈ tl IHe0: (e, a) ∈ tl -> R (f (e, a)) (mapReduce f tl)
R (f (e, a)) (mapReduce f tl)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoidPos M R A: Type f: E * A -> M t: T A e: E a: A e': E a': A tl: list (E * A) Hin: (e, a) ∈ tl IHe0: (e, a) ∈ tl -> R (f (e, a)) (mapReduce f tl)
R (mapReduce f tl) (f (e', a') ● mapReduce f tl)
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoidPos M R A: Type f: E * A -> M t: T A e: E a: A e': E a': A tl: list (E * A) Hin: (e, a) ∈ tl IHe0: (e, a) ∈ tl -> R (f (e, a)) (mapReduce f tl)
R (f (e, a)) (mapReduce f tl)
auto.
E: Type T: Type -> Type Mapdt_inst: Mapdt E T Mapd_inst: Mapd E T Traverse_inst: Traverse T Map_inst: Map T ToCtxset_inst: ToCtxset E T Compat_Map_Mapdt0: Compat_Map_Mapdt E T Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt E T Compat_Traverse_Mapdt0: Compat_Traverse_Mapdt E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T DecoratedTraversableFunctor0: DecoratedTraversableFunctor
E T M: Type R: relation M op: Monoid_op M unit: Monoid_unit M H: PreOrderedMonoidPos M R A: Type f: E * A -> M t: T A e: E a: A e': E a': A tl: list (E * A) Hin: (e, a) ∈ tl IHe0: (e, a) ∈ tl -> R (f (e, a)) (mapReduce f tl)
R (mapReduce f tl) (f (e', a') ● mapReduce f tl)
apply pompos_incr_l.Qed.Endmapdt_toctxset.(** * Quantification with Context: <<Forall_ctx>> and <<Forany_ctx>> *)(**********************************************************************)Sectionquantification.Context
`{DecoratedTraversableFunctor E T}
`{ToCtxset E T}
`{! Compat_ToCtxset_Mapdt E T}.DefinitionForall_ctx `(P: E * A -> Prop): T A -> Prop :=
@mapdReduce T E _ Prop Monoid_op_and Monoid_unit_true A P.DefinitionForany_ctx `(P: E * A -> Prop): T A -> Prop :=
@mapdReduce T E _ Prop Monoid_op_or Monoid_unit_false A P.
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A
Forall_ctx P t <->
(forall (e : E) (a : A), (e, a) ∈d t -> P (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A
Forall_ctx P t <->
(forall (e : E) (a : A), (e, a) ∈d t -> P (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A
mapdReduce P t <->
(forall (e : E) (a : A), (e, a) ∈d t -> P (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A
(mapReduce P ∘ toctxlist) t <->
(forall (e : E) (a : A), (e, a) ∈d t -> P (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A
(mapReduce P ∘ toctxlist) t <->
(forall (e : E) (a : A),
(e, a) ∈d toctxlist t -> P (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A
mapReduce P (toctxlist t) <->
(forall (e : E) (a : A),
(e, a) ∈d toctxlist t -> P (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A
mapReduce P nil <->
(forall (e : E) (a : A), (e, a) ∈d nil -> P (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A) IHrest: mapReduce P rest <->
(forall (e : E) (a : A),
(e, a) ∈d rest -> P (e, a))
mapReduce P ((e, a) :: rest) <->
(forall (e0 : E) (a0 : A),
(e0, a0) ∈d ((e, a) :: rest) -> P (e0, a0))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A
mapReduce P nil <->
(forall (e : E) (a : A), (e, a) ∈d nil -> P (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A
(True -> forall (e : E) (a : A), False -> P (e, a)) /\
((forall (e : E) (a : A), False -> P (e, a)) -> True)
intuition.
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A) IHrest: mapReduce P rest <->
(forall (e : E) (a : A),
(e, a) ∈d rest -> P (e, a))
mapReduce P ((e, a) :: rest) <->
(forall (e0 : E) (a0 : A),
(e0, a0) ∈d ((e, a) :: rest) -> P (e0, a0))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A) IHrest: mapReduce P rest <->
(forall (e : E) (a : A),
(e, a) ∈d rest -> P (e, a))
P (e, a) ● mapReduce P rest <->
(forall (e0 : E) (a0 : A),
(e0, a0) ∈d ((e, a) :: rest) -> P (e0, a0))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A)
P (e, a)
● (forall (e : E) (a : A), (e, a) ∈d rest -> P (e, a)) <->
(forall (e0 : E) (a0 : A),
(e0, a0) ∈d ((e, a) :: rest) -> P (e0, a0))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A)
P (e, a)
● (forall (e : E) (a : A),
toctxset rest (e, a) -> P (e, a)) <->
(forall (e0 : E) (a0 : A),
toctxset ((e, a) :: rest) (e0, a0) -> P (e0, a0))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A)
P (e, a)
● (forall (e : E) (a : A),
tosubset rest (e, a) -> P (e, a)) <->
(forall (e0 : E) (a0 : A),
tosubset ((e, a) :: rest) (e0, a0) -> P (e0, a0))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A)
P (e, a)
● (forall (e : E) (a : A),
tosubset rest (e, a) -> P (e, a)) <->
(forall (e0 : E) (a0 : A),
({{(e, a)}} ∪ tosubset rest) (e0, a0) -> P (e0, a0))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A)
P (e, a)
● (forall (e : E) (a : A), (e, a) ∈ rest -> P (e, a)) <->
(forall (e0 : E) (a0 : A),
({{(e, a)}} ∪ tosubset rest) (e0, a0) -> P (e0, a0))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A)
P (e, a)
● (forall (e : E) (a : A), (e, a) ∈ rest -> P (e, a)) <->
(forall (e0 : E) (a0 : A),
(e0, a0) = (e, a) \/ (e0, a0) ∈ rest -> P (e0, a0))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A)
P (e, a)
● (forall (e : E) (a : A), (e, a) ∈ rest -> P (e, a)) <->
(forall (e0 : E) (a0 : A),
e0 = e /\ a0 = a \/ (e0, a0) ∈ rest -> P (e0, a0))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A)
P (e, a) /\
(forall (e : E) (a : A), (e, a) ∈ rest -> P (e, a)) <->
(forall (e0 : E) (a0 : A),
e0 = e /\ a0 = a \/ (e0, a0) ∈ rest -> P (e0, a0))
intuition (subst; auto).Qed.
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A
Forall_ctx P t =
(forall (e : E) (a : A), (e, a) ∈d t -> P (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A
Forall_ctx P t =
(forall (e : E) (a : A), (e, a) ∈d t -> P (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A
Forall_ctx P t <->
(forall (e : E) (a : A), (e, a) ∈d t -> P (e, a))
apply forall_ctx_iff.Qed.
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A
Forany_ctx P t <->
(exists (e : E) (a : A), (e, a) ∈d t /\ P (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A
Forany_ctx P t <->
(exists (e : E) (a : A), (e, a) ∈d t /\ P (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A
mapdReduce P t <->
(exists (e : E) (a : A), (e, a) ∈d t /\ P (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A
(mapReduce P ∘ toctxlist) t <->
(exists (e : E) (a : A), (e, a) ∈d t /\ P (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A
(mapReduce P ∘ toctxlist) t <->
(exists (e : E) (a : A),
(e, a) ∈d toctxlist t /\ P (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A
mapReduce P (toctxlist t) <->
(exists (e : E) (a : A),
(e, a) ∈d toctxlist t /\ P (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A
mapReduce P nil <->
(exists (e : E) (a : A), (e, a) ∈d nil /\ P (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A) IHrest: mapReduce P rest <->
(exists (e : E)
(a : A), (e, a) ∈d rest /\ P (e, a))
mapReduce P ((e, a) :: rest) <->
(exists (e0 : E)
(a0 : A), (e0, a0) ∈d ((e, a) :: rest) /\ P (e0, a0))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A
mapReduce P nil <->
(exists (e : E) (a : A), (e, a) ∈d nil /\ P (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A
(False -> exists (e : E) (a : A), False /\ P (e, a)) /\
((exists (e : E) (a : A), False /\ P (e, a)) -> False)
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A H2: exists (e : E) (a : A), False /\ P (e, a)
False
firstorder.
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A) IHrest: mapReduce P rest <->
(exists (e : E)
(a : A), (e, a) ∈d rest /\ P (e, a))
mapReduce P ((e, a) :: rest) <->
(exists (e0 : E) (a0 : A),
(e0, a0) ∈d ((e, a) :: rest) /\ P (e0, a0))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A) IHrest: mapReduce P rest <->
(exists (e : E)
(a : A), (e, a) ∈d rest /\ P (e, a))
P (e, a) ● mapReduce P rest <->
(exists (e0 : E) (a0 : A),
(e0, a0) ∈d ((e, a) :: rest) /\ P (e0, a0))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A)
P (e, a)
● (exists (e : E) (a : A), (e, a) ∈d rest /\ P (e, a)) <->
(exists (e0 : E) (a0 : A),
(e0, a0) ∈d ((e, a) :: rest) /\ P (e0, a0))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A)
P (e, a)
● (exists (e : E) (a : A),
toctxset rest (e, a) /\ P (e, a)) <->
(exists (e0 : E) (a0 : A),
toctxset ((e, a) :: rest) (e0, a0) /\ P (e0, a0))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A)
P (e, a)
● (exists (e : E) (a : A),
tosubset rest (e, a) /\ P (e, a)) <->
(exists (e0 : E) (a0 : A),
tosubset ((e, a) :: rest) (e0, a0) /\ P (e0, a0))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A)
P (e, a)
● (exists (e : E) (a : A),
tosubset rest (e, a) /\ P (e, a)) <->
(exists (e0 : E) (a0 : A),
({{(e, a)}} ∪ tosubset rest) (e0, a0) /\ P (e0, a0))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A)
P (e, a)
● (exists (e : E) (a : A), (e, a) ∈ rest /\ P (e, a)) <->
(exists (e0 : E) (a0 : A),
({{(e, a)}} ∪ tosubset rest) (e0, a0) /\ P (e0, a0))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A)
P (e, a)
● (exists (e : E) (a : A), (e, a) ∈ rest /\ P (e, a)) <->
(exists (e0 : E) (a0 : A),
((e0, a0) = (e, a) \/ (e0, a0) ∈ rest) /\
P (e0, a0))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A)
P (e, a)
● (exists (e : E) (a : A), (e, a) ∈ rest /\ P (e, a)) <->
(exists (e0 : E) (a0 : A),
(e0 = e /\ a0 = a \/ (e0, a0) ∈ rest) /\ P (e0, a0))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A)
P (e, a) \/
(exists (e : E) (a : A), (e, a) ∈ rest /\ P (e, a)) <->
(exists (e0 : E) (a0 : A),
(e0 = e /\ a0 = a \/ (e0, a0) ∈ rest) /\ P (e0, a0))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A)
P (e, a) \/
(exists (e : E) (a : A), (e, a) ∈ rest /\ P (e, a)) ->
exists (e0 : E) (a0 : A),
(e0 = e /\ a0 = a \/ (e0, a0) ∈ rest) /\ P (e0, a0)
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A)
(exists (e0 : E)
(a0 : A),
(e0 = e /\ a0 = a \/ (e0, a0) ∈ rest) /\ P (e0, a0)) ->
P (e, a) \/
(exists (e : E) (a : A), (e, a) ∈ rest /\ P (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A)
P (e, a) \/
(exists (e : E) (a : A), (e, a) ∈ rest /\ P (e, a)) ->
exists (e0 : E) (a0 : A),
(e0 = e /\ a0 = a \/ (e0, a0) ∈ rest) /\ P (e0, a0)
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A) hyp: P (e, a)
exists (e0 : E) (a0 : A),
(e0 = e /\ a0 = a \/ (e0, a0) ∈ rest) /\ P (e0, a0)
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A) hyp: exists (e : E) (a : A),
(e, a) ∈ rest /\ P (e, a)
exists (e0 : E)
(a0 : A),
(e0 = e /\ a0 = a \/ (e0, a0) ∈ rest) /\ P (e0, a0)
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A) hyp: P (e, a)
exists (e0 : E) (a0 : A),
(e0 = e /\ a0 = a \/ (e0, a0) ∈ rest) /\ P (e0, a0)
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A) hyp: P (e, a)
(e = e /\ a = a \/ (e, a) ∈ rest) /\ P (e, a)
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A) hyp: P (e, a)
e = e /\ a = a \/ (e, a) ∈ rest
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A) hyp: P (e, a)
P (e, a)
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A) hyp: P (e, a)
P (e, a)
assumption.
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A) hyp: exists (e : E) (a : A),
(e, a) ∈ rest /\ P (e, a)
exists (e0 : E) (a0 : A),
(e0 = e /\ a0 = a \/ (e0, a0) ∈ rest) /\ P (e0, a0)
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A) e': E a': A Hin: (e', a') ∈ rest HP: P (e', a')
exists (e0 : E) (a0 : A),
(e0 = e /\ a0 = a \/ (e0, a0) ∈ rest) /\ P (e0, a0)
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A) e': E a': A Hin: (e', a') ∈ rest HP: P (e', a')
(e' = e /\ a' = a \/ (e', a') ∈ rest) /\ P (e', a')
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A) e': E a': A Hin: (e', a') ∈ rest HP: P (e', a')
e' = e /\ a' = a \/ (e', a') ∈ rest
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A) e': E a': A Hin: (e', a') ∈ rest HP: P (e', a')
P (e', a')
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A) e': E a': A Hin: (e', a') ∈ rest HP: P (e', a')
P (e', a')
assumption.
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A)
(exists (e0 : E) (a0 : A),
(e0 = e /\ a0 = a \/ (e0, a0) ∈ rest) /\ P (e0, a0)) ->
P (e, a) \/
(exists (e : E) (a : A), (e, a) ∈ rest /\ P (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A)
(exists (e0 : E) (a0 : A),
(e0 = e /\ a0 = a \/ (e0, a0) ∈ rest) /\ P (e0, a0)) ->
P (e, a) \/
(exists (e : E) (a : A), (e, a) ∈ rest /\ P (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A) e': E a': A hyp1: e' = e /\ a' = a \/ (e', a') ∈ rest hyp2: P (e', a')
P (e, a) \/
(exists (e : E) (a : A), (e, a) ∈ rest /\ P (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A) e': E a': A hyp1: e' = e /\ a' = a hyp2: P (e', a')
P (e, a) \/
(exists (e : E) (a : A), (e, a) ∈ rest /\ P (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A) e': E a': A hyp1: (e', a') ∈ rest hyp2: P (e', a')
P (e, a) \/
(exists (e : E) (a : A), (e, a) ∈ rest /\ P (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A) e': E a': A hyp1: e' = e /\ a' = a hyp2: P (e', a')
P (e, a) \/
(exists (e : E) (a : A), (e, a) ∈ rest /\ P (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A) e': E a': A hyp1: e' = e /\ a' = a hyp2: P (e', a')
P (e, a)
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A) hyp1: e = e /\ a = a hyp2: P (e, a)
P (e, a)
assumption.
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A) e': E a': A hyp1: (e', a') ∈ rest hyp2: P (e', a')
P (e, a) \/
(exists (e : E) (a : A), (e, a) ∈ rest /\ P (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A) e': E a': A hyp1: (e', a') ∈ rest hyp2: P (e', a')
exists (e : E) (a : A), (e, a) ∈ rest /\ P (e, a)
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A e: E a: A rest: list (E * A) e': E a': A hyp1: (e', a') ∈ rest hyp2: P (e', a')
(e', a') ∈ rest /\ P (e', a')
easy.}Qed.
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A
Forany_ctx P t =
(exists (e : E) (a : A), (e, a) ∈d t /\ P (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A
Forany_ctx P t =
(exists (e : E) (a : A), (e, a) ∈d t /\ P (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop t: T A
Forany_ctx P t <->
(exists (e : E) (a : A), (e, a) ∈d t /\ P (e, a))
apply forany_ctx_iff.Qed.
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type
forall (e : E) (a : A) (e' : E) (a' : A)
(rest : env E A),
(e, a) ∈d ((e', a') :: rest) =
(e = e' /\ a = a' \/ (e, a) ∈d rest)
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type
forall (e : E) (a : A) (e' : E) (a' : A)
(rest : env E A),
(e, a) ∈d ((e', a') :: rest) =
(e = e' /\ a = a' \/ (e, a) ∈d rest)
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type e: E a: A e': E a': A rest: env E A
(e, a) ∈d ((e', a') :: rest) =
(e = e' /\ a = a' \/ (e, a) ∈d rest)
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type e: E a: A e': E a': A rest: env E A
toctxset ((e', a') :: rest) (e, a) =
(e = e' /\ a = a' \/ toctxset rest (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type e: E a: A e': E a': A rest: env E A
mapdReduce ret ((e', a') :: rest) (e, a) =
(e = e' /\ a = a' \/ mapdReduce ret rest (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type e: E a: A e': E a': A rest: env E A
mapdt ret ((e', a') :: rest) (e, a) =
(e = e' /\ a = a' \/ mapdt ret rest (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type e: E a: A e': E a': A rest: env E A
((pure cons ● map (pair e') (ret (e', a')))
● mapdt ret rest) (e, a) =
(e = e' /\ a = a' \/ mapdt ret rest (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type e: E a: A e': E a': A rest: env E A
((pure cons ● map (pair e') (ret (e', a')))
● mapdt ret rest) (e, a) =
(e = e' /\ a = a' \/ mapdt ret rest (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type e: E a: A e': E a': A rest: env E A
((Ƶ ● map (pair e') (ret (e', a'))) ● mapdt ret rest)
(e, a) = (e = e' /\ a = a' \/ mapdt ret rest (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type e: E a: A e': E a': A rest: env E A
(∅ ● map (pair e') (ret (e', a')) ∪ mapdt ret rest)
(e, a) = (e = e' /\ a = a' \/ mapdt ret rest (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type e: E a: A e': E a': A rest: env E A
(∅ ∪ map (pair e') (ret (e', a')) ∪ mapdt ret rest)
(e, a) = (e = e' /\ a = a' \/ mapdt ret rest (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type e: E a: A e': E a': A rest: env E A
(∅ ∪ id (ret (e', a')) ∪ mapdt ret rest) (e, a) =
(e = e' /\ a = a' \/ mapdt ret rest (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type e: E a: A e': E a': A rest: env E A
((False \/ id (ret (e', a')) (e, a)) \/
mapdt ret rest (e, a)) =
(e = e' /\ a = a' \/ mapdt ret rest (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type e: E a: A e': E a': A rest: env E A
((False \/ (e', a') = (e, a)) \/
mapdt (funab : E * A => a = b) rest (e, a)) =
(e = e' /\ a = a' \/
mapdt (funab : E * A => a = b) rest (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type e: E a: A e': E a': A rest: env E A
(False \/ (e', a') = (e, a)) \/
mapdt (funab : E * A => a = b) rest (e, a) ->
e = e' /\ a = a' \/
mapdt (funab : E * A => a = b) rest (e, a)
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type e: E a: A e': E a': A rest: env E A
e = e' /\ a = a' \/
mapdt (funab : E * A => a = b) rest (e, a) ->
(False \/ (e', a') = (e, a)) \/
mapdt (funab : E * A => a = b) rest (e, a)
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type e: E a: A e': E a': A rest: env E A
(False \/ (e', a') = (e, a)) \/
mapdt (funab : E * A => a = b) rest (e, a) ->
e = e' /\ a = a' \/
mapdt (funab : E * A => a = b) rest (e, a)
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type e: E a: A e': E a': A rest: env E A
(False \/ e' = e /\ a' = a) \/
mapdt (funab : E * A => a = b) rest (e, a) ->
e = e' /\ a = a' \/
mapdt (funab : E * A => a = b) rest (e, a)
firstorder.
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type e: E a: A e': E a': A rest: env E A
e = e' /\ a = a' \/
mapdt (funab : E * A => a = b) rest (e, a) ->
(False \/ (e', a') = (e, a)) \/
mapdt (funab : E * A => a = b) rest (e, a)
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type e: E a: A e': E a': A rest: env E A
e = e' /\ a = a' \/
mapdt (funab : E * A => a = b) rest (e, a) ->
(False \/ e' = e /\ a' = a) \/
mapdt (funab : E * A => a = b) rest (e, a)
firstorder.Qed.(** ** Decidability of <<Forall_ctx>> and <<Forany_ctx>> *)(**********************************************************************)
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P
decidable_pred (Forall_ctx P)
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P
decidable_pred (Forall_ctx P)
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P
foralla : T A, decidable (Forall_ctx P a)
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A
decidable (Forall_ctx P t)
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A
decidable (mapdReduce P t)
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A
decidable ((mapReduce P ∘ toctxlist) t)
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A
decidable (Forall P (toctxlist t))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A
decidable_pred P
assumption.Qed.
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P
decidable_pred (Forany_ctx P)
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P
decidable_pred (Forany_ctx P)
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P
foralla : T A, decidable (Forany_ctx P a)
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A
decidable (Forany_ctx P t)
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A
decidable (mapdReduce P t)
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A
decidable ((mapReduce P ∘ toctxlist) t)
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A
decidable (Forany P (toctxlist t))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A
decidable_pred P
assumption.Qed.
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A
decidable
(forall (e : E) (a : A), (e, a) ∈d t -> P (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A
decidable
(forall (e : E) (a : A), (e, a) ∈d t -> P (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A
decidable (Forall_ctx P t)
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A
decidable_pred P
assumption.Qed.
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A
decidable
(exists (e : E) (a : A), (e, a) ∈d t /\ P (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A
decidable
(exists (e : E) (a : A), (e, a) ∈d t /\ P (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A
decidable (Forany_ctx P t)
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A
decidable_pred P
assumption.Qed.
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A
~ Forall_ctx P t -> Forany_ctx (not ∘ P) t
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A
~ Forall_ctx P t -> Forany_ctx (not ∘ P) t
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A
~ mapdReduce P t -> mapdReduce (not ∘ P) t
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A
~ (mapReduce P ∘ toctxlist) t ->
mapdReduce (not ∘ P) t
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A
~ (mapReduce P ∘ toctxlist) t ->
(mapReduce (not ∘ P) ∘ toctxlist) t
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A
~ mapReduce P nil -> mapReduce (not ○ P) nil
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A a: E * A e: list (E * A) IHe: ~ mapReduce P e -> mapReduce (not ○ P) e
~ mapReduce P (a :: e) -> mapReduce (not ○ P) (a :: e)
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A
~ mapReduce P nil -> mapReduce (not ○ P) nil
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A
(True -> False) -> False
firstorder.
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A a: E * A e: list (E * A) IHe: ~ mapReduce P e -> mapReduce (not ○ P) e
~ mapReduce P (a :: e) -> mapReduce (not ○ P) (a :: e)
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A a: E * A e: list (E * A) IHe: ~ mapReduce_list P e ->
mapReduce_list (not ○ P) e
~ mapReduce_list P (a :: e) ->
mapReduce_list (not ○ P) (a :: e)
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A a: E * A e: list (E * A) IHe: ~ mapReduce_list P e ->
mapReduce_list (not ○ P) e
~ P a ● mapReduce_list P e ->
(~ P a) ● mapReduce_list (not ○ P) e
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A a: E * A e: list (E * A) IHe: ~ mapReduce_list P e ->
mapReduce_list (not ○ P) e
~ (P a /\ mapReduce_list P e) ->
(~ P a) ● mapReduce_list (not ○ P) e
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A a: E * A e: list (E * A) IHe: ~ mapReduce_list P e ->
mapReduce_list (not ○ P) e
~ (P a /\ mapReduce_list P e) ->
~ P a \/ mapReduce_list (not ○ P) e
firstorder.Qed.
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A
~ Forall_ctx P t <-> Forany_ctx (not ∘ P) t
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A
~ Forall_ctx P t <-> Forany_ctx (not ∘ P) t
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A
~ Forall_ctx P t <->
Forany_ctx (funa : E * A => P a -> False) t
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A YesAll: Forall_ctx P t
~ Forall_ctx P t <->
Forany_ctx (funa : E * A => P a -> False) t
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A NotAll: ~ Forall_ctx P t
~ Forall_ctx P t <->
Forany_ctx (funa : E * A => P a -> False) t
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A YesAll: Forall_ctx P t
~ Forall_ctx P t <->
Forany_ctx (funa : E * A => P a -> False) t
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A YesAll: Forall_ctx P t
~ Forall_ctx P t ->
Forany_ctx (funa : E * A => P a -> False) t
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A YesAll: Forall_ctx P t
Forany_ctx (funa : E * A => P a -> False) t ->
~ Forall_ctx P t
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A YesAll: Forall_ctx P t
~ Forall_ctx P t ->
Forany_ctx (funa : E * A => P a -> False) t
contradiction.
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A YesAll: Forall_ctx P t
Forany_ctx (funa : E * A => P a -> False) t ->
~ Forall_ctx P t
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A YesAll: forall (e : E) (a : A),
(e, a) ∈d t -> P (e, a)
(exists (e : E) (a : A),
(e, a) ∈d t /\ (P (e, a) -> False)) ->
~ (forall (e : E) (a : A), (e, a) ∈d t -> P (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A YesAll: forall (e : E) (a : A),
(e, a) ∈d t -> P (e, a) e: E a: A Hin: (e, a) ∈d t HP: P (e, a) -> False
False
intuition.
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A NotAll: ~ Forall_ctx P t
~ Forall_ctx P t <->
Forany_ctx (funa : E * A => P a -> False) t
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A NotAll: ~ Forall_ctx P t
~ Forall_ctx P t ->
Forany_ctx (funa : E * A => P a -> False) t
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A NotAll: ~ Forall_ctx P t
Forany_ctx (funa : E * A => P a -> False) t ->
~ Forall_ctx P t
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A NotAll: ~ Forall_ctx P t
~ Forall_ctx P t ->
Forany_ctx (funa : E * A => P a -> False) t
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A NotAll: ~ Forall_ctx P t
decidable_pred P
assumption.
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A NotAll: ~ Forall_ctx P t
Forany_ctx (funa : E * A => P a -> False) t ->
~ Forall_ctx P t
easy.Qed.
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A
~ Forall_ctx P t <->
(exists (e : E) (a : A), (e, a) ∈d t /\ ~ P (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A
~ Forall_ctx P t <->
(exists (e : E) (a : A), (e, a) ∈d t /\ ~ P (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A
Forany_ctx (not ∘ P) t <->
(exists (e : E) (a : A), (e, a) ∈d t /\ ~ P (e, a))
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Dec: decidable_pred P t: T A
(exists (e : E) (a : A),
(e, a) ∈d t /\ (not ∘ P) (e, a)) <->
(exists (e : E) (a : A), (e, a) ∈d t /\ ~ P (e, a))
reflexivity.Qed.(** ** Booleans *)(**********************************************************************)DefinitionForall_ctx_b `(P: E * A -> bool): T A -> bool :=
@mapdReduce T E _ bool Monoid_op_bool_and Monoid_unit_bool_true A P.
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Q: E * A -> bool Qspec: forallp : E * A, Q p = true <-> P p t: T A
Forall_ctx P t <-> Forall_ctx_b Q t = true
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Q: E * A -> bool Qspec: forallp : E * A, Q p = true <-> P p t: T A
Forall_ctx P t <-> Forall_ctx_b Q t = true
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Q: E * A -> bool Qspec: forallp : E * A, Q p = true <-> P p t: T A
mapdReduce P t <-> Forall_ctx_b Q t = true
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Q: E * A -> bool Qspec: forallp : E * A, Q p = true <-> P p t: T A
mapdReduce P t <-> mapdReduce Q t = true
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Q: E * A -> bool Qspec: forallp : E * A, Q p = true <-> P p t: T A
(mapReduce P ∘ toctxlist) t <-> mapdReduce Q t = true
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Q: E * A -> bool Qspec: forallp : E * A, Q p = true <-> P p t: T A
(mapReduce P ∘ toctxlist) t <->
(mapReduce Q ∘ toctxlist) t = true
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Q: E * A -> bool Qspec: forallp : E * A, Q p = true <-> P p t: T A
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Q: E * A -> bool Qspec: forallp : E * A, Q p = true <-> P p t: T A
mapReduce P nil <-> mapReduce Q nil = true
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Q: E * A -> bool Qspec: forallp : E * A, Q p = true <-> P p t: T A a: E * A e: list (E * A) IHe: mapReduce P e <-> mapReduce Q e = true
mapReduce P (a :: e) <-> mapReduce Q (a :: e) = true
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Q: E * A -> bool Qspec: forallp : E * A, Q p = true <-> P p t: T A
mapReduce P nil <-> mapReduce Q nil = true
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Q: E * A -> bool Qspec: forallp : E * A, Q p = true <-> P p t: T A
(True -> true = true) /\ (true = true -> True)
easy.
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Q: E * A -> bool Qspec: forallp : E * A, Q p = true <-> P p t: T A a: E * A e: list (E * A) IHe: mapReduce P e <-> mapReduce Q e = true
mapReduce P (a :: e) <-> mapReduce Q (a :: e) = true
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Q: E * A -> bool Qspec: forallp : E * A, Q p = true <-> P p t: T A a: E * A e: list (E * A) IHe: mapReduce_list P e <-> mapReduce_list Q e = true
mapReduce_list P (a :: e) <->
mapReduce_list Q (a :: e) = true
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Q: E * A -> bool Qspec: forallp : E * A, Q p = true <-> P p t: T A a: E * A e: list (E * A) IHe: mapReduce_list P e <-> mapReduce_list Q e = true
P a ● mapReduce_list P e <->
Q a ● mapReduce_list Q e = true
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Q: E * A -> bool Qspec: forallp : E * A, Q p = true <-> P p t: T A a: E * A e: list (E * A) IHe: mapReduce_list P e <-> mapReduce_list Q e = true
P a ● mapReduce_list P e <->
Q a ● mapReduce_list Q e = true
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Q: E * A -> bool Qspec: forallp : E * A, Q p = true <-> P p t: T A a: E * A e: list (E * A) IHe: mapReduce_list P e <-> mapReduce_list Q e = true
P a /\ mapReduce_list P e <->
Q a ● mapReduce_list Q e = true
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Q: E * A -> bool Qspec: forallp : E * A, Q p = true <-> P p t: T A a: E * A e: list (E * A) IHe: mapReduce_list P e <-> mapReduce_list Q e = true
P a /\ mapReduce_list P e <->
(Q a && mapReduce_list Q e)%bool = true
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Q: E * A -> bool Qspec: forallp : E * A, Q p = true <-> P p t: T A a: E * A e: list (E * A) IHe: mapReduce_list P e <-> mapReduce_list Q e = true
P a /\ mapReduce_list P e ->
(Q a && mapReduce_list Q e)%bool = true
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Q: E * A -> bool Qspec: forallp : E * A, Q p = true <-> P p t: T A a: E * A e: list (E * A) IHe: mapReduce_list P e <-> mapReduce_list Q e = true
(Q a && mapReduce_list Q e)%bool = true ->
P a /\ mapReduce_list P e
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Q: E * A -> bool Qspec: forallp : E * A, Q p = true <-> P p t: T A a: E * A e: list (E * A) IHe: mapReduce_list P e <-> mapReduce_list Q e = true
P a /\ mapReduce_list P e ->
(Q a && mapReduce_list Q e)%bool = true
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Q: E * A -> bool Qspec: forallp : E * A, Q p = true <-> P p t: T A a: E * A e: list (E * A)
P a /\ mapReduce_list Q e = true ->
(Q a && mapReduce_list Q e)%bool = true
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Q: E * A -> bool Qspec: forallp : E * A, Q p = true <-> P p t: T A a: E * A e: list (E * A)
Q a = true /\ mapReduce_list Q e = true ->
(Q a && mapReduce_list Q e)%bool = true
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Q: E * A -> bool Qspec: forallp : E * A, Q p = true <-> P p t: T A a: E * A e: list (E * A) X: Q a = true Y: mapReduce_list Q e = true
(true && true)%bool = true
reflexivity.
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Q: E * A -> bool Qspec: forallp : E * A, Q p = true <-> P p t: T A a: E * A e: list (E * A) IHe: mapReduce_list P e <-> mapReduce_list Q e = true
(Q a && mapReduce_list Q e)%bool = true ->
P a /\ mapReduce_list P e
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Q: E * A -> bool Qspec: forallp : E * A, Q p = true <-> P p t: T A a: E * A e: list (E * A) IHe: mapReduce_list P e <-> mapReduce_list Q e = true Hyp: (Q a && mapReduce_list Q e)%bool = true
P a /\ mapReduce_list P e
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Q: E * A -> bool Qspec: forallp : E * A, Q p = true <-> P p t: T A a: E * A e: list (E * A) IHe: mapReduce_list P e <-> mapReduce_list Q e = true Hyp: Q a = true /\ mapReduce_list Q e = true
P a /\ mapReduce_list P e
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Q: E * A -> bool Qspec: forallp : E * A, Q p = true <-> P p t: T A a: E * A e: list (E * A) IHe: mapReduce_list P e <-> mapReduce_list Q e = true Hyp: Q a = true /\ mapReduce_list Q e = true
P a /\ mapReduce_list Q e = true
E: Type T: Type -> Type H: Mapdt E T H0: DecoratedTraversableFunctor E T H1: ToCtxset E T Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt E T A: Type P: E * A -> Prop Q: E * A -> bool Qspec: forallp : E * A, Q p = true <-> P p t: T A a: E * A e: list (E * A) IHe: mapReduce_list P e <-> mapReduce_list Q e = true Hyp: Q a = true /\ mapReduce_list Q e = true