Step
*
1
2
1
of Lemma
first-class-val
1. Info : Type
2. A : Type
3. u : EClass(A)@i'
4. v : EClass(A) List@i'
5. ∀es:EO+(Info). ∀e:E.
     ((↑e ∈b first-class(v))
     
⇒ ((↑e ∈b v[index-of-first X in v.e ∈b X - 1])
        ∧ (first-class(v)(e) = v[index-of-first X in v.e ∈b X - 1](e) ∈ A)))@i'
6. es : EO+(Info)@i'
7. ∀e:E
     ((↑e ∈b first-class(v))
     
⇒ ((↑e ∈b v[index-of-first X in v.e ∈b X - 1])
        ∧ (first-class(v)(e) = v[index-of-first X in v.e ∈b X - 1](e) ∈ A)))
8. e : E@i
9. (↑e ∈b first-class(v))
⇒ ((↑e ∈b v[index-of-first X in v.e ∈b X - 1]) ∧ (first-class(v)(e) = v[index-of-first X in v.e ∈b X - 1](e) ∈ A))
10. ↑e ∈b [u?first-class(v)]@i
11. [u?first-class(v)](e) = if e ∈b u then u(e) else first-class(v)(e) fi  ∈ A
⊢ (↑e ∈b [u / v][index-of-first X in [u / v].e ∈b X - 1])
∧ ([u?first-class(v)](e) = [u / v][index-of-first X in [u / v].e ∈b X - 1](e) ∈ A)
BY
{ ((RWO "first_index_cons" 0 THENA Auto) THEN OldAutoSplit THEN (SplitOnHypITE -2  THENA Auto) THEN Try (Trivial)) }
1
.....falsecase..... 
1. Info : Type
2. A : Type
3. u : EClass(A)@i'
4. v : EClass(A) List@i'
5. ∀es:EO+(Info). ∀e:E.
     ((↑e ∈b first-class(v))
     
⇒ ((↑e ∈b v[index-of-first X in v.e ∈b X - 1])
        ∧ (first-class(v)(e) = v[index-of-first X in v.e ∈b X - 1](e) ∈ A)))@i'
6. es : EO+(Info)@i'
7. ∀e:E
     ((↑e ∈b first-class(v))
     
⇒ ((↑e ∈b v[index-of-first X in v.e ∈b X - 1])
        ∧ (first-class(v)(e) = v[index-of-first X in v.e ∈b X - 1](e) ∈ A)))
8. e : E@i
9. (↑e ∈b first-class(v))
⇒ ((↑e ∈b v[index-of-first X in v.e ∈b X - 1]) ∧ (first-class(v)(e) = v[index-of-first X in v.e ∈b X - 1](e) ∈ A))
10. ↑e ∈b [u?first-class(v)]@i
11. [u?first-class(v)](e) = first-class(v)(e) ∈ A
12. ¬↑e ∈b u
13. ¬↑e ∈b u
⊢ (↑e ∈b [u / v][if 0 <z index-of-first X in v.e ∈b X then index-of-first X in v.e ∈b X + 1 else 0 fi  - 1])
∧ ([u?first-class(v)](e)
  = [u / v][if 0 <z index-of-first X in v.e ∈b X then index-of-first X in v.e ∈b X + 1 else 0 fi  - 1](e)
  ∈ A)
Latex:
1.  Info  :  Type
2.  A  :  Type
3.  u  :  EClass(A)@i'
4.  v  :  EClass(A)  List@i'
5.  \mforall{}es:EO+(Info).  \mforall{}e:E.
          ((\muparrow{}e  \mmember{}\msubb{}  first-class(v))
          {}\mRightarrow{}  ((\muparrow{}e  \mmember{}\msubb{}  v[index-of-first  X  in  v.e  \mmember{}\msubb{}  X  -  1])
                \mwedge{}  (first-class(v)(e)  =  v[index-of-first  X  in  v.e  \mmember{}\msubb{}  X  -  1](e))))@i'
6.  es  :  EO+(Info)@i'
7.  \mforall{}e:E
          ((\muparrow{}e  \mmember{}\msubb{}  first-class(v))
          {}\mRightarrow{}  ((\muparrow{}e  \mmember{}\msubb{}  v[index-of-first  X  in  v.e  \mmember{}\msubb{}  X  -  1])
                \mwedge{}  (first-class(v)(e)  =  v[index-of-first  X  in  v.e  \mmember{}\msubb{}  X  -  1](e))))
8.  e  :  E@i
9.  (\muparrow{}e  \mmember{}\msubb{}  first-class(v))
{}\mRightarrow{}  ((\muparrow{}e  \mmember{}\msubb{}  v[index-of-first  X  in  v.e  \mmember{}\msubb{}  X  -  1])
      \mwedge{}  (first-class(v)(e)  =  v[index-of-first  X  in  v.e  \mmember{}\msubb{}  X  -  1](e)))
10.  \muparrow{}e  \mmember{}\msubb{}  [u?first-class(v)]@i
11.  [u?first-class(v)](e)  =  if  e  \mmember{}\msubb{}  u  then  u(e)  else  first-class(v)(e)  fi 
\mvdash{}  (\muparrow{}e  \mmember{}\msubb{}  [u  /  v][index-of-first  X  in  [u  /  v].e  \mmember{}\msubb{}  X  -  1])
\mwedge{}  ([u?first-class(v)](e)  =  [u  /  v][index-of-first  X  in  [u  /  v].e  \mmember{}\msubb{}  X  -  1](e))
By
((RWO  "first\_index\_cons"  0  THENA  Auto)
  THEN  OldAutoSplit
  THEN  (SplitOnHypITE  -2    THENA  Auto)
  THEN  Try  (Trivial))
Home
Index