Step
*
1
of Lemma
filter-equal
1. T : Type
2. P : T ⟶ 𝔹
3. u : T
4. v : T List
5. ∀[L2:T List]
     (filter(P;v) = filter(P;L2) ∈ (T List)) supposing 
        ((∀i:ℕ||v||. ((v[i] = L2[i] ∈ T) ∨ ((¬↑(P v[i])) ∧ (¬↑(P L2[i]))))) and 
        (||v|| = ||L2|| ∈ ℤ))
6. u1 : T
7. v1 : T List
8. (||v|| + 1) = (||v1|| + 1) ∈ ℤ
9. ∀i:ℕ||v|| + 1. (([u / v][i] = [u1 / v1][i] ∈ T) ∨ ((¬↑(P [u / v][i])) ∧ (¬↑(P [u1 / v1][i]))))
10. ||v|| = ||v1|| ∈ ℤ
11. ↑(P u)
12. ↑(P u1)
13. u = u1 ∈ T
⊢ [u / filter(P;v)] = [u1 / filter(P;v1)] ∈ (T List)
BY
{ ((EqCD THEN Auto)
   THEN (BackThruSomeHyp THEN Try (Trivial))
   THEN (D 0 THENA Auto)
   THEN (InstHyp [⌜i + 1⌝] 9⋅ THENA Auto)
   THEN (RWO "select-cons" (-1) THENA Auto)
   THEN (Subst' (i + 1) - 1 ~ i -1 THENA Auto)
   THEN (Subst' i + 1 ≤z 0 ~ ff -1 THENA Auto)
   THEN Reduce -1
   THEN Trivial) }
Latex:
Latex:
1.  T  :  Type
2.  P  :  T  {}\mrightarrow{}  \mBbbB{}
3.  u  :  T
4.  v  :  T  List
5.  \mforall{}[L2:T  List]
          (filter(P;v)  =  filter(P;L2))  supposing 
                ((\mforall{}i:\mBbbN{}||v||.  ((v[i]  =  L2[i])  \mvee{}  ((\mneg{}\muparrow{}(P  v[i]))  \mwedge{}  (\mneg{}\muparrow{}(P  L2[i])))))  and 
                (||v||  =  ||L2||))
6.  u1  :  T
7.  v1  :  T  List
8.  (||v||  +  1)  =  (||v1||  +  1)
9.  \mforall{}i:\mBbbN{}||v||  +  1.  (([u  /  v][i]  =  [u1  /  v1][i])  \mvee{}  ((\mneg{}\muparrow{}(P  [u  /  v][i]))  \mwedge{}  (\mneg{}\muparrow{}(P  [u1  /  v1][i]))))
10.  ||v||  =  ||v1||
11.  \muparrow{}(P  u)
12.  \muparrow{}(P  u1)
13.  u  =  u1
\mvdash{}  [u  /  filter(P;v)]  =  [u1  /  filter(P;v1)]
By
Latex:
((EqCD  THEN  Auto)
  THEN  (BackThruSomeHyp  THEN  Try  (Trivial))
  THEN  (D  0  THENA  Auto)
  THEN  (InstHyp  [\mkleeneopen{}i  +  1\mkleeneclose{}]  9\mcdot{}  THENA  Auto)
  THEN  (RWO  "select-cons"  (-1)  THENA  Auto)
  THEN  (Subst'  (i  +  1)  -  1  \msim{}  i  -1  THENA  Auto)
  THEN  (Subst'  i  +  1  \mleq{}z  0  \msim{}  ff  -1  THENA  Auto)
  THEN  Reduce  -1
  THEN  Trivial)
Home
Index