Step * 1 2 2 1 1 1 of Lemma pRun_functionality


1. Type ─→ Type
2. Continuous+(P.M[P])
3. nat2msg : ℕ ─→ pMsg(P.M[P])
4. loc2msg Id ─→ pMsg(P.M[P])
5. env pEnvType(P.M[P])
6. S1 System(P.M[P])
7. S2 System(P.M[P])
8. system-equiv(P.M[P];S1;S2)
9. {1...}
10. ∀t:ℕt
      (system-equiv(P.M[P];snd((pRun(S1;env;nat2msg;loc2msg) t));snd((pRun(S2;env;nat2msg;loc2msg) t)))
      ∧ ((pRun(S1;env;nat2msg;loc2msg) t)
        (pRun(S2;env;nat2msg;loc2msg) t)
        ∈ (ℤ × Id × Id × pMsg(P.M[P])? × Top × LabeledDAG(pInTransit(P.M[P])))))@i
11. (env pRun(S1;env;nat2msg;loc2msg)) (env pRun(S2;env;nat2msg;loc2msg)) ∈ (ℕ × ℕ × Id)
12. P2 System(P.M[P])@i
13. P4 System(P.M[P])@i
14. system-equiv(P.M[P];P2;P4)@i
15. : ℕ@i
16. : ℕ@i
17. Id@i
⊢ system-equiv(P.M[P];snd(do-chosen-command(nat2msg;loc2msg;t;P2;n;m;x));
                      snd(do-chosen-command(nat2msg;loc2msg;t;P4;n;m;x)))
∧ (do-chosen-command(nat2msg;loc2msg;t;P2;n;m;x)
  do-chosen-command(nat2msg;loc2msg;t;P4;n;m;x)
  ∈ (ℤ × Id × Id × pMsg(P.M[P])? × Top × LabeledDAG(pInTransit(P.M[P]))))
BY
(DVar `P2'
   THEN DVar `P4'
   THEN RepUR ``system-equiv`` -4
   THEN RepUR ``do-chosen-command`` 0
   THEN RepeatFor (AutoSplit)) }

1
1. Type ─→ Type
2. Continuous+(P.M[P])
3. nat2msg : ℕ ─→ pMsg(P.M[P])
4. loc2msg Id ─→ pMsg(P.M[P])
5. env pEnvType(P.M[P])
6. S1 System(P.M[P])
7. S2 System(P.M[P])
8. system-equiv(P.M[P];S1;S2)
9. {1...}
10. ∀t:ℕt
      (system-equiv(P.M[P];snd((pRun(S1;env;nat2msg;loc2msg) t));snd((pRun(S2;env;nat2msg;loc2msg) t)))
      ∧ ((pRun(S1;env;nat2msg;loc2msg) t)
        (pRun(S2;env;nat2msg;loc2msg) t)
        ∈ (ℤ × Id × Id × pMsg(P.M[P])? × Top × LabeledDAG(pInTransit(P.M[P])))))@i
