Step
*
3
2
1
of Lemma
first-success-is-inl
1. T : Type
2. A : T ⟶ Type
3. f : x:T ⟶ (A[x]?)
4. u : T
5. v : T List
6. y : Unit
7. (f u) = (inr y ) ∈ (A[u]?)
8. y1 : 0 = 0 ∈ ℤ
9. first-success(f;v) = (inr Ax ) ∈ (i:ℕ||v|| × A[v[i]]?)
10. ∀[j:ℕ||v||]. ∀[a:A[v[j]]].
      ((inr Ax ) = (inl <j, a>) ∈ (i:ℕ||v|| × A[v[i]]?)
      
⇐⇒ j < ||v|| ∧ ((f v[j]) = (inl a) ∈ (A[v[j]]?)) ∧ (∀x∈firstn(j;v).↑isr(f x)))
11. j : ℕ||v|| + 1
12. a : A[[u / v][j]]
13. ↑isr(first-success(f;v))
14. (∀a∈v.↑isr(f a))
15. j < ||v|| + 1
16. (f [u / v][j]) = (inl a) ∈ (A[[u / v][j]]?)
17. (∀x∈firstn(j;[u / v]).↑isr(f x))
⊢ (inr Ax ) = (inl <j, a>) ∈ (i:ℕ||v|| + 1 × A[[u / v][i]]?)
BY
{ ((RWO "select-cons" (-2) THENA Auto) THEN SplitOnHypITE -2  THEN Auto) }
1
.....falsecase..... 
1. T : Type
2. A : T ⟶ Type
3. f : x:T ⟶ (A[x]?)
4. u : T
5. v : T List
6. y : Unit
7. (f u) = (inr y ) ∈ (A[u]?)
8. y1 : 0 = 0 ∈ ℤ
9. first-success(f;v) = (inr Ax ) ∈ (i:ℕ||v|| × A[v[i]]?)
10. ∀[j:ℕ||v||]. ∀[a:A[v[j]]].
      ((inr Ax ) = (inl <j, a>) ∈ (i:ℕ||v|| × A[v[i]]?)
      
⇐⇒ j < ||v|| ∧ ((f v[j]) = (inl a) ∈ (A[v[j]]?)) ∧ (∀x∈firstn(j;v).↑isr(f x)))
11. j : ℕ||v|| + 1
12. a : A[[u / v][j]]
13. ↑isr(first-success(f;v))
14. (∀a∈v.↑isr(f a))
15. j < ||v|| + 1
16. (f v[j - 1]) = (inl a) ∈ (A[v[j - 1]]?)
17. (∀x∈firstn(j;[u / v]).↑isr(f x))
18. ¬(j ≤ 0)
⊢ (inr Ax ) = (inl <j, a>) ∈ (i:ℕ||v|| + 1 × A[[u / v][i]]?)
Latex:
Latex:
1.  T  :  Type
2.  A  :  T  {}\mrightarrow{}  Type
3.  f  :  x:T  {}\mrightarrow{}  (A[x]?)
4.  u  :  T
5.  v  :  T  List
6.  y  :  Unit
7.  (f  u)  =  (inr  y  )
8.  y1  :  0  =  0
9.  first-success(f;v)  =  (inr  Ax  )
10.  \mforall{}[j:\mBbbN{}||v||].  \mforall{}[a:A[v[j]]].
            ((inr  Ax  )  =  (inl  <j,  a>)  \mLeftarrow{}{}\mRightarrow{}  j  <  ||v||  \mwedge{}  ((f  v[j])  =  (inl  a))  \mwedge{}  (\mforall{}x\mmember{}firstn(j;v).\muparrow{}isr(f  x)))
11.  j  :  \mBbbN{}||v||  +  1
12.  a  :  A[[u  /  v][j]]
13.  \muparrow{}isr(first-success(f;v))
14.  (\mforall{}a\mmember{}v.\muparrow{}isr(f  a))
15.  j  <  ||v||  +  1
16.  (f  [u  /  v][j])  =  (inl  a)
17.  (\mforall{}x\mmember{}firstn(j;[u  /  v]).\muparrow{}isr(f  x))
\mvdash{}  (inr  Ax  )  =  (inl  <j,  a>)
By
Latex:
((RWO  "select-cons"  (-2)  THENA  Auto)  THEN  SplitOnHypITE  -2    THEN  Auto)
Home
Index