Nuprl Lemma : mu_ex_v5_ZigZag

es:EO'. m1,m2,init,p1,p2:Id.
  (strong-message-constraint-no-rep-large{i:l}(es;mu_ex_v5_main(init;m1;m2;p1;p2);mu_ex_v5_headers_no_inputs())
   mu_ex_v5_cs-constraint{i:l}(es;m1;m2;init;p1;p2)
   (e:E. p:Id.
        ((  mu_ex_v5_Token()(e)  <p, make-Msg([token];Unit;) mu_ex_v5_main(init;m1;m2;p1;p2)(e))
         (L:E List
              ((last(L) = e)
               <mu_ex_v5_getOtherProc(p1;p2) init, make-Msg([token];Unit;) mu_ex_v5_main(init;m1;m2;p1;p2)(hd(L))
               (e':E
                   ((e'  L)
                    ((  mu_ex_v5_Token()(e')
                       (p:Id. <p, make-Msg([token];Unit;) mu_ex_v5_main(init;m1;m2;p1;p2)(e')))
                       e' c e)))
               (e':E
                   ((  mu_ex_v5_Token()(e')
                     (p:Id. <p, make-Msg([token];Unit;) mu_ex_v5_main(init;m1;m2;p1;p2)(e')))
                    (e' <loc e)
                    (e'  L)))
               (i:||L|| - 1
                   ((  mu_ex_v5_Token()(L[i])
                    (<mu_ex_v5_getOtherProc(p1;p2) loc(L[i + 1]), make-Msg([token];Unit;)
                        mu_ex_v5_main(init;m1;m2;p1;p2)(L[i + 1])
                       (L[i] <loc L[i + 1])))
                    (p:Id
                        (<p, make-Msg([token];Unit;) mu_ex_v5_main(init;m1;m2;p1;p2)(L[i])
                         (  mu_ex_v5_Token()(L[i + 1])  (p = loc(L[i + 1]))  (L[i] < L[i + 1])))))))))))


Proof not projected




Definitions occuring in Statement :  mu_ex_v5_cs-constraint: mu_ex_v5_cs-constraint{i:l}(es;m1;m2;init;p1;p2) mu_ex_v5_headers_no_inputs: mu_ex_v5_headers_no_inputs() mu_ex_v5_main: mu_ex_v5_main(initial_token;m1;m2;proc1;proc2) mu_ex_v5_getOtherProc: mu_ex_v5_getOtherProc(proc1;proc2) mu_ex_v5_Token: mu_ex_v5_Token() make-Msg: make-Msg(hdr;typ;val) strong-message-constraint-no-rep-large: strong-message-constraint-no-rep-large{i:l}(es;X;hdrs) Message: Message classrel: v  X(e) event-ordering+: EO+(Info) es-causle: e c e' es-locl: (e <loc e') es-causl: (e < e') es-loc: loc(e) es-E: E Id: Id select: l[i] hd: hd(l) length: ||as|| int_seg: {i..j} it: all: x:A. B[x] exists: x:A. B[x] squash: T implies: P  Q or: P  Q and: P  Q unit: Unit apply: f a pair: <a, b> product: x:A  B[x] cons: [car / cdr] nil: [] subtract: n - m add: n + m natural_number: $n token: "$token" equal: s = t listp: A List last: last(L) l_member: (x  l)
Definitions :  all: x:A. B[x] implies: P  Q or: P  Q unit: Unit squash: T member: t  T nat: ge: i  j  le: A  B not: A false: False prop: true: True mu_ex_v5_headers_no_inputs: mu_ex_v5_headers_no_inputs() and: P  Q int_seg: {i..j} length: ||as|| select: l[i] name: Name lelt: i  j < k ycomb: Y ifthenelse: if b then t else f fi  le_int: i z j bnot: b lt_int: i <z j btrue: tt bfalse: ff bag: bag(T) top: Top guard: {T} exists: x:A. B[x] so_lambda: x.t[x] listp: A List subtype: S  T last: last(L) assert: b null: null(as) rev_implies: P  Q iff: P  Q so_lambda: x y.t[x; y] label: ...$L... t single-bag: {x} pi2: snd(t) name_eq: name_eq(x;y) so_apply: x[s] name-deq: NameDeq list-deq: list-deq(eq) band: p  q atom-deq: AtomDeq eq_atom: x =a y sub-bag: sub-bag(T;as;bs) pi1: fst(t) bag-member: x  bs uimplies: b supposing a uiff: uiff(P;Q) cand: A c B class-output: class-output(X;es;bg) Id: Id hd: hd(l) append: as @ bs filter: filter(P;l) reduce: reduce(f;k;as) gt: i > j bag-append: as + bs mapfilter: mapfilter(f;P;L) map: map(f;as) mu_ex_v5_Token: mu_ex_v5_Token() es-header: es-header(es;e) msg-has-type: msg-has-type(m;T) make-Msg: make-Msg(hdr;typ;val) msg-header: msg-header(m) mu_ex_v5_getOtherProc: mu_ex_v5_getOtherProc(proc1;proc2) class-le-before: class-le-before(X;es;e) bag-filter: [xb|p[x]] empty-bag: {} classrel: v  X(e) l_disjoint: l_disjoint(T;l1;l2) bag-no-repeats: bag-no-repeats(T;bs) es-locl: (e <loc e') uall: [x:A]. B[x] Accum-loc-class: Accum-loc-class(f;init;X) SM4-class-du: SM4-class-du(init;trX1;trX2;trX3;trX4) mu_ex_v5_State: mu_ex_v5_State(initial_token) disjoint-union-tr: tr1 + tr2 mu_ex_v5_onRequest: mu_ex_v5_onRequest() isl: isl(x) spreadn: spread3 mu_ex_v5_onLeaveCS: mu_ex_v5_onLeaveCS() outr: outr(x) eq_id: a = b eqof: eqof(d) strongwellfounded: SWellFounded(R[x; y]) strong-message-constraint-no-rep-large: strong-message-constraint-no-rep-large{i:l}(es;X;hdrs) delivered-with-headers: delivered-with-headers(hdrs;es;e) deq-member: deq-member(eq;x;L) es-le-before: loc(e) bor: p q rev_uimplies: rev_uimplies(P;Q) sq_type: SQType(T) sq_stable: SqStable(P) so_apply: x[s1;s2] bool: sq_or: a  b deq: EqDecider(T) l_member: (x  l) decidable: Dec(P) es-sv-class: es-sv-class(es;X) es-le: e loc e'  message-constraint: message-constraint{i:l}(es;X;hdrs) es-p-local-pred: es-p-local-pred(es;P) mu_ex_v5_LeaveCS: mu_ex_v5_LeaveCS() mu_ex_v5_UseSR: mu_ex_v5_UseSR() mu_ex_v5_Request: mu_ex_v5_Request() mu_ex_v5_initState: mu_ex_v5_initState(initial_token) it: cons-bag: x.b eclass: EClass(A[eo; e]) bag-map: bag-map(f;bs) !hyp_hide: x
Lemmas :  es-causl-swellfnd event-ordering+_inc Message_wf nat_properties ge_wf less_than_wf nat_wf le_wf es-causl_wf or_wf classrel_wf unit_wf2 mu_ex_v5_Token_wf it_wf Id_wf mu_ex_v5_main_wf make-Msg_wf equal-valueall-type valueall-type_wf equal_wf es-E_wf mu_ex_v5_cs-constraint_wf strong-message-constraint-no-rep-large_wf mu_ex_v5_headers_no_inputs_wf event-ordering+_wf mu_ex_v5_no_repeats_headers_no_inputs strong-message-constraint-no-rep-large-1hdr select_member name_wf mapfilter-append es-before_wf top_wf bor_wf eqof_wf name-deq_wf es-header_wf bfalse_wf l_member_wf mapfilter-singleton assert-name_eq base-noloc-classrel subtype_base_sq bool_wf bool_subtype_base sub-bag-append-left2 bag_wf mapfilter_wf name_eq_wf es-loc_wf es-info_wf assert_wf bag_qinc class-output_wf sub-bag-singleton-left member-class-output member-class-le-before assert_elim sq_stable__equal mu_ex_v5_getOtherProc_wf sq_stable__and es-info-make-Msg mu_ex_v5_Token-ilf es-le_wf and_wf es-locl-trichotomy bag-member_wf es-le-loc mu_ex_v5_closest-send-token2 es-causle_weakening_locl es-causl_transitivity1 append_wf es-locl_wf exists_wf select_wf length_wf int_seg_wf last_wf hd_wf all_wf es-causle_wf length-append assert_of_lt_int non_neg_length length_wf_nat lt_int_wf last_append false_wf select-as-hd squash_wf true_wf eclass_wf select_append length_nil length_wf_nil length_cons lelt_wf listp_properties iff_imp_equal_bool btrue_wf iff_functionality_wrt_iff iff_weakening_uiff member_append cons_member nil_member es-causle_weakening es-causle_weakening_eq sub-bag_wf bag-append_wf bag-filter_wf msg-header_wf pi2_wf subtype_rel_bag bag-filter-append bag-filter-singleton eqtt_to_assert uiff_transitivity bnot_wf not_wf eqff_to_assert assert_of_bnot empty-bag_wf bag-filter-trivial2 filter_wf bag-member-map sq_stable__assert pi1_wf_top bag-member-filter assert_of_bor assert_functionality_wrt_uiff btrue_neq_bfalse eq_id_wf eq_id_self bag-member-list decidable__es-E-equal member-es-before sub-bag-filter2 bag-split es-eq-E_wf bag-extensionality-no-repeats single-bag_wf bag-filter-no-repeats bag-no-repeats-single bag-member-single assert-es-eq-E-2 assert-es-eq-E bag-combine-append-left class-le-before_wf band_wf bag-combine_wf bag-combine-single-left bag-filter-empty-iff assert_of_band assert-bag-null subtype_rel_set_simple bag-member-combine not_functionality_wrt_uiff mu_ex_v5_send-token-unit assert-eq-id atom2_subtype_base mu_ex_v5_send-token-from-same-loc bag-member-filter-set bag-append-empty bag-filter-equal mu_ex_v5_send-token-to-same-loc2 length_zero eq_term_wf msg-type_wf type-valueall-type list-subtype-bag subtype_rel_self mu_ex_v5_tok-dec_wf iff_wf cons-bag_wf member_wf null_wf3 assert_of_null listp-not-nil cons_wf_listp mu_ex_v5_send-token-not-token select-cons le_int_wf assert_of_le_int int_subtype_base select0 last_cons pos_length2 member_singleton bag-map_wf or_functionality_wrt_uiff or_functionality_wrt_iff bnot_thru_band and_functionality_wrt_uiff3 and_functionality_wrt_iff iff_transitivity assert-eq_term assert-deq bool_cases id-deq_wf deq_wf ifthenelse_wf equal-unit msg-body_wf2 map_wf_bag mu_ex_v5_send-single not_functionality_wrt_iff mapfilter-cons eq_term_comm not_over_and decidable__classrel decidable__equal_unit not_over_or set_subtype_base mu_ex_v5_main-single-val decidable__equal_Id bag-filter-combine es-le-before_wf2 bag-combine-filter bag-combine-eq-right bag-size_wf mu_ex_v5_send-at-most-one bag-size-zero bag-size-one bag-only_wf mu_ex_v5_not-send-token bag-member-list-member es-le-before_wf member-es-le-before implies-filter-equal no_repeats_append_iff es-causl_transitivity2 es-causl_irreflexivity no_repeats_cons no_repeats_nil no_repeats_wf int_seg_properties es-causl_weakening no_repeats_singleton l_before_wf member_filter_2 mu_ex_v5_assert-tok-dec last_member es-causle-le es-le_transitivity l_before_filter l_before_append_iff l_before-es-le-before-iff es-locl_transitivity2 es-le_weakening l_before_select event_ordering_wf es-locl_irreflexivity permutation_weakening list_subtype_base atom_subtype_base sub-bag-cancel-right filter-sq name_eq_symmetry map_wf strong-message-constraint-no-rep-large-implies sub-bag-map-equal filter_type sub-bag-no-repeats-iff es-eq_wf no_repeats_filter decidable__l_member sq_stable_from_decidable mu_ex_v5_send-token-received-or-born and_functionality_wrt_uiff2 list-member-bag-member mu_ex_v5_token-between-2sends es-le_weakening_eq es-locl_transitivity1 mu_ex_v5_send-token-state decidable__or pos_length es-first-le hd_member es-first_wf mu_ex_v5_decidable-prior-token mu_ex_v5_initial-send select-append mu_ex_v5_send-token-to-same-loc mu_ex_v5_send-token-had-token primed-class-opt-classrel mu_ex_v5_State_wf mu_ex_v5_initState_wf mu_ex_v5_State-token length_append es-causle_transitivity decidable__es-le decidable__es-locl es-le-not-locl lifting-loc-2_wf rec-combined-loc-class-opt-1_wf primed-class-opt_wf mu_ex_v5_LeaveCS_wf mu_ex_v5_UseSR_wf mu_ex_v5_Request_wf disjoint-union-class_wf uall_wf disjoint-union-tr_wf simple-loc-comb-2-classrel rec-combined-loc-class-opt-1-classrel mu_ex_v5_onRequest_wf mu_ex_v5_onLeaveCS_wf mu_ex_v5_onUseSR_wf mu_ex_v5_onToken_wf disjoint-union-classrel not_assert_elim mu_ex_v5_State-exists

\mforall{}es:EO'.  \mforall{}m1,m2,init,p1,p2:Id.
    (strong-message-constraint-no-rep-large\{i:l\}(es;mu\_ex\_v5\_main(init;m1;m2;p1;p2);...)
    {}\mRightarrow{}  mu\_ex\_v5\_cs-constraint\{i:l\}(es;m1;m2;init;p1;p2)
    {}\mRightarrow{}  (\mforall{}e:E.  \mforall{}p:Id.
                ((\mcdot{}  \mmember{}  mu\_ex\_v5\_Token()(e)
                \mvee{}  <p,  make-Msg([token];Unit;\mcdot{})>  \mmember{}  mu\_ex\_v5\_main(init;m1;m2;p1;p2)(e))
                {}\mRightarrow{}  (\mdownarrow{}\mexists{}L:E  List\msupplus{}
                            ((last(L)  =  e)
                            \mwedge{}  <mu\_ex\_v5\_getOtherProc(p1;p2)  init,  make-Msg([token];Unit;\mcdot{})>  \mmember{}
                                  mu\_ex\_v5\_main(init;m1;m2;p1;p2)(hd(L))
                            \mwedge{}  (\mforall{}e':E
                                      ((e'  \mmember{}  L)
                                      {}\mRightarrow{}  ((\mcdot{}  \mmember{}  mu\_ex\_v5\_Token()(e')
                                            \mvee{}  (\mexists{}p:Id
                                                    <p,  make-Msg([token];Unit;\mcdot{})>  \mmember{}  mu\_ex\_v5\_main(init;m1;m2;p1;p2)(e')))
                                            \mwedge{}  e'  c\mleq{}  e)))
                            \mwedge{}  (\mforall{}e':E
                                      ((\mcdot{}  \mmember{}  mu\_ex\_v5\_Token()(e')
                                        \mvee{}  (\mexists{}p:Id.  <p,  make-Msg([token];Unit;\mcdot{})>  \mmember{}  mu\_ex\_v5\_main(init;m1;m2;p1;p2)(e')))
                                      {}\mRightarrow{}  (e'  <loc  e)
                                      {}\mRightarrow{}  (e'  \mmember{}  L)))
                            \mwedge{}  (\mforall{}i:\mBbbN{}||L||  -  1
                                      ((\mcdot{}  \mmember{}  mu\_ex\_v5\_Token()(L[i])
                                      {}\mRightarrow{}  (<mu\_ex\_v5\_getOtherProc(p1;p2)  loc(L[i  +  1]),  make-Msg([token];Unit;\mcdot{})>  \mmember{}
                                                mu\_ex\_v5\_main(init;m1;m2;p1;p2)(L[i  +  1])
                                            \mwedge{}  (L[i]  <loc  L[i  +  1])))
                                      \mwedge{}  (\mforall{}p:Id
                                                (<p,  make-Msg([token];Unit;\mcdot{})>  \mmember{}  mu\_ex\_v5\_main(init;m1;m2;p1;p2)(L[i])
                                                {}\mRightarrow{}  (\mcdot{}  \mmember{}  mu\_ex\_v5\_Token()(L[i  +  1])
                                                      \mwedge{}  (p  =  loc(L[i  +  1]))
                                                      \mwedge{}  (L[i]  <  L[i  +  1])))))))))))


Date html generated: 2012_02_20-PM-07_05_44
Last ObjectModification: 2012_02_02-PM-03_03_36

Home Index