Step
*
2
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)))
⊢ loop-class-memory(X;init)(e)
= if pred(e) ∈b X then eclass3(X;loop-class-memory(X;init))(pred(e)) else loop-class-memory(X;init)(pred(e)) fi
∈ bag(B)
BY
{ (AutoSplit
THEN Try (Complete (((RW (AddrC [2] (LemmaC `loop-class-memory-no-input`)) 0 THENA Auto)
THEN (RWO "loop-class-memory-prior-eq" 0 THENA Auto)
THEN AutoSplit)))
THEN RW (AddrC [2] (RecUnfoldC `loop-class-memory`)) 0
THEN RepUR ``primed-class-opt class-ap`` 0
THEN Fold `class-ap` 0
THEN GenConclAtAddr [2;1]
THEN AllReduce
THEN DVar `v'
THEN Reduce 0) }
1
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':{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''))))))}@i
11. (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
⊢ eclass3(X;loop-class-memory(X;init))(x) = eclass3(X;loop-class-memory(X;init))(pred(e)) ∈ bag(B)
2
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. y : ¬(∃e':{E| ((e' <loc e) ∧ (↑0 <z #(eclass3(X;loop-class-memory(X;init))(e'))))})@i
11. (last(λe'.0 <z #(eclass3(X;loop-class-memory(X;init))(e'))) e)
= (inr y )
∈ ((∃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
⊢ (init loc(e)) = eclass3(X;loop-class-memory(X;init))(pred(e)) ∈ bag(B)
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 ))
\mvdash{} loop-class-memory(X;init)(e)
= if pred(e) \mmember{}\msubb{} X
then eclass3(X;loop-class-memory(X;init))(pred(e))
else loop-class-memory(X;init)(pred(e))
fi
By
Latex:
(AutoSplit
THEN Try (Complete (((RW (AddrC [2] (LemmaC `loop-class-memory-no-input`)) 0 THENA Auto)
THEN (RWO "loop-class-memory-prior-eq" 0 THENA Auto)
THEN AutoSplit)))
THEN RW (AddrC [2] (RecUnfoldC `loop-class-memory`)) 0
THEN RepUR ``primed-class-opt class-ap`` 0
THEN Fold `class-ap` 0
THEN GenConclAtAddr [2;1]
THEN AllReduce
THEN DVar `v'
THEN Reduce 0)
Home
Index