Step
*
of Lemma
new_23_sig_replica_state_from_proposal
∀Cmd:ValueAllType. ∀notify,propose:Atom List. ∀f:new_23_sig_headers_type{i:l}(Cmd;notify;propose). ∀es:EO+(Message(f)).
∀e:E. ∀slots:set-sig{i:l}(ℤ). ∀s:set-sig-set(slots).
  (s ∈ new_23_sig_ReplicaState(Cmd;notify;propose;slots;f)(e)
  
⇒ (∀n:ℤ
        ((↑(set-sig-member(slots) n s))
        
⇒ (∃e':E
             ∃c:Cmd
              ((e' <loc e)
              ∧ <n, c> ∈ new_23_sig_Proposal(Cmd;notify;propose;f)(e')
              ∧ (¬↑(set-sig-member(slots) n new_23_sig_ReplicaStateFun(Cmd;notify;propose;slots;f;es;e'))))))))
BY
{ MemoryInvariant }
1
1. Cmd : {T:Type| valueall-type(T)} @i'
2. notify : Atom List@i
3. propose : Atom List@i
4. f : new_23_sig_headers_type{i:l}(Cmd;notify;propose)@i'
5. (f propose) = (ℤ × Cmd) ∈ Type
6. (f notify) = (ℤ × Cmd) ∈ Type
7. (f ``new_23_sig decided``) = (ℤ × Cmd) ∈ Type
8. (f ``new_23_sig retry``) = (ℤ × ℤ × Cmd) ∈ Type
9. (f ``new_23_sig vote``) = (ℤ × ℤ × Cmd × Id) ∈ Type
10. f ∈ Name ─→ Type
11. es : EO+(Message(f))@i'
12. e : E@i
13. slots : set-sig{i:l}(ℤ)@i'
14. s : set-sig-set(slots)@i
15. s ∈
     Memory-loc-class(new_23_sig_update_replica(Cmd;slots);λloc.{set-sig-empty(slots)};...)(e)
16. v : set-sig-set(slots)@i
17. v = set-sig-empty(slots) ∈ set-sig-set(slots)
18. n : ℤ@i
19. ↑(set-sig-member(slots) n v)@i
⊢ ∃e':E
   ∃c:Cmd
    ((e' <loc e)
    ∧ <n, c> ∈ new_23_sig_Proposal(Cmd;notify;propose;f)(e')
    ∧ (¬↑(set-sig-member(slots) n let x,y = new_23_sig_ReplicaState(Cmd;notify;propose;slots;f) es e' in x)))
2
1. Cmd : {T:Type| valueall-type(T)} @i'
2. notify : Atom List@i
3. propose : Atom List@i
4. f : new_23_sig_headers_type{i:l}(Cmd;notify;propose)@i'
5. (f propose) = (ℤ × Cmd) ∈ Type
6. (f notify) = (ℤ × Cmd) ∈ Type
7. (f ``new_23_sig decided``) = (ℤ × Cmd) ∈ Type
8. (f ``new_23_sig retry``) = (ℤ × ℤ × Cmd) ∈ Type
9. (f ``new_23_sig vote``) = (ℤ × ℤ × Cmd × Id) ∈ Type
10. f ∈ Name ─→ Type
11. es : EO+(Message(f))@i'
12. e : E@i
13. slots : set-sig{i:l}(ℤ)@i'
14. s : set-sig-set(slots)@i
15. s ∈
     Memory-loc-class(new_23_sig_update_replica(Cmd;slots);λloc.{set-sig-empty(slots)};...)(e)
16. a1 : ℤ@i
17. a2 : Cmd@i
18. e' : E@i
19. s1 : set-sig-set(slots)@i
20. (e' <loc e)@i
21. <a1, a2> ∈ new_23_sig_Proposal(Cmd;notify;propose;f)(e')@i
22. s1 ∈
     Memory-loc-class(new_23_sig_update_replica(Cmd;slots);λloc.{set-sig-empty(slots)};...)(e')@i
23. ∀n:ℤ
      ((↑(set-sig-member(slots) n s1))
      
⇒ (∃e':E
           ∃c:Cmd
            ((e' <loc e)
            ∧ <n, c> ∈ new_23_sig_Proposal(Cmd;notify;propose;f)(e')
            ∧ (¬↑(set-sig-member(slots) n 
                  let x,y = new_23_sig_ReplicaState(Cmd;notify;propose;slots;f) es e' 
                  in x)))))@i
24. n : ℤ@i
25. n = a1 ∈ ℤ
⊢ ∃e':E
   ∃c:Cmd
    ((e' <loc e)
    ∧ <n, c> ∈ new_23_sig_Proposal(Cmd;notify;propose;f)(e')
    ∧ (¬↑(set-sig-member(slots) n let x,y = new_23_sig_ReplicaState(Cmd;notify;propose;slots;f) es e' in x)))
Latex:
Latex:
\mforall{}Cmd:ValueAllType.  \mforall{}notify,propose:Atom  List.  \mforall{}f:new\_23\_sig\_headers\_type\{i:l\}(Cmd;notify;propose).
\mforall{}es:EO+(Message(f)).  \mforall{}e:E.  \mforall{}slots:set-sig\{i:l\}(\mBbbZ{}).  \mforall{}s:set-sig-set(slots).
    (s  \mmember{}  new\_23\_sig\_ReplicaState(Cmd;notify;propose;slots;f)(e)
    {}\mRightarrow{}  (\mforall{}n:\mBbbZ{}
                ((\muparrow{}(set-sig-member(slots)  n  s))
                {}\mRightarrow{}  (\mexists{}e':E
                          \mexists{}c:Cmd
                            ((e'  <loc  e)
                            \mwedge{}  <n,  c>  \mmember{}  new\_23\_sig\_Proposal(Cmd;notify;propose;f)(e')
                            \mwedge{}  (\mneg{}\muparrow{}(set-sig-member(slots)  n 
                                        new\_23\_sig\_ReplicaStateFun(Cmd;notify;propose;slots;f;es;e'))))))))
By
Latex:
MemoryInvariant
Home
Index