Step
*
of Lemma
pRun-System-invariant
∀[M:Type ─→ Type]
∀[Q:ℕ ─→ System(P.M[P]) ─→ ℙ]
∀nat2msg:ℕ ─→ pMsg(P.M[P]). ∀loc2msg:Id ─→ pMsg(P.M[P]). ∀S0:System(P.M[P]).
(Q[0;S0]
⇒ (∀t:ℕ. ∀S:System(P.M[P]).
(Q[t;S]
⇒ (∀env:pEnvType(P.M[P])
let n,m,nm = env (t + 1) pRun(S0;env;nat2msg;loc2msg) in
Q[t + 1;snd(do-chosen-command(nat2msg;loc2msg;t + 1;S;n;m;nm))])))
⇒ {∀env:pEnvType(P.M[P]). ∀t:ℕ. Q[t;snd((pRun(S0;env;nat2msg;loc2msg) t))]})
supposing Continuous+(P.M[P])
BY
{ (RepeatFor 7 ((D 0 THENA Auto))
THEN (At ⌈Type⌉ (D 0)⋅ THENA (Auto THEN GenConclAtAddr [2;1] THEN Auto THEN DoSubsume THEN Auto THEN Auto))
THEN (Unfold `guard` 0 THEN Auto THEN CompNatInd (-1) THEN RecUnfold `pRun` 0 THEN Reduce 0 THEN AutoSplit)⋅) }
1
1. [M] : Type ─→ Type
2. Continuous+(P.M[P])
3. [Q] : ℕ ─→ System(P.M[P]) ─→ ℙ
4. nat2msg : ℕ ─→ pMsg(P.M[P])@i
5. loc2msg : Id ─→ pMsg(P.M[P])@i
6. S0 : System(P.M[P])@i
7. Q[0;S0]@i
8. ∀t:ℕ. ∀S:System(P.M[P]).
(Q[t;S]
⇒ (∀env:pEnvType(P.M[P])
let n,m,nm = env (t + 1) pRun(S0;env;nat2msg;loc2msg) in
Q[t + 1;snd(do-chosen-command(nat2msg;loc2msg;t + 1;S;n;m;nm))]))@i
9. env : pEnvType(P.M[P])@i
10. t : {1...}
11. ∀t:ℕt. Q[t;snd((pRun(S0;env;nat2msg;loc2msg) t))]@i
⊢ Q[t;snd(let n,m,nm = env t pRun(S0;env;nat2msg;loc2msg) in
do-chosen-command(nat2msg;loc2msg;t;snd((pRun(S0;env;nat2msg;loc2msg) (t - 1)));n;m;nm))]
Latex:
Latex:
\mforall{}[M:Type {}\mrightarrow{} Type]
\mforall{}[Q:\mBbbN{} {}\mrightarrow{} System(P.M[P]) {}\mrightarrow{} \mBbbP{}]
\mforall{}nat2msg:\mBbbN{} {}\mrightarrow{} pMsg(P.M[P]). \mforall{}loc2msg:Id {}\mrightarrow{} pMsg(P.M[P]). \mforall{}S0:System(P.M[P]).
(Q[0;S0]
{}\mRightarrow{} (\mforall{}t:\mBbbN{}. \mforall{}S:System(P.M[P]).
(Q[t;S]
{}\mRightarrow{} (\mforall{}env:pEnvType(P.M[P])
let n,m,nm = env (t + 1) pRun(S0;env;nat2msg;loc2msg) in
Q[t + 1;snd(do-chosen-command(nat2msg;loc2msg;t + 1;S;n;m;nm))])))
{}\mRightarrow{} \{\mforall{}env:pEnvType(P.M[P]). \mforall{}t:\mBbbN{}. Q[t;snd((pRun(S0;env;nat2msg;loc2msg) t))]\})
supposing Continuous+(P.M[P])
By
Latex:
(RepeatFor 7 ((D 0 THENA Auto))
THEN (At \mkleeneopen{}Type\mkleeneclose{} (D 0)\mcdot{}
THENA (Auto THEN GenConclAtAddr [2;1] THEN Auto THEN DoSubsume THEN Auto THEN Auto)
)
THEN (Unfold `guard` 0
THEN Auto
THEN CompNatInd (-1)
THEN RecUnfold `pRun` 0
THEN Reduce 0
THEN AutoSplit)\mcdot{})
Home
Index