Step
*
1
of Lemma
filter-fpf-vals
1. A : Type
2. eq : EqDecider(A)
3. B : A ─→ Type
4. P : A ─→ 𝔹
5. Q : A ─→ 𝔹
6. f : x:A fp-> B[x]
⊢ filter(λpL.Q[fst(pL)];fpf-vals(eq;P;f)) ~ fpf-vals(eq;λa.((P a) ∧b (Q a));f)
BY
{ (Unfold `fpf-vals` 0 THEN (D (-1)) THEN Unfold `let` 0 THEN Reduce 0) }
1
1. A : Type
2. eq : EqDecider(A)
3. B : A ─→ Type
4. P : A ─→ 𝔹
5. Q : A ─→ 𝔹
6. d : A List
7. f1 : x:{x:A| (x ∈ d)}  ─→ B[x]
⊢ filter(λpL.Q[fst(pL)];zip(filter(P;remove-repeats(eq;d));map(f1;filter(P;remove-repeats(eq;d))))) 
~ zip(filter(λa.((P a) ∧b (Q a));remove-repeats(eq;d));map(f1;filter(λa.((P a) ∧b (Q a));remove-repeats(eq;d))))
Latex:
1.  A  :  Type
2.  eq  :  EqDecider(A)
3.  B  :  A  {}\mrightarrow{}  Type
4.  P  :  A  {}\mrightarrow{}  \mBbbB{}
5.  Q  :  A  {}\mrightarrow{}  \mBbbB{}
6.  f  :  x:A  fp->  B[x]
\mvdash{}  filter(\mlambda{}pL.Q[fst(pL)];fpf-vals(eq;P;f))  \msim{}  fpf-vals(eq;\mlambda{}a.((P  a)  \mwedge{}\msubb{}  (Q  a));f)
By
(Unfold  `fpf-vals`  0  THEN  (D  (-1))  THEN  Unfold  `let`  0  THEN  Reduce  0)
Home
Index