Step
*
1
1
2
2
1
1
1
1
of Lemma
local-simulation-classrel
1. f : Name ─→ Type
2. Info : Type
3. T : Type
4. X : EClass(T)
5. locs : bag(Id)@i
6. hdr : Name@i
7. hdr encodes Id × Info
8. local-simulation-class(X;locs;hdr) ∈ EClass(T)
9. es : EO+(Message(f))@i'
10. e : E@i
11. LocalClass(X)
12. v : T
13. msg-header(info(e)) = hdr ∈ Name
14. fst(msg-body(info(e))) ↓∈ locs
15. local-simulation-eo(es;e;hdr;locs) ∈ EO+(Info)
16. local-simulation-event(es;e;hdr;locs) ∈ E
17. e1 : E@i
18. local-simulation-event(es;e;hdr;locs) = e1 ∈ E@i
⊢ (X local-simulation-eo(es;e;hdr;locs) e1)
= let Infos = base-process-inputs(loc(e1);hdr;es;e) in
      X list-eo(Infos;loc(e1)) (||Infos|| - 1)
∈ bag(T)
BY
{ ((Assert msg-body(info(e)) ∈ Id × Info BY
          Auto)
   THEN (Assert loc(e1) ~ fst(msg-body(info(e))) BY
               (Auto
                THEN (RevHypSubst (-2) 0 THEN Auto)
                THEN UsingVars [`Info'] (BLemma `local-simulation-event-loc`)
                THEN Auto
                THEN BLemma `assert-has-header-and-in-locs`
                THEN Auto))
   THEN HypSubst' (-1) 0
   THEN (Assert (X local-simulation-eo(es;e;hdr;locs) e1)
               = (X local-simulation-eo(es;e;hdr;locs) local-simulation-event(es;e;hdr;locs))
               ∈ bag(T) BY
               Auto)
   THEN Assert ⌈(X local-simulation-eo(es;e;hdr;locs) local-simulation-event(es;e;hdr;locs))
                = let Infos = base-process-inputs(fst(msg-body(info(e)));hdr;es;e) in
                      X list-eo(Infos;fst(msg-body(info(e)))) (||Infos|| - 1)
                ∈ bag(T)⌉⋅
   THEN Try (Eq)
   THEN ThinVar `e1') }
1
1. f : Name ─→ Type
2. Info : Type
3. T : Type
4. X : EClass(T)
5. locs : bag(Id)@i
6. hdr : Name@i
7. hdr encodes Id × Info
8. local-simulation-class(X;locs;hdr) ∈ EClass(T)
9. es : EO+(Message(f))@i'
10. e : E@i
11. LocalClass(X)
12. v : T
13. msg-header(info(e)) = hdr ∈ Name
14. fst(msg-body(info(e))) ↓∈ locs
15. local-simulation-eo(es;e;hdr;locs) ∈ EO+(Info)
16. local-simulation-event(es;e;hdr;locs) ∈ E
17. msg-body(info(e)) ∈ Id × Info
⊢ (X local-simulation-eo(es;e;hdr;locs) local-simulation-event(es;e;hdr;locs))
= let Infos = base-process-inputs(fst(msg-body(info(e)));hdr;es;e) in
      X list-eo(Infos;fst(msg-body(info(e)))) (||Infos|| - 1)
∈ bag(T)
Latex:
Latex:
1.  f  :  Name  {}\mrightarrow{}  Type
2.  Info  :  Type
3.  T  :  Type
4.  X  :  EClass(T)
5.  locs  :  bag(Id)@i
6.  hdr  :  Name@i
7.  hdr  encodes  Id  \mtimes{}  Info
8.  local-simulation-class(X;locs;hdr)  \mmember{}  EClass(T)
9.  es  :  EO+(Message(f))@i'
10.  e  :  E@i
11.  LocalClass(X)
12.  v  :  T
13.  msg-header(info(e))  =  hdr
14.  fst(msg-body(info(e)))  \mdownarrow{}\mmember{}  locs
15.  local-simulation-eo(es;e;hdr;locs)  \mmember{}  EO+(Info)
16.  local-simulation-event(es;e;hdr;locs)  \mmember{}  E
17.  e1  :  E@i
18.  local-simulation-event(es;e;hdr;locs)  =  e1@i
\mvdash{}  (X  local-simulation-eo(es;e;hdr;locs)  e1)
=  let  Infos  =  base-process-inputs(loc(e1);hdr;es;e)  in
            X  list-eo(Infos;loc(e1))  (||Infos||  -  1)
By
Latex:
((Assert  msg-body(info(e))  \mmember{}  Id  \mtimes{}  Info  BY
                Auto)
  THEN  (Assert  loc(e1)  \msim{}  fst(msg-body(info(e)))  BY
                          (Auto
                            THEN  (RevHypSubst  (-2)  0  THEN  Auto)
                            THEN  UsingVars  [`Info']  (BLemma  `local-simulation-event-loc`)
                            THEN  Auto
                            THEN  BLemma  `assert-has-header-and-in-locs`
                            THEN  Auto))
  THEN  HypSubst'  (-1)  0
  THEN  (Assert  (X  local-simulation-eo(es;e;hdr;locs)  e1)
                          =  (X  local-simulation-eo(es;e;hdr;locs)  local-simulation-event(es;e;hdr;locs))  BY
                          Auto)
  THEN  Assert  \mkleeneopen{}(X  local-simulation-eo(es;e;hdr;locs)  local-simulation-event(es;e;hdr;locs))
                            =  let  Infos  =  base-process-inputs(fst(msg-body(info(e)));hdr;es;e)  in
                                        X  list-eo(Infos;fst(msg-body(info(e))))  (||Infos||  -  1)\mkleeneclose{}\mcdot{}
  THEN  Try  (Eq)
  THEN  ThinVar  `e1')
Home
Index