Step
*
2
2
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. ∀[j:ℕ||v||]. ∀[a:A[v[j]]].
(first-success(f;v) = (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)))
7. x : A[u]
8. (f u) = (inl x) ∈ (A[u]?)
9. j : ℕ||v|| + 1
10. a : A[[u / v][j]]
11. j < ||v|| + 1 ∧ ((f [u / v][j]) = (inl a) ∈ (A[[u / v][j]]?)) ∧ (∀x∈firstn(j;[u / v]).↑isr(f x))
⊢ (inl <0, x>) = (inl <j, a>) ∈ (i:ℕ||v|| + 1 × A[[u / v][i]]?)
BY
{ TACTIC:(Auto THEN RecUnfold `firstn` (-1) THEN Reduce (-1) THEN (SplitOnHypITE -1 THENA Auto)) }
1
.....truecase.....
1. T : Type
2. A : T ⟶ Type
3. f : x:T ⟶ (A[x]?)
4. u : T
5. v : T List
6. ∀[j:ℕ||v||]. ∀[a:A[v[j]]].
(first-success(f;v) = (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)))
7. x : A[u]
8. (f u) = (inl x) ∈ (A[u]?)
9. j : ℕ||v|| + 1
10. a : A[[u / v][j]]
11. j < ||v|| + 1
12. (f [u / v][j]) = (inl a) ∈ (A[[u / v][j]]?)
13. (∀x∈[u / firstn(j - 1;v)].↑isr(f x))
14. 0 < j
⊢ <0, x> = <j, a> ∈ (i:ℕ||v|| + 1 × A[[u / v][i]])
2
.....falsecase.....
1. T : Type
2. A : T ⟶ Type
3. f : x:T ⟶ (A[x]?)
4. u : T
5. v : T List
6. ∀[j:ℕ||v||]. ∀[a:A[v[j]]].
(first-success(f;v) = (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)))
7. x : A[u]
8. (f u) = (inl x) ∈ (A[u]?)
9. j : ℕ||v|| + 1
10. a : A[[u / v][j]]
11. j < ||v|| + 1
12. (f [u / v][j]) = (inl a) ∈ (A[[u / v][j]]?)
13. (∀x∈[].↑isr(f x))
14. ¬0 < j
⊢ <0, x> = <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. \mforall{}[j:\mBbbN{}||v||]. \mforall{}[a:A[v[j]]].
(first-success(f;v) = (inl <j, a>)
\mLeftarrow{}{}\mRightarrow{} j < ||v|| \mwedge{} ((f v[j]) = (inl a)) \mwedge{} (\mforall{}x\mmember{}firstn(j;v).\muparrow{}isr(f x)))
7. x : A[u]
8. (f u) = (inl x)
9. j : \mBbbN{}||v|| + 1
10. a : A[[u / v][j]]
11. j < ||v|| + 1 \mwedge{} ((f [u / v][j]) = (inl a)) \mwedge{} (\mforall{}x\mmember{}firstn(j;[u / v]).\muparrow{}isr(f x))
\mvdash{} (inl ɘ, x>) = (inl <j, a>)
By
Latex:
TACTIC:(Auto THEN RecUnfold `firstn` (-1) THEN Reduce (-1) THEN (SplitOnHypITE -1 THENA Auto))
Home
Index