Step * of Lemma CLK-prop2

MsgType:ValueAllType. ∀locs:bag(Id). ∀reply:Id ⟶ MsgType ⟶ (MsgType × Id). ∀f:CLK_headers_type{i:l}(MsgType).
es:EO+(Message(f)). ∀e1,e2:E. ∀clock1,clock2:ℤ.
  ((∀e:E. (↑e ∈b CLK_msg'base(MsgType;f)))
   e1 ⟶ e2
   clock1 ∈ CLK_Clock(MsgType;f)(e1)
   clock2 ∈ CLK_Clock(MsgType;f)(e2)
   clock1 < clock2)
BY
(StartEmlProof
   THEN RepeatFor (MoveToConcl (-1))
   THEN RepeatFor (MoveToConcl (-2))
   THEN CausalInd'
   THEN (UnivCD THENA Auto)
   THEN RecUnfold `es-happened-before` (-3)
   THEN RepUR ``event-caused-by`` (-3)
   THEN DProdsAndUnions
   THEN (Decide ⌜loc(e) loc(e2) ∈ Id⌝⋅ THENA Auto)) }

1
1. MsgType {T:Type| valueall-type(T)} @i'
2. locs bag(Id)@i
3. reply Id ⟶ MsgType ⟶ (MsgType × Id)@i
4. CLK_headers_type{i:l}(MsgType)@i'
5. (f ``CLK msg``) (MsgType × ℤ) ∈ Type
6. f ∈ Name ⟶ Type
7. es EO+(Message(f))@i'
8. e1 E@i
9. ∀e:E. (↑e ∈b CLK_msg'base(MsgType;f))@i
10. e2 E@i
11. ∀e3:E
      ((e3 < e2)
       (∀clock1,clock2:ℤ.
            (e1 ⟶ e3  clock1 ∈ CLK_Clock(MsgType;f)(e1)  clock2 ∈ CLK_Clock(MsgType;f)(e3)  clock1 < clock2)))
12. clock1 : ℤ@i
13. clock2 : ℤ@i
14. E@i
15. (e < e2)@i
16. (loc(e) loc(e2) ∈ Id))
 (∃delay:ℤmake-msg-interface(delay;loc(e2);info(e2)) ∈ CLK_main(MsgType;locs;reply;f)(e))@i
17. e1 ∈ E@i
18. clock1 ∈ CLK_Clock(MsgType;f)(e1)@i
19. clock2 ∈ CLK_Clock(MsgType;f)(e2)@i
20. loc(e) loc(e2) ∈ Id
⊢ clock1 < clock2

2
1. MsgType {T:Type| valueall-type(T)} @i'
2. locs bag(Id)@i
3. reply Id ⟶ MsgType ⟶ (MsgType × Id)@i
4. CLK_headers_type{i:l}(MsgType)@i'
5. (f ``CLK msg``) (MsgType × ℤ) ∈ Type
6. f ∈ Name ⟶ Type
7. es EO+(Message(f))@i'
8. e1 E@i
9. ∀e:E. (↑e ∈b CLK_msg'base(MsgType;f))@i
10. e2 E@i
11. ∀e3:E
      ((e3 < e2)
       (∀clock1,clock2:ℤ.
            (e1 ⟶ e3  clock1 ∈ CLK_Clock(MsgType;f)(e1)  clock2 ∈ CLK_Clock(MsgType;f)(e3)  clock1 < clock2)))
12. clock1 : ℤ@i
13. clock2 : ℤ@i
14. E@i
15. (e < e2)@i
16. (loc(e) loc(e2) ∈ Id))
 (∃delay:ℤmake-msg-interface(delay;loc(e2);info(e2)) ∈ CLK_main(MsgType;locs;reply;f)(e))@i
17. e1 ∈ E@i
18. clock1 ∈ CLK_Clock(MsgType;f)(e1)@i
19. clock2 ∈ CLK_Clock(MsgType;f)(e2)@i
20. ¬(loc(e) loc(e2) ∈ Id)
⊢ clock1 < clock2

3
1. MsgType {T:Type| valueall-type(T)} @i'
2. locs bag(Id)@i
3. reply Id ⟶ MsgType ⟶ (MsgType × Id)@i
4. CLK_headers_type{i:l}(MsgType)@i'
5. (f ``CLK msg``) (MsgType × ℤ) ∈ Type
6. f ∈ Name ⟶ Type
7. es EO+(Message(f))@i'
8. e1 E@i
9. ∀e:E. (↑e ∈b CLK_msg'base(MsgType;f))@i
10. e2 E@i
11. ∀e3:E
      ((e3 < e2)
       (∀clock1,clock2:ℤ.
            (e1 ⟶ e3  clock1 ∈ CLK_Clock(MsgType;f)(e1)  clock2 ∈ CLK_Clock(MsgType;f)(e3)  clock1 < clock2)))
12. clock1 : ℤ@i
13. clock2 : ℤ@i
14. E@i
15. (e < e2)@i
16. (loc(e) loc(e2) ∈ Id))
 (∃delay:ℤmake-msg-interface(delay;loc(e2);info(e2)) ∈ CLK_main(MsgType;locs;reply;f)(e))@i
17. e1 ⟶ e@i
18. clock1 ∈ CLK_Clock(MsgType;f)(e1)@i
19. clock2 ∈ CLK_Clock(MsgType;f)(e2)@i
20. loc(e) loc(e2) ∈ Id
⊢ clock1 < clock2

4
1. MsgType {T:Type| valueall-type(T)} @i'
2. locs bag(Id)@i
3. reply Id ⟶ MsgType ⟶ (MsgType × Id)@i
4. CLK_headers_type{i:l}(MsgType)@i'
5. (f ``CLK msg``) (MsgType × ℤ) ∈ Type
6. f ∈ Name ⟶ Type
7. es EO+(Message(f))@i'
8. e1 E@i
9. ∀e:E. (↑e ∈b CLK_msg'base(MsgType;f))@i
10. e2 E@i
11. ∀e3:E
      ((e3 < e2)
       (∀clock1,clock2:ℤ.
            (e1 ⟶ e3  clock1 ∈ CLK_Clock(MsgType;f)(e1)  clock2 ∈ CLK_Clock(MsgType;f)(e3)  clock1 < clock2)))
12. clock1 : ℤ@i
13. clock2 : ℤ@i
14. E@i
15. (e < e2)@i
16. (loc(e) loc(e2) ∈ Id))
 (∃delay:ℤmake-msg-interface(delay;loc(e2);info(e2)) ∈ CLK_main(MsgType;locs;reply;f)(e))@i
17. e1 ⟶ e@i
18. clock1 ∈ CLK_Clock(MsgType;f)(e1)@i
19. clock2 ∈ CLK_Clock(MsgType;f)(e2)@i
20. ¬(loc(e) loc(e2) ∈ Id)
⊢ clock1 < clock2


Latex:


Latex:
\mforall{}MsgType:ValueAllType.  \mforall{}locs:bag(Id).  \mforall{}reply:Id  {}\mrightarrow{}  MsgType  {}\mrightarrow{}  (MsgType  \mtimes{}  Id).
\mforall{}f:CLK\_headers\_type\{i:l\}(MsgType).  \mforall{}es:EO+(Message(f)).  \mforall{}e1,e2:E.  \mforall{}clock1,clock2:\mBbbZ{}.
    ((\mforall{}e:E.  (\muparrow{}e  \mmember{}\msubb{}  CLK\_msg'base(MsgType;f)))
    {}\mRightarrow{}  e1  {}\mrightarrow{}  e2
    {}\mRightarrow{}  clock1  \mmember{}  CLK\_Clock(MsgType;f)(e1)
    {}\mRightarrow{}  clock2  \mmember{}  CLK\_Clock(MsgType;f)(e2)
    {}\mRightarrow{}  clock1  <  clock2)


By


Latex:
(StartEmlProof
  THEN  RepeatFor  3  (MoveToConcl  (-1))
  THEN  RepeatFor  3  (MoveToConcl  (-2))
  THEN  CausalInd'
  THEN  (UnivCD  THENA  Auto)
  THEN  RecUnfold  `es-happened-before`  (-3)
  THEN  RepUR  ``event-caused-by``  (-3)
  THEN  DProdsAndUnions
  THEN  (Decide  \mkleeneopen{}loc(e)  =  loc(e2)\mkleeneclose{}\mcdot{}  THENA  Auto))




Home Index