11. (env pRun(S1;env;nat2msg;loc2msg)) (env pRun(S2;env;nat2msg;loc2msg)) ∈ (ℕ × ℕ × Id)
12. P5 component(P.M[P]) List@i
13. P6 LabeledDAG(pInTransit(P.M[P]))@i
14. P7 component(P.M[P]) List@i
15. P8 LabeledDAG(pInTransit(P.M[P]))@i
16. (P6 P8 ∈ LabeledDAG(pInTransit(P.M[P])))
∧ (||P5|| ||P7|| ∈ ℤ)
∧ (∀k:ℕ||P5||. let x,P P5[k] in let z,Q P7[k] in (x z ∈ Id) ∧ P≡Q)@i
17. : ℕ@i
18. : ℕ@i
19. Id@i
20. ↑lg-is-source(P6;n)
21. ↑lg-is-source(P8;n)
⊢ system-equiv(P.M[P];snd(let ev,x@0,c lg-label(P6;n) in 
                      let G' lg-remove(P6;n) in
                          if com-kind(c) =a "msg"
                            then let ms comm-msg(c) in
                                     <inl <ev, x@0, ms>deliver-msg(t;ms;x@0;P5;G')>
                          if com-kind(c) =a "create"
                            then let comm-create(c) in
                                     <inr ⋅ create-component(t;P;x@0;P5;G')>
                          if com-kind(c) =a "choose"
                            then let ms nat2msg in
                                     <inl <ev, x@0, ms>deliver-msg(t;ms;x@0;P5;G')>
                          if com-kind(c) =a "new"
                            then let ms loc2msg in
                                     <inl <ev, x@0, ms>deliver-msg(t;ms;x@0;P5;G')>
                          else <inr ⋅ P5, G'>
                          fi );snd(let ev,x@0,c lg-label(P8;n) in 
                      let G' lg-remove(P8;n) in
                          if com-kind(c) =a "msg"
                            then let ms comm-msg(c) in
                                     <inl <ev, x@0, ms>deliver-msg(t;ms;x@0;P7;G')>
                          if com-kind(c) =a "create"
                            then let comm-create(c) in
                                     <inr ⋅ create-component(t;P;x@0;P7;G')>
                          if com-kind(c) =a "choose"
                            then let ms nat2msg in
                                     <inl <ev, x@0, ms>deliver-msg(t;ms;x@0;P7;G')>
                          if com-kind(c) =a "new"
                            then let ms loc2msg in
                                     <inl <ev, x@0, ms>deliver-msg(t;ms;x@0;P7;G')>
                          else <inr ⋅ P7, G'>
                          fi ))
∧ (let ev,x@0,c lg-label(P6;n) in 
  let G' lg-remove(P6;n) in
      if com-kind(c) =a "msg" then let ms comm-msg(c) in <inl <ev, x@0, ms>deliver-msg(t;ms;x@0;P5;G')>
      if com-kind(c) =a "create" then let comm-create(c) in <inr ⋅ create-component(t;P;x@0;P5;G')>
      if com-kind(c) =a "choose" then let ms nat2msg in <inl <ev, x@0, ms>deliver-msg(t;ms;x@0;P5;G')>
      if com-kind(c) =a "new" then let ms loc2msg in <inl <ev, x@0, ms>deliver-msg(t;ms;x@0;P5;G')>
      else <inr ⋅ P5, G'>
      fi 
  let ev,x@0,c lg-label(P8;n) in 
    let G' lg-remove(P8;n) in
        if com-kind(c) =a "msg" then let ms comm-msg(c) in <inl <ev, x@0, ms>deliver-msg(t;ms;x@0;P7;G')>
        if com-kind(c) =a "create" then let comm-create(c) in <inr ⋅ create-component(t;P;x@0;P7;G')>
        if com-kind(c) =a "choose" then let ms nat2msg in <inl <ev, x@0, ms>deliver-msg(t;ms;x@0;P7;G')>
        if com-kind(c) =a "new" then let ms loc2msg in <inl <ev, x@0, ms>deliver-msg(t;ms;x@0;P7;G')>
        else <inr ⋅ P7, G'>
        fi 
  ∈ (ℤ × Id × Id × pMsg(P.M[P])? × Top × LabeledDAG(pInTransit(P.M[P]))))

2
1. Type ─→ Type
2. Continuous+(P.M[P])
3. nat2msg : ℕ ─→ pMsg(P.M[P])
4. loc2msg Id ─→ pMsg(P.M[P])
5. env pEnvType(P.M[P])
6. S1 System(P.M[P])
7. S2 System(P.M[P])
8. system-equiv(P.M[P];S1;S2)
9. {1...}
10. ∀t:ℕt
      (system-equiv(P.M[P];snd((pRun(S1;env;nat2msg;loc2msg) t));snd((pRun(S2;env;nat2msg;loc2msg) t)))
      ∧ ((pRun(S1;env;nat2msg;loc2msg) t)
        (pRun(S2;env;nat2msg;loc2msg) t)
        ∈ (ℤ × Id × Id × pMsg(P.M[P])? × Top × LabeledDAG(pInTransit(P.M[P])))))@i
11. (env pRun(S1;env;nat2msg;loc2msg)) (env pRun(S2;env;nat2msg;loc2msg)) ∈ (ℕ × ℕ × Id)
12. P5 component(P.M[P]) List@i
13. P6 LabeledDAG(pInTransit(P.M[P]))@i
14. P7 component(P.M[P]) List@i
15. P8 LabeledDAG(pInTransit(P.M[P]))@i
16. (P6 P8 ∈ LabeledDAG(pInTransit(P.M[P])))
∧ (||P5|| ||P7|| ∈ ℤ)
∧ (∀k:ℕ||P5||. let x,P P5[k] in let z,Q P7[k] in (x z ∈ Id) ∧ P≡Q)@i
17. : ℕ@i
18. ¬↑lg-is-source(P8;n)
19. ¬↑lg-is-source(P6;n)
20. : ℕ@i
21. Id@i
⊢ system-equiv(P.M[P];<P5, P6>;<P7, P8>)
∧ (<inr ⋅ P5, P6> = <inr ⋅ P7, P8> ∈ (ℤ × Id × Id × pMsg(P.M[P])? × Top × LabeledDAG(pInTransit(P.M[P]))))


Latex:



Latex:

1.  M  :  Type  {}\mrightarrow{}  Type
2.  Continuous+(P.M[P])
3.  nat2msg  :  \mBbbN{}  {}\mrightarrow{}  pMsg(P.M[P])
4.  loc2msg  :  Id  {}\mrightarrow{}  pMsg(P.M[P])
5.  env  :  pEnvType(P.M[P])
6.  S1  :  System(P.M[P])
7.  S2  :  System(P.M[P])
8.  system-equiv(P.M[P];S1;S2)
9.  t  :  \{1...\}
10.  \mforall{}t:\mBbbN{}t
            (system-equiv(P.M[P];snd((pRun(S1;env;nat2msg;loc2msg)  t));snd((pRun(S2;env;nat2msg;loc2msg) 
                                                                                                                                            t)))
            \mwedge{}  ((pRun(S1;env;nat2msg;loc2msg)  t)  =  (pRun(S2;env;nat2msg;loc2msg)  t)))@i
11.  (env  t  pRun(S1;env;nat2msg;loc2msg))  =  (env  t  pRun(S2;env;nat2msg;loc2msg))
12.  P2  :  System(P.M[P])@i
13.  P4  :  System(P.M[P])@i
14.  system-equiv(P.M[P];P2;P4)@i
15.  n  :  \mBbbN{}@i
16.  m  :  \mBbbN{}@i
17.  x  :  Id@i
\mvdash{}  system-equiv(P.M[P];snd(do-chosen-command(nat2msg;loc2msg;t;P2;n;m;x));
                                            snd(do-chosen-command(nat2msg;loc2msg;t;P4;n;m;x)))
\mwedge{}  (do-chosen-command(nat2msg;loc2msg;t;P2;n;m;x)  =  do-chosen-command(nat2msg;loc2msg;t;P4;n;m;x))


By


Latex:
(DVar  `P2'
  THEN  DVar  `P4'
  THEN  RepUR  ``system-equiv``  -4
  THEN  RepUR  ``do-chosen-command``  0
  THEN  RepeatFor  2  (AutoSplit))




Home Index