Step
*
2
1
1
of Lemma
loop-class-memory-eq
1. Info : Type
2. B : Type
3. X : EClass(B ─→ B)
4. init : Id ─→ bag(B)
5. es : EO+(Info)
6. e : E@i
7. ¬↑first(e)
8. ∀e1:E
     ((e1 < e)
     
⇒ (loop-class-memory(X;init)(e1)
        = if first(e1) then init loc(e1)
          if pred(e1) ∈b X then eclass3(X;loop-class-memory(X;init))(pred(e1))
          else loop-class-memory(X;init)(pred(e1))
          fi 
        ∈ bag(B)))
9. ↑pred(e) ∈b X
10. x : E@i
11. (x <loc e)@i
12. ↑0 <z #(eclass3(X;loop-class-memory(X;init))(x))@i
13. ∀e'':E. ((x <loc e'') 
⇒ (e'' <loc e) 
⇒ (¬↑0 <z #(eclass3(X;loop-class-memory(X;init))(e''))))@i
14. (last(λe'.0 <z #(eclass3(X;loop-class-memory(X;init))(e'))) e)
= (inl x)
∈ ((∃e':{E| ((e' <loc e)
            ∧ (↑0 <z #(eclass3(X;loop-class-memory(X;init))(e')))
            ∧ (∀e'':E. ((e' <loc e'') 
⇒ (e'' <loc e) 
⇒ (¬↑0 <z #(eclass3(X;loop-class-memory(X;init))(e''))))))})
  ∨ (¬(∃e':{E| ((e' <loc e) ∧ (↑0 <z #(eclass3(X;loop-class-memory(X;init))(e'))))})))@i
15. 0 < #(init loc(e))
⊢ eclass3(X;loop-class-memory(X;init))(x) = eclass3(X;loop-class-memory(X;init))(pred(e)) ∈ bag(B)
BY
{ (InstLemma `es-pred_property` [⌈es⌉;⌈e⌉]⋅
   THEN Auto
   THEN (InstHyp [⌈x⌉] (-1)⋅ THENA Auto)
   THEN D (-1)
   THEN Auto
   THEN (InstHyp [⌈pred(e)⌉] (-7)⋅ THENA Auto)
   THEN D (-1)
   THEN (RW assert_pushdownC 0 THENA Auto)
   THEN (BLemma `bag-member-iff-size` THENA Auto)
   THEN (Subst ⌈loc(e) = loc(pred(e)) ∈ Id⌉ (-5)⋅ THENA Auto)
   THEN Using [`X',⌈X⌉] (FLemma `loop-class-memory-exists` [-5] THENA Auto)⋅
   THEN (RWO "assert-member-eclass" (-12) THENA Auto)
   THEN SquashExRepD
   THEN RepUR ``class-ap`` 0
   THEN Fold `classrel` 0
   THEN D 0
   THEN (InstConcl [⌈v1 v⌉]⋅ THENA Auto)
   THEN MaUseClassRel 0
   THEN D 0
   THEN InstConcl [⌈v1⌉;⌈v⌉]⋅
   THEN Auto) }
Latex:
Latex:
1.  Info  :  Type
2.  B  :  Type
3.  X  :  EClass(B  {}\mrightarrow{}  B)
4.  init  :  Id  {}\mrightarrow{}  bag(B)
5.  es  :  EO+(Info)
6.  e  :  E@i
7.  \mneg{}\muparrow{}first(e)
8.  \mforall{}e1:E
          ((e1  <  e)
          {}\mRightarrow{}  (loop-class-memory(X;init)(e1)
                =  if  first(e1)  then  init  loc(e1)
                    if  pred(e1)  \mmember{}\msubb{}  X  then  eclass3(X;loop-class-memory(X;init))(pred(e1))
                    else  loop-class-memory(X;init)(pred(e1))
                    fi  ))
9.  \muparrow{}pred(e)  \mmember{}\msubb{}  X
10.  x  :  E@i
11.  (x  <loc  e)@i
12.  \muparrow{}0  <z  \#(eclass3(X;loop-class-memory(X;init))(x))@i
13.  \mforall{}e'':E
            ((x  <loc  e'')  {}\mRightarrow{}  (e''  <loc  e)  {}\mRightarrow{}  (\mneg{}\muparrow{}0  <z  \#(eclass3(X;loop-class-memory(X;init))(e''))))@i
14.  (last(\mlambda{}e'.0  <z  \#(eclass3(X;loop-class-memory(X;init))(e')))  e)  =  (inl  x)@i
15.  0  <  \#(init  loc(e))
\mvdash{}  eclass3(X;loop-class-memory(X;init))(x)  =  eclass3(X;loop-class-memory(X;init))(pred(e))
By
Latex:
(InstLemma  `es-pred\_property`  [\mkleeneopen{}es\mkleeneclose{};\mkleeneopen{}e\mkleeneclose{}]\mcdot{}
  THEN  Auto
  THEN  (InstHyp  [\mkleeneopen{}x\mkleeneclose{}]  (-1)\mcdot{}  THENA  Auto)
  THEN  D  (-1)
  THEN  Auto
  THEN  (InstHyp  [\mkleeneopen{}pred(e)\mkleeneclose{}]  (-7)\mcdot{}  THENA  Auto)
  THEN  D  (-1)
  THEN  (RW  assert\_pushdownC  0  THENA  Auto)
  THEN  (BLemma  `bag-member-iff-size`  THENA  Auto)
  THEN  (Subst  \mkleeneopen{}loc(e)  =  loc(pred(e))\mkleeneclose{}  (-5)\mcdot{}  THENA  Auto)
  THEN  Using  [`X',\mkleeneopen{}X\mkleeneclose{}]  (FLemma  `loop-class-memory-exists`  [-5]  THENA  Auto)\mcdot{}
  THEN  (RWO  "assert-member-eclass"  (-12)  THENA  Auto)
  THEN  SquashExRepD
  THEN  RepUR  ``class-ap``  0
  THEN  Fold  `classrel`  0
  THEN  D  0
  THEN  (InstConcl  [\mkleeneopen{}v1  v\mkleeneclose{}]\mcdot{}  THENA  Auto)
  THEN  MaUseClassRel  0
  THEN  D  0
  THEN  InstConcl  [\mkleeneopen{}v1\mkleeneclose{};\mkleeneopen{}v\mkleeneclose{}]\mcdot{}
  THEN  Auto)
Home
Index