{ [es:EO]. [P:E  ]. [Q:{e:E| (P e)}   ].
    (eo-restrict(eo-restrict(es;P);Q) = eo-restrict(es;e.((P e)  (Q e)))) }

{ Proof }



Definitions occuring in Statement :  eo-restrict: eo-restrict(eo;P) es-E: E event_ordering: EO band: p  q assert: b bool: uall: [x:A]. B[x] set: {x:A| B[x]}  apply: f a lambda: x.A[x] function: x:A  B[x] equal: s = t
Definitions :  ifthenelse: if b then t else f fi  rec_select_update: rec_select_update{rec_select_update_compseq_tag_def:o}(y; v; x; r) universe: Type prop: pair: <a, b> fpf: a:A fp-B[a] strong-subtype: strong-subtype(A;B) eq_atom: x =a y eq_atom: eq_atom$n(x;y) record-select: r.x infix_ap: x f y dep-isect: Error :dep-isect,  record+: record+ le: A  B ge: i  j  not: A less_than: a < b uimplies: b supposing a product: x:A  B[x] and: P  Q uiff: uiff(P;Q) subtype_rel: A r B all: x:A. B[x] bool: set: {x:A| B[x]}  assert: b es-E: E eo-restrict: eo-restrict(eo;P) lambda: x.A[x] band: p  q apply: f a function: x:A  B[x] event_ordering: EO equal: s = t member: t  T axiom: Ax uall: [x:A]. B[x] isect: x:A. B[x] fpf-dom: x  dom(f) squash: T void: Void so_lambda: x.t[x] atom: Atom list: type List nat: exists: x:A. B[x] Id: Id token: "$token" top: Top record: record(x.T[x]) sq_type: SQType(T) limited-type: LimitedType bfalse: ff btrue: tt eq_bool: p =b q lt_int: i <z j le_int: i z j eq_int: (i = j) null: null(as) set_blt: a < b grp_blt: a < b dcdr-to-bool: [d] bl-all: (xL.P[x])_b bl-exists: (xL.P[x])_b b-exists: (i<n.P[i])_b eq_type: eq_type(T;T') qeq: qeq(r;s) q_less: q_less(r;s) q_le: q_le(r;s) deq-member: deq-member(eq;x;L) deq-disjoint: deq-disjoint(eq;as;bs) deq-all-disjoint: deq-all-disjoint(eq;ass;bs) eq_id: a = b eq_lnk: a = b bimplies: p  q bor: p q bnot: b int: unit: Unit so_apply: x[s] union: left + right or: P  Q guard: {T} l_member: (x  l) true: True false: False decide: case b of inl(x) =s[x] | inr(y) =t[y] es-base-E: es-base-E(es) eo-reset-dom: eo-reset-dom(es;d) iff: P  Q rev_implies: P  Q implies: P  Q es-dom: es-dom(es)
Lemmas :  es-dom_wf ifthenelse_wf false_wf band_wf es-base-E_wf bfalse_wf not_wf bnot_wf assert_of_bnot eqff_to_assert uiff_transitivity eqtt_to_assert true_wf eo-reset-dom-reset-dom rev_implies_wf iff_wf assert_of_band member_wf subtype_rel_wf assert_functionality_wrt_uiff bnot_thru_band assert_of_bor or_functionality_wrt_uiff bor_wf eo-reset-dom_wf top_wf l_member_wf Id_wf record_wf record+_wf Error :dep-isect_wf,  btrue_wf btrue_neq_bfalse assert_elim squash_wf eo-restrict_wf assert_wf es-E_wf bool_wf event_ordering_wf

\mforall{}[es:EO].  \mforall{}[P:E  {}\mrightarrow{}  \mBbbB{}].  \mforall{}[Q:\{e:E|  \muparrow{}(P  e)\}    {}\mrightarrow{}  \mBbbB{}].
    (eo-restrict(eo-restrict(es;P);Q)  =  eo-restrict(es;\mlambda{}e.((P  e)  \mwedge{}\msubb{}  (Q  e))))


Date html generated: 2011_08_16-AM-10_22_33
Last ObjectModification: 2011_01_20-AM-00_47_03

Home Index