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 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 ⌜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. f : 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 : 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. e = 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. f : 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 : 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. e = 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. f : 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 : 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. f : 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 : 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