Step * of Lemma deliver-msg_functionality

[M:Type ⟶ Type]
  ∀t:ℕ. ∀x:Id. ∀m:pMsg(P.M[P]). ∀G1,G2:LabeledDAG(pInTransit(P.M[P])). ∀Cs1,Cs2:component(P.M[P]) List.
    ((∀k:ℕ||Cs1||. let x,P Cs1[k] in let z,Q Cs2[k] in (x z ∈ Id) ∧ P≡Q)
        (system-equiv(P.M[P];deliver-msg(t;m;x;Cs1;G1);deliver-msg(t;m;x;Cs2;G2))
          ∧ (deliver-msg(t;m;x;Cs1;G1)
            deliver-msg(t;m;x;Cs2;G2)
            ∈ (Top × LabeledDAG(pInTransit(P.M[P])))))) supposing 
       ((||Cs1|| ||Cs2|| ∈ ℤand 
       (G1 G2 ∈ LabeledDAG(pInTransit(P.M[P])))) 
  supposing Continuous+(P.M[P])
BY
((UnivCD THENA Auto)
   THEN Unfold `deliver-msg` 0
   THEN (Assert system-equiv(P.M[P];<[], G1>;<[], G2>) ∧ (<[], G1> = <[], G2> ∈ (Top × LabeledDAG(pInTransit(P.M[P])))) \000CBY
               (Unfold `system-equiv` THEN RW (AddrC [1] (TagC (mk_tag_term 2))) THEN Reduce THEN Auto))⋅
   THEN MoveToConcl (-1)
   THEN (GenConcl ⌜<[], G1> S1 ∈ System(P.M[P])⌝⋅ THENA Auto)
   THEN (GenConcl ⌜<[], G2> S2 ∈ System(P.M[P])⌝⋅ THENA Auto)
   THEN ThinVar `G1'
   THEN ThinVar `G2'
   THEN RepeatFor (MoveToConcl (-1))) }

1
1. [M] Type ⟶ Type
2. Continuous+(P.M[P])
3. : ℕ@i
4. Id@i
5. pMsg(P.M[P])@i
⊢ ∀Cs1,Cs2:component(P.M[P]) List.
    ((||Cs1|| ||Cs2|| ∈ ℤ)
     (∀k:ℕ||Cs1||. let x,P Cs1[k] in let z,Q Cs2[k] in (x z ∈ Id) ∧ P≡Q)
     (∀S1,S2:System(P.M[P]).
          ((system-equiv(P.M[P];S1;S2) ∧ (S1 S2 ∈ (Top × LabeledDAG(pInTransit(P.M[P])))))
           (system-equiv(P.M[P];accumulate (with value and list item C):
                                   deliver-msg-to-comp(t;m;x;S;C)
                                  over list:
                                    Cs1
                                  with starting value:
                                   S1);accumulate (with value and list item C):
                                        deliver-msg-to-comp(t;m;x;S;C)
                                       over list:
                                         Cs2
                                       with starting value:
                                        S2))
             ∧ (accumulate (with value and list item C):
                 deliver-msg-to-comp(t;m;x;S;C)
                over list:
                  Cs1
                with starting value:
                 S1)
               accumulate (with value and list item C):
                  deliver-msg-to-comp(t;m;x;S;C)
                 over list:
                   Cs2
                 with starting value:
                  S2)
               ∈ (Top × LabeledDAG(pInTransit(P.M[P]))))))))


Latex:


Latex:
\mforall{}[M:Type  {}\mrightarrow{}  Type]
    \mforall{}t:\mBbbN{}.  \mforall{}x:Id.  \mforall{}m:pMsg(P.M[P]).  \mforall{}G1,G2:LabeledDAG(pInTransit(P.M[P])).
    \mforall{}Cs1,Cs2:component(P.M[P])  List.
        ((\mforall{}k:\mBbbN{}||Cs1||.  let  x,P  =  Cs1[k]  in  let  z,Q  =  Cs2[k]  in  (x  =  z)  \mwedge{}  P\mequiv{}Q)
              {}\mRightarrow{}  (system-equiv(P.M[P];deliver-msg(t;m;x;Cs1;G1);deliver-msg(t;m;x;Cs2;G2))
                    \mwedge{}  (deliver-msg(t;m;x;Cs1;G1)  =  deliver-msg(t;m;x;Cs2;G2))))  supposing 
              ((||Cs1||  =  ||Cs2||)  and 
              (G1  =  G2)) 
    supposing  Continuous+(P.M[P])


By


Latex:
((UnivCD  THENA  Auto)
  THEN  Unfold  `deliver-msg`  0
  THEN  (Assert  system-equiv(P.M[P];<[],  G1><[],  G2>)  \mwedge{}  (<[],  G1>  =  <[],  G2>)  BY
                          (Unfold  `system-equiv`  0
                            THEN  RW  (AddrC  [1]  (TagC  (mk\_tag\_term  2)))  0
                            THEN  Reduce  0
                            THEN  Auto))\mcdot{}
  THEN  MoveToConcl  (-1)
  THEN  (GenConcl  \mkleeneopen{}<[],  G1>  =  S1\mkleeneclose{}\mcdot{}  THENA  Auto)
  THEN  (GenConcl  \mkleeneopen{}<[],  G2>  =  S2\mkleeneclose{}\mcdot{}  THENA  Auto)
  THEN  ThinVar  `G1'
  THEN  ThinVar  `G2'
  THEN  RepeatFor  6  (MoveToConcl  (-1)))




Home Index