Step
*
of Lemma
new_23_sig_proposal_classrel2
∀[Cmd:ValueAllType]
∀propose:Atom List
∀[notify:Atom List]. ∀[f:new_23_sig_headers_type{i:l}(Cmd;notify;propose)].
∀es:EO+(Message(f)). ∀e:E.
∀[nc:ℤ × Cmd]
uiff(nc ∈ new_23_sig_Proposal(Cmd;notify;propose;f)(e);((header(e) = propose ∈ Name) ∧ nc = body(e))
∨ (has-es-info-type(es;e;f;ℤ × ℤ × Cmd × Id)
∧ (header(e) = ``new_23_sig vote`` ∈ Name)
∧ ((fst(nc)) = (fst(fst(fst(msgval(e))))) ∈ ℤ)
∧ ((snd(nc)) = (snd(fst(msgval(e)))) ∈ Cmd)))
BY
{ StartEmlProof }
1
1. [Cmd] : {T:Type| valueall-type(T)}
2. propose : Atom List@i
3. [notify] : Atom List
4. [f] : new_23_sig_headers_type{i:l}(Cmd;notify;propose)
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. [nc] : ℤ × Cmd
⊢ uiff(nc ∈ new_23_sig_Proposal(Cmd;notify;propose;f)(e);((header(e) = propose ∈ Name) ∧ nc = body(e))
∨ (has-es-info-type(es;e;f;ℤ × ℤ × Cmd × Id)
∧ (header(e) = ``new_23_sig vote`` ∈ Name)
∧ ((fst(nc)) = (fst(fst(fst(msgval(e))))) ∈ ℤ)
∧ ((snd(nc)) = (snd(fst(msgval(e)))) ∈ Cmd)))
Latex:
Latex:
\mforall{}[Cmd:ValueAllType]
\mforall{}propose:Atom List
\mforall{}[notify:Atom List]. \mforall{}[f:new\_23\_sig\_headers\_type\{i:l\}(Cmd;notify;propose)].
\mforall{}es:EO+(Message(f)). \mforall{}e:E.
\mforall{}[nc:\mBbbZ{} \mtimes{} Cmd]
uiff(nc \mmember{} new\_23\_sig\_Proposal(Cmd;notify;propose;f)(e);((header(e) = propose)
\mwedge{} nc = body(e))
\mvee{} (has-es-info-type(es;e;f;\mBbbZ{} \mtimes{} \mBbbZ{} \mtimes{} Cmd \mtimes{} Id)
\mwedge{} (header(e) = ``new\_23\_sig vote``)
\mwedge{} ((fst(nc)) = (fst(fst(fst(msgval(e))))))
\mwedge{} ((snd(nc)) = (snd(fst(msgval(e)))))))
By
Latex:
StartEmlProof
Home
Index