{ [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)  PQ)
          (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)))) supposing 
         ((||Cs1|| = ||Cs2||) and 
         (G1 = G2)) 
    supposing Continuous+(P.M[P]) }

{ Proof }



Definitions occuring in Statement :  deliver-msg: deliver-msg(t;m;x;Cs;L),  system-equiv: system-equiv(T.M[T];S1;S2),  pInTransit: pInTransit(P.M[P]),  component: component(P.M[P]),  process-equiv: process-equiv,  pMsg: pMsg(P.M[P]),  ldag: LabeledDAG(T),  Id: Id,  strong-type-continuous: Continuous+(T.F[T]),  select: l[i],  length: ||as||,  int_seg: {i..j},  nat: ,  uimplies: b supposing a,  uall: [x:A]. B[x],  top: Top,  so_apply: x[s],  all: x:A. B[x],  implies: P  Q,  and: P  Q,  function: x:A  B[x],  spread: spread def,  product: x:A  B[x],  list: type List,  natural_number: $n,  int: ,  universe: Type,  equal: s = t
Definitions :  uall: [x:A]. B[x],  uimplies: b supposing a,  strong-type-continuous: Continuous+(T.F[T]),  so_apply: x[s],  all: x:A. B[x],  Id: Id,  component: component(P.M[P]),  length: ||as||,  implies: P  Q,  and: P  Q,  system-equiv: system-equiv(T.M[T];S1;S2),  deliver-msg: deliver-msg(t;m;x;Cs;L),  top: Top,  member: t  T,  ext-eq: A  B,  list_accum: list_accum(x,a.f[x; a];y;l),  deliver-msg-to-comp: deliver-msg-to-comp(t;m;x;S;C),  ycomb: Y,  le: A  B,  not: A,  false: False,  System: System(P.M[P]),  so_lambda: x.t[x],  prop: ,  subtype: S  T,  iff: P  Q,  rev_implies: P  Q,  squash: T,  true: True,  ifthenelse: if b then t else f fi ,  bfalse: ff,  btrue: tt,  cand: A c B,  pi2: snd(t),  int_seg: {i..j},  select: l[i],  process-equiv: process-equiv,  lelt: i  j < k,  le_int: i z j,  bnot: b,  lt_int: i <z j,  pi1: fst(t),  nat: ,  sq_type: SQType(T),  guard: {T},  bool: ,  unit: Unit,  Process-stream: Process-stream(P;msgs),  dataflow-ap: df(a),  hd: hd(l),  tl: tl(l),  decidable: Dec(P),  or: P  Q,  it: ,  Process-apply: Process-apply(P;m)
Lemmas :  nat_wf,  int_seg_wf,  component_wf,  System_wf,  system-equiv_wf,  top_wf,  non_neg_length,  length_wf_nat,  length_wf1,  select_wf,  Process_wf,  select_cons_tl,  process-equiv_wf,  squash_wf,  le_wf,  deliver-msg-to-comp_wf,  subtype_base_sq,  Id_wf,  atom2_subtype_base,  eq_id_wf,  bool_wf,  iff_weakening_uiff,  uiff_transitivity,  assert_wf,  eqtt_to_assert,  assert-eq-id,  not_wf,  bnot_wf,  eqff_to_assert,  assert_of_bnot,  not_functionality_wrt_uiff,  ldag_wf,  pInTransit_wf,  length_cons,  pMsg_wf,  strong-type-continuous_wf,  data-stream-cons,  Process-apply_wf,  pExt_wf,  hd_wf,  ge_wf,  tl_wf,  add-cause_wf,  lg-append_wf_dag,  true_wf,  decidable__equal_int,  int_subtype_base,  Process-stream_wf,  pi1_wf_top,  equal-top,  pi2_wf

\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])


Date html generated: 2011_08_16-PM-06_53_12
Last ObjectModification: 2011_06_18-AM-11_07_41

Home Index