Step
*
of Lemma
iterated-classrel-invariant2
∀[Info,A,S:Type]. ∀[init:Id ─→ bag(S)]. ∀[f:A ─→ S ─→ S].
  ∀X:EClass(A). ∀es:EO+(Info).
    ∀[P:E ─→ S ─→ ℙ]
      ∀e:E. ∀v:S.
        ((∀s:S. ∀e':E.
            (e' ≤loc e 
            
⇒ if first(e')
               then s ↓∈ init loc(e')
               else iterated-classrel(es;S;A;f;init;X;pred(e');s) ∧ P[pred(e');s]
               fi 
            
⇒ if e' ∈b X then ∀a:A. (a ∈ X(e') 
⇒ P[e';f a s]) else P[e';s] fi ))
        
⇒ iterated-classrel(es;S;A;f;init;X;e;v)
        
⇒ P[e;v])
BY
{ ((UnivCD THENA Auto)
   THEN RepeatFor 4 (MoveToConcl (-1))
   THEN StrongCausalInd
   THEN (UnivCD THENA Auto)
   THEN RecUnfold `iterated-classrel` (-1)
   THEN ExRepD
   THEN (SplitOnHypITE (-2) THENA Auto)) }
1
.....truecase..... 
1. [Info] : Type
2. [A] : Type
3. [S] : Type
4. [init] : Id ─→ bag(S)
5. [f] : A ─→ S ─→ S
6. X : EClass(A)@i'
7. es : EO+(Info)@i'
8. [P] : E ─→ S ─→ ℙ
9. e : E@i
10. ∀e1:E
      ((e1 < e)
      
⇒ (∀v:S
            ((∀s:S. ∀e':E.
                (e' ≤loc e1 
                
⇒ if first(e')
                   then s ↓∈ init loc(e')
                   else iterated-classrel(es;S;A;f;init;X;pred(e');s) ∧ P[pred(e');s]
                   fi 
                
⇒ if e' ∈b X then ∀a:A. (a ∈ X(e') 
⇒ P[e';f a s]) else P[e';s] fi ))
            
⇒ iterated-classrel(es;S;A;f;init;X;e1;v)
            
⇒ P[e1;v])))
11. v : S@i
12. ∀s:S. ∀e':E.
      (e' ≤loc e 
      
⇒ if first(e') then s ↓∈ init loc(e') else iterated-classrel(es;S;A;f;init;X;pred(e');s) ∧ P[pred(e');s] fi 
      
⇒ if e' ∈b X then ∀a:A. (a ∈ X(e') 
⇒ P[e';f a s]) else P[e';s] fi )@i
13. z : S@i
14. z ↓∈ init loc(e)@i
15. (∃a:A. (a ∈ X(e) ∧ (v = (f a z) ∈ S))) ∨ ((∀a:A. (¬a ∈ X(e))) ∧ (v = z ∈ S))@i
16. ↑first(e)
⊢ P[e;v]
2
.....falsecase..... 
1. [Info] : Type
2. [A] : Type
3. [S] : Type
4. [init] : Id ─→ bag(S)
5. [f] : A ─→ S ─→ S
6. X : EClass(A)@i'
7. es : EO+(Info)@i'
8. [P] : E ─→ S ─→ ℙ
9. e : E@i
10. ∀e1:E
      ((e1 < e)
      
⇒ (∀v:S
            ((∀s:S. ∀e':E.
                (e' ≤loc e1 
                
⇒ if first(e')
                   then s ↓∈ init loc(e')
                   else iterated-classrel(es;S;A;f;init;X;pred(e');s) ∧ P[pred(e');s]
                   fi 
                
⇒ if e' ∈b X then ∀a:A. (a ∈ X(e') 
⇒ P[e';f a s]) else P[e';s] fi ))
            
⇒ iterated-classrel(es;S;A;f;init;X;e1;v)
            
⇒ P[e1;v])))
11. v : S@i
12. ∀s:S. ∀e':E.
      (e' ≤loc e 
      
⇒ if first(e') then s ↓∈ init loc(e') else iterated-classrel(es;S;A;f;init;X;pred(e');s) ∧ P[pred(e');s] fi 
      
⇒ if e' ∈b X then ∀a:A. (a ∈ X(e') 
⇒ P[e';f a s]) else P[e';s] fi )@i
13. z : S@i
14. iterated-classrel(es;S;A;f;init;X;pred(e);z)@i
15. (∃a:A. (a ∈ X(e) ∧ (v = (f a z) ∈ S))) ∨ ((∀a:A. (¬a ∈ X(e))) ∧ (v = z ∈ S))@i
16. ¬↑first(e)
⊢ P[e;v]
Latex:
\mforall{}[Info,A,S:Type].  \mforall{}[init:Id  {}\mrightarrow{}  bag(S)].  \mforall{}[f:A  {}\mrightarrow{}  S  {}\mrightarrow{}  S].
    \mforall{}X:EClass(A).  \mforall{}es:EO+(Info).
        \mforall{}[P:E  {}\mrightarrow{}  S  {}\mrightarrow{}  \mBbbP{}]
            \mforall{}e:E.  \mforall{}v:S.
                ((\mforall{}s:S.  \mforall{}e':E.
                        (e'  \mleq{}loc  e 
                        {}\mRightarrow{}  if  first(e')
                              then  s  \mdownarrow{}\mmember{}  init  loc(e')
                              else  iterated-classrel(es;S;A;f;init;X;pred(e');s)  \mwedge{}  P[pred(e');s]
                              fi 
                        {}\mRightarrow{}  if  e'  \mmember{}\msubb{}  X  then  \mforall{}a:A.  (a  \mmember{}  X(e')  {}\mRightarrow{}  P[e';f  a  s])  else  P[e';s]  fi  ))
                {}\mRightarrow{}  iterated-classrel(es;S;A;f;init;X;e;v)
                {}\mRightarrow{}  P[e;v])
By
((UnivCD  THENA  Auto)
  THEN  RepeatFor  4  (MoveToConcl  (-1))
  THEN  StrongCausalInd
  THEN  (UnivCD  THENA  Auto)
  THEN  RecUnfold  `iterated-classrel`  (-1)
  THEN  ExRepD
  THEN  (SplitOnHypITE  (-2)  THENA  Auto))
Home
Index