{ 
[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) 
 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)))) 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