{ s:SES
    (ActionsDisjoint
     (es:EO+(Info). A:Id. thr:Thread.
          (Legal(thr)@A
           (a:Atom1. e:Act.
                (e  thr
                 (e has a)
                 ((e':Act. ((e' <loc e)  (e' has a)  e'  thr))
                    (a  UseableAtoms(e))
                    (a = Private(A)))))))) }

{ Proof }



Definitions occuring in Statement :  ses-legal-thread: Legal(thr)@A ses-useable-atoms: UseableAtoms(e) ses-thread-member: e  thr ses-thread: Thread ses-disjoint: ActionsDisjoint event-has: (e has a) ses-act: Act ses-private: Private(A) ses-info: Info security-event-structure: SES event-ordering+: EO+(Info) es-locl: (e <loc e') Id: Id all: x:A. B[x] exists: x:A. B[x] implies: P  Q or: P  Q and: P  Q equal: s = t l_member: (x  l) atom: Atom$n
Definitions :  member: t  T ses-thread: Thread Id: Id ses-legal-thread: Legal(thr)@A atom: Atom$n ses-act: Act ses-thread-member: e  thr event-has: (e has a) l_member: (x  l) not: A ses-disjoint: ActionsDisjoint security-event-structure: SES event-ordering+: EO+(Info) equal: s = t function: x:A  B[x] all: x:A. B[x] ses-private: Private(A) prop: universe: Type limited-type: LimitedType es-E: E set: {x:A| B[x]}  ses-useable-atoms: UseableAtoms(e) union: left + right or: P  Q product: x:A  B[x] false: False implies: P  Q and: P  Q assert: b dep-isect: Error :dep-isect,  eq_atom: x =a y eq_atom: eq_atom$n(x;y) record+: record+ l_all: (xL.P[x]) l_contains: A  B exists: x:A. B[x] class-value-has: X(e) has a less_than: a < b void: Void ses-info: Info ses-used-atoms: UsedAtoms(e) bool: es-locl: (e <loc e') subtype_rel: A r B strong-subtype: strong-subtype(A;B) event_ordering: EO eclass-val: X(e) alle-between3: e(e1,e2].P[e] es-pred: pred(e) es-causl: (e < e') cand: A c B int_seg: {i..j} nat: subtype: S  T top: Top token: "$token" ifthenelse: if b then t else f fi  atom: Atom apply: f a record-select: r.x guard: {T} decidable: Dec(P) rationals: qle: r  s qless: r < s q-rel: q-rel(r;x) p-outcome: Outcome dstype: dstype(TypeNames; d; a) fset-member: a  s f-subset: xs  ys fset: FSet{T} fset-closed: (s closed under fs) string: Error :string,  IdLnk: IdLnk Knd: Knd MaName: MaName l_disjoint: l_disjoint(T;l1;l2) consensus-state3: consensus-state3(T) cs-not-completed: in state s, a has not completed inning i cs-archived: by state s, a archived v in inning i cs-passed: by state s, a passed inning i without archiving a value cs-inning-committed: in state s, inning i has committed v cs-inning-committable: in state s, inning i could commit v  cs-archive-blocked: in state s, ws' blocks ws from archiving v in inning i cs-precondition: state s may consider v in inning i consensus-rcv: consensus-rcv(V;A) infix_ap: x f y es-le: e loc e'  es-causle: e c e' existse-before: e<e'.P[e] existse-le: ee'.P[e] alle-lt: e<e'.P[e] alle-le: ee'.P[e] alle-between1: e[e1,e2).P[e] existse-between1: e[e1,e2).P[e] alle-between2: e[e1,e2].P[e] existse-between2: e[e1,e2].P[e] existse-between3: e(e1,e2].P[e] es-fset-loc: i  locs(s) es-E-interface: E(X) collect-event: collect-event(es;X;n;v.num[v];L.P[L];e) cut-order: a (X;f) b path-goes-thru: x-f*-y thru i es-r-immediate-pred: es-r-immediate-pred(es;R;e';e) same-thread: same-thread(es;p;e;e') inject: Inj(A;B;f) reducible: reducible(a) prime: prime(a) squash: T l_exists: (xL. P[x]) fun-connected: y is f*(x) iff: P  Q le: A  B divides: b | a assoced: a ~ b set_leq: a  b set_lt: a <p b grp_lt: a < b list: type List unit: Unit rev_implies: P  Q true: True sq_stable: SqStable(P) uni_sat: a = !x:T. Q[x] inv_funs: InvFuns(A;B;f;g) eqfun_p: IsEqFun(T;eq) refl: Refl(T;x,y.E[x; y]) sym: Sym(T;x,y.E[x; y]) trans: Trans(T;x,y.E[x; y]) anti_sym: AntiSym(T;x,y.R[x; y]) connex: Connex(T;x,y.R[x; y]) coprime: CoPrime(a,b) ident: Ident(T;op;id) assoc: Assoc(T;op) comm: Comm(T;op) inverse: Inverse(T;op;id;inv) bilinear: BiLinear(T;pl;tm) bilinear_p: IsBilinear(A;B;C;+a;+b;+c;f) action_p: IsAction(A;x;e;S;f) dist_1op_2op_lr: Dist1op2opLR(A;1op;2op) fun_thru_1op: fun_thru_1op(A;B;opa;opb;f) fun_thru_2op: FunThru2op(A;B;opa;opb;f) cancel: Cancel(T;S;op) monot: monot(T;x,y.R[x; y];f) monoid_p: IsMonoid(T;op;id) group_p: IsGroup(T;op;id;inv) monoid_hom_p: IsMonHom{M1,M2}(f) grp_leq: a  b integ_dom_p: IsIntegDom(r) prime_ideal_p: IsPrimeIdeal(R;P) no_repeats: no_repeats(T;l) is_list_splitting: is_list_splitting(T;L;LL;L2;f) is_accum_splitting: is_accum_splitting(T;A;L;LL;L2;f;g;x) req: x = y rnonneg: rnonneg(r) rleq: x  y i-member: r  I partitions: partitions(I;p) fpf-sub: f  g MaAuto: Error :MaAuto,  D: Error :D,  CollapseTHEN: Error :CollapseTHEN,  Auto: Error :Auto,  CollapseTHENA: Error :CollapseTHENA,  ses-action: Action(e) AssertBY: Error :AssertBY,  pair: <a, b> ParallelOp: Error :ParallelOp,  Unfold: Error :Unfold,  select: l[i] length: ||as|| int: lelt: i  j < k natural_number: $n real: from-upto: [n, m) lambda: x.A[x] listp: A List combination: Combination(n;T) map: map(f;as) concat: concat(ll) add: n + m minus: -n subtract: n - m nil: [] cons: [car / cdr] ge: i  j  es-loc: loc(e) sqequal: s ~ t sq_type: SQType(T) isect: x:A. B[x]
Lemmas :  top_wf non_neg_length nat_wf cons_one_one atom_sq atom1_sq guard_wf length_wf_nat int_seg_wf int_seg_properties member_map member-concat ses-used-atoms_wf cons_member concat_wf map_wf le_wf select_wf from-upto_wf length_wf1 not_wf false_wf ses-thread-order member_wf ses-legal-thread_wf ses-thread_wf event-ordering+_wf ses-disjoint_wf security-event-structure_wf sq_stable_from_decidable decidable__ses-action ses-action_wf ses-act-has-atom decidable__or decidable__l_member decidable__atom_equal_1 es-E_wf subtype_rel_self event-ordering+_inc ses-info_wf ses-act_wf ses-thread-member_wf event-has_wf es-causl_wf Id_wf es-locl_wf l_member_wf ses-useable-atoms_wf ses-private_wf

\mforall{}s:SES
    (ActionsDisjoint
    {}\mRightarrow{}  (\mforall{}es:EO+(Info).  \mforall{}A:Id.  \mforall{}thr:Thread.
                (Legal(thr)@A
                {}\mRightarrow{}  (\mforall{}a:Atom1.  \mforall{}e:Act.
                            (e  \mmember{}  thr
                            {}\mRightarrow{}  (e  has  a)
                            {}\mRightarrow{}  ((\mexists{}e':Act.  ((e'  <loc  e)  \mwedge{}  (e'  has  a)  \mwedge{}  e'  \mmember{}  thr))
                                  \mvee{}  (a  \mmember{}  UseableAtoms(e))
                                  \mvee{}  (a  =  Private(A))))))))


Date html generated: 2011_08_17-PM-07_35_50
Last ObjectModification: 2010_09_24-PM-02_42_18

Home Index