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 Variable E 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 *)
(**********************************************************************)
Section mapdt_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. End mapdt_constant_applicatives. (** * Derived Operation <<mapdReduce>> *) (**********************************************************************) Definition mapdReduce {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. Section mapdt_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

forall 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

forall 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

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

mapdReduce g ∘ mapdt (f ∘ extract) = 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 ∘ mapd (f ∘ extract) = 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
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

mapdReduce g ∘ mapd (f ∘ extract) = 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 ∘ cobind (f ∘ extract)) = mapdReduce (g ∘ map f)
reflexivity.
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: forall a1 a2 : 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: forall a1 a2 : 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: forall a1 a2 : M1, ϕ (a1 ● a2) = ϕ a1 ● ϕ a2

const ϕ (T False) ∘ mapdt f = mapdReduce (const ϕ (T False) ∘ 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: forall a1 a2 : M1, ϕ (a1 ● a2) = ϕ a1 ● ϕ a2

mapdt (const ϕ False ∘ f) = mapdReduce (const ϕ (T False) ∘ f)
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. End mapdt_mapdReduce. (** * The <<toctxlist>> operation *) (**********************************************************************) #[local] Instance ToCtxlist_Mapdt `{Mapdt E T}: ToCtxlist E T := fun A => mapdReduce (ret (T := list)). Class Compat_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] Instance Compat_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

forall 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

forall 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 = 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. Section mapdt_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

forall 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

forall 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

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

forall 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

forall 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

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

forall 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

forall 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

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

mapdt ret = mapdt ret
reflexivity. Qed. (** ** Naturality *) (********************************************************************)
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 (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

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 (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 ∘ 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)

mapdReduce (map (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)

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)

mapdReduce (ret ∘ map f) = mapdReduce (ret ∘ 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 (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

forall (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

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

mapdReduce (ret ∘ cobind f) = mapdReduce (ret ∘ 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
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 (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

forall (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

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

mapdReduce (ret ∘ map f) = mapdReduce (ret ∘ map 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
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 (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

forall (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

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

mapdReduce (ret ∘ extract) ∘ 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

mapdReduce (ret ∘ extract ∘ cobind 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

mapdReduce (ret ∘ (extract ∘ cobind 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

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 (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

forall (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 = 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)

mapdReduce (mapd f ∘ 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)

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 (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

forall (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 ∘ 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)

mapdReduce (map f ∘ 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)

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
now rewrite (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

forall 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

forall 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

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

mapdReduce (ret ∘ extract) = 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

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

mapdReduce (ret ∘ extract) = mapdReduce (map extract ∘ 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 ∘ extract) = mapdReduce (ret ∘ map extract)
reflexivity. Qed. End mapdt_toctxlist. (** * <<toctxset>> and <<∈d>> *) (**********************************************************************) #[local] Instance ToCtxset_Mapdt `{Mapdt E T}: ToCtxset E T := fun A => mapdReduce (ret (T := subset) (A := E * A)). Class Compat_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] Instance Compat_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

forall 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

forall 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 = 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

(fun A : 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

(fun A : Type => mapReduce ret) = (fun A : 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

(fun A : Type => mapReduce ret) = (fun A : 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

mapdReduce (ret ∘ extract) = mapdReduce (map extract ∘ 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) = mapdReduce (ret ∘ map extract)
reflexivity. Qed. Section mapdt_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

forall 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

forall 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

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

forall 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

forall 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

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

forall 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

forall 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

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 (fun a : 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

forall 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

forall 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

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

forall 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

forall 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 ∘ 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

forall 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

forall 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

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

forall 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

forall 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

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

forall 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

forall 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 = 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 (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

forall (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

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

mapdReduce (ret ∘ cobind f) = mapdReduce (ret ∘ 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
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 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

forall (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

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

mapdReduce (ret ∘ map f) = mapdReduce (ret ∘ map 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
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 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

forall (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

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

mapdReduce (ret ∘ extract) ∘ 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

mapdReduce (ret ∘ extract ∘ cobind 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

mapdReduce (ret ∘ (extract ∘ cobind 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

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

DecoratedHom E (prod E) (ctxset E) (@ret subset Return_subset ○ prod 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

DecoratedHom E (prod E) (ctxset E) (@ret subset Return_subset ○ prod 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

forall (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

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 (fun b : E * A => (e, a) = b) = (fun b : 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) => exists a0 : A, (e, a) = (e0, a0) /\ f (e0, a0) = b) = (fun b : 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) => exists a0 : A, (e, a) = (e0, a0) /\ f (e0, a0) = b) = (fun b : 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

(exists a0 : 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

(exists a0 : 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

(exists a0 : 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) -> exists a0 : 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

(exists a0 : 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) -> exists a0 : 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)

exists a0 : 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
now inversion 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 (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

forall (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

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

mapdReduce (ret ∘ cobind 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 (ret ∘ 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 ((@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 (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

forall (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 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

mapdReduce (ret ∘ map f) = map (map 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: A -> B

mapdReduce (ret ∘ map f) = mapdReduce (map (map 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: A -> B

mapdReduce (ret ∘ map f) = mapdReduce (ret ∘ map (map f))
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 (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 = 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

forall 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

forall 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

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

mapdReduce (ret ∘ extract) = 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

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

mapdReduce (ret ∘ extract) = mapdReduce (map extract ∘ 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

mapdReduce (ret ∘ extract) = mapdReduce (ret ∘ map extract)
reflexivity. Qed. (** ** Characterizing <<∈d>> *) (********************************************************************)
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) (f g : 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) (f g : 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. End mapdt_toctxset. (** * Quantification with Context: <<Forall_ctx>> and <<Forany_ctx>> *) (**********************************************************************) Section quantification. Context `{DecoratedTraversableFunctor E T} `{ToCtxset E T} `{! Compat_ToCtxset_Mapdt E T}. Definition Forall_ctx `(P: E * A -> Prop): T A -> Prop := @mapdReduce T E _ Prop Monoid_op_and Monoid_unit_true A P. Definition Forany_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 (fun a b : E * A => a = b) rest (e, a)) = (e = e' /\ a = a' \/ mapdt (fun a b : 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 (fun a b : E * A => a = b) rest (e, a) -> e = e' /\ a = a' \/ mapdt (fun a b : 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 (fun a b : E * A => a = b) rest (e, a) -> (False \/ (e', a') = (e, a)) \/ mapdt (fun a b : 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 (fun a b : E * A => a = b) rest (e, a) -> e = e' /\ a = a' \/ mapdt (fun a b : 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 (fun a b : E * A => a = b) rest (e, a) -> e = e' /\ a = a' \/ mapdt (fun a b : 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 (fun a b : E * A => a = b) rest (e, a) -> (False \/ (e', a') = (e, a)) \/ mapdt (fun a b : 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 (fun a b : E * A => a = b) rest (e, a) -> (False \/ e' = e /\ a' = a) \/ mapdt (fun a b : 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

forall a : 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

forall a : 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

~ 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

~ 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 (fun a : 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 (fun a : 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 (fun a : 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 (fun a : 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 (fun a : 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 (fun a : 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 (fun a : 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 (fun a : 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 (fun a : 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 (fun a : 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 (fun a : 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 (fun a : 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 (fun a : 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 *) (**********************************************************************) Definition Forall_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: forall p : 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: forall p : 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: forall p : 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: forall p : 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: forall p : 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: forall p : 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: forall p : 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: forall p : 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: forall p : 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: forall p : 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: forall p : 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: forall p : 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: forall p : 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: forall p : 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: forall p : 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: forall p : 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: forall p : 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: forall p : 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: forall p : 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: forall p : 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: forall p : 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: forall p : 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: forall p : 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: forall p : 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: forall p : 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: forall p : 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: forall p : 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: forall p : 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

Q a = true /\ mapReduce_list Q e = true
assumption. Qed. End quantification.