Step
*
2
2
1
1
2
2
of Lemma
select-remove-first
1. T : Type
2. u : T
3. v : T List
4. P : {x:T| (x ∈ [u / v])}  ⟶ 𝔹
5. ¬↑(P u)
6. ff ∈ 𝔹
7. P ∈ {x:T| (x ∈ v)}  ⟶ 𝔹
8. ∀i:ℕ||remove-first(P;v)||
     (remove-first(P;v)[i] ~ v[i] supposing ∀j:ℕi + 1. (¬↑(P v[j]))
     ∧ remove-first(P;v)[i] ~ v[i + 1] supposing ∃j:ℕi + 1. (↑(P v[j])))
9. i : ℕ||remove-first(P;v)|| + 1
10. ¬(i = 0 ∈ ℤ)
11. remove-first(P;v)[i - 1] ~ v[(i - 1) + 1] supposing ∃j:ℕ(i - 1) + 1. (↑(P v[j]))
12. remove-first(P;v)[i - 1] ~ v[i - 1] supposing ∀j:ℕ(i - 1) + 1. (¬↑(P v[j]))
13. ∀j:ℕi + 1. (¬↑(P [u / v][j]))
⊢ remove-first(P;v)[i - 1] ~ v[i - 1]
BY
{ (TACTIC:(Assert ||remove-first(P;v)|| ≤ ||v|| BY
                 (BLemma `length-remove-first-le` THEN Auto))
   THEN BackThruSomeHyp
   THEN Auto) }
1
1. T : Type
2. u : T
3. v : T List
4. P : {x:T| (x ∈ [u / v])}  ⟶ 𝔹
5. ¬↑(P u)
6. ff ∈ 𝔹
7. P ∈ {x:T| (x ∈ v)}  ⟶ 𝔹
8. ∀i:ℕ||remove-first(P;v)||
     (remove-first(P;v)[i] ~ v[i] supposing ∀j:ℕi + 1. (¬↑(P v[j]))
     ∧ remove-first(P;v)[i] ~ v[i + 1] supposing ∃j:ℕi + 1. (↑(P v[j])))
9. i : ℕ||remove-first(P;v)|| + 1
10. ¬(i = 0 ∈ ℤ)
11. remove-first(P;v)[i - 1] ~ v[(i - 1) + 1] supposing ∃j:ℕ(i - 1) + 1. (↑(P v[j]))
12. remove-first(P;v)[i - 1] ~ v[i - 1] supposing ∀j:ℕ(i - 1) + 1. (¬↑(P v[j]))
13. ∀j:ℕi + 1. (¬↑(P [u / v][j]))
14. ||remove-first(P;v)|| ≤ ||v||
15. j : ℕ(i - 1) + 1
⊢ ¬↑(P v[j])
Latex:
Latex:
1.  T  :  Type
2.  u  :  T
3.  v  :  T  List
4.  P  :  \{x:T|  (x  \mmember{}  [u  /  v])\}    {}\mrightarrow{}  \mBbbB{}
5.  \mneg{}\muparrow{}(P  u)
6.  ff  \mmember{}  \mBbbB{}
7.  P  \mmember{}  \{x:T|  (x  \mmember{}  v)\}    {}\mrightarrow{}  \mBbbB{}
8.  \mforall{}i:\mBbbN{}||remove-first(P;v)||
          (remove-first(P;v)[i]  \msim{}  v[i]  supposing  \mforall{}j:\mBbbN{}i  +  1.  (\mneg{}\muparrow{}(P  v[j]))
          \mwedge{}  remove-first(P;v)[i]  \msim{}  v[i  +  1]  supposing  \mexists{}j:\mBbbN{}i  +  1.  (\muparrow{}(P  v[j])))
9.  i  :  \mBbbN{}||remove-first(P;v)||  +  1
10.  \mneg{}(i  =  0)
11.  remove-first(P;v)[i  -  1]  \msim{}  v[(i  -  1)  +  1]  supposing  \mexists{}j:\mBbbN{}(i  -  1)  +  1.  (\muparrow{}(P  v[j]))
12.  remove-first(P;v)[i  -  1]  \msim{}  v[i  -  1]  supposing  \mforall{}j:\mBbbN{}(i  -  1)  +  1.  (\mneg{}\muparrow{}(P  v[j]))
13.  \mforall{}j:\mBbbN{}i  +  1.  (\mneg{}\muparrow{}(P  [u  /  v][j]))
\mvdash{}  remove-first(P;v)[i  -  1]  \msim{}  v[i  -  1]
By
Latex:
(TACTIC:(Assert  ||remove-first(P;v)||  \mleq{}  ||v||  BY
                              (BLemma  `length-remove-first-le`  THEN  Auto))
  THEN  BackThruSomeHyp
  THEN  Auto)
Home
Index