{ s:SES. es:EO+(Info). e1,e2:E. a:Atom1.
    (ses-flow(s;es;a;e1;e2)
     ((e1 loc e2   (e2 has a))
        (snd:E(Send). (e1 loc snd   (snd < e2)  snd has* a)))) }

{ Proof }



Definitions occuring in Statement :  event-has*: e has* a ses-flow: ses-flow(s;es;a;e1;e2) event-has: (e has a) ses-send: Send ses-info: Info security-event-structure: SES es-E-interface: E(X) event-ordering+: EO+(Info) es-le: e loc e'  es-causl: (e < e') es-E: E all: x:A. B[x] exists: x:A. B[x] implies: P  Q or: P  Q and: P  Q atom: Atom$n
Definitions :  member: t  T security-event-structure: SES equal: s = t dep-isect: Error :dep-isect,  event_ordering: EO ses-info: Info es-E: E function: x:A  B[x] universe: Type top: Top token: "$token" eq_atom: x =a y ifthenelse: if b then t else f fi  atom: Atom subtype_rel: A r B all: x:A. B[x] eq_atom: eq_atom$n(x;y) record-select: r.x record+: record+ event-ordering+: EO+(Info) product: x:A  B[x] apply: f a atom: Atom$n encryption-key: Key sdata: SecurityData void: Void isect: x:A. B[x] ses-encrypt: Encrypt implies: P  Q eclass: EClass(A[eo; e]) es-E-interface: E(X) so_lambda: x y.t[x; y] set: {x:A| B[x]}  assert: b decide: case b of inl(x) =s[x] | inr(y) =t[y] ses-decrypt: Decrypt es-locl: (e <loc e') es-causle: e c e' es-causl: (e < e') and: P  Q not: A union: left + right or: P  Q es-le: e loc e'  event-has*: e has* a prop: ses-key-rel: MatchingKeys(k1;k2) ses-encrypted: plainText(e) ses-decrypted: plainText(e) ses-crypt: cipherText(e) ses-cipher: cipherText(e) cand: A c B false: False pi1: fst(t) infix_ap: x f y rec: rec(x.A[x]) tree: Tree(E) ses-send: Send exists: x:A. B[x] event-has: (e has a) symmetric-key: symmetric-key(a) ses-decryption-key: key(e) limited-type: LimitedType ses-encryption-key: key(e) decidable: Dec(P) iff: P  Q less_than: a < b le: A  B int_seg: {i..j} divides: b | a assoced: a ~ b set_leq: Error :set_leq,  set_lt: Error :set_lt,  grp_lt: Error :grp_lt,  l_all: (xL.P[x]) l_exists: (xL. P[x]) l_member: (x  l) l_contains: A  B inject: Inj(A;B;f) reducible: reducible(a) prime: prime(a) squash: T l_disjoint: l_disjoint(T;l1;l2) nat: fun-connected: y is f*(x) qle: r  s qless: r < s q-rel: q-rel(r;x) list: type List p-outcome: Outcome fset-member: a  s f-subset: xs  ys fset-closed: (s closed under fs) 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 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) unit: Unit 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') ses-action: Action(e) rel_star: R^* class-value-has: X(e) has a bool: strong-subtype: strong-subtype(A;B) IdLnk: IdLnk Knd: Knd Id: Id so_apply: x[s] guard: {T} fpf: a:A fp-B[a] ses-rcv: Rcv eclass-val: X(e) sq_type: SQType(T) in-eclass: e  X true: True isl: isl(x) can-apply: can-apply(f;x) subtype: S  T lambda: x.A[x] so_lambda: so_lambda(x,y,z.t[x; y; z]) ses-flow: ses-flow(s;es;a;e1;e2) pair: <a, b> ses-info-flow: ->> es-p-le: e p e' causal-predecessor: causal-predecessor(es;p) es-p-locl: e pe' es-loc: loc(e) lsrc: source(l) ldst: destination(l) es-interface-val: val(X,e) es-pred: pred(e) alle-between3: e(e1,e2].P[e] btrue: tt rev_implies: P  Q
Lemmas :  event-has*-iff event-has*-transitive-encrypt es-causl_weakening es-le_transitivity es-causle_transitivity es-causl_transitivity1 es-causle-le sdata_sq es-le-loc es-loc-pred false_wf Id_wf es-loc_wf es-causle_weakening es-causle_weakening_locl es-causl_transitivity2 rel_star_weakening rel_star_wf ses-info-flow_wf security-event-structure_wf ses-flow_wf ses-flow-implies eclass-val_wf event-ordering+_inc event-ordering+_wf assert_wf bool_sq assert_elim in-eclass_wf ses-rcv_wf decidable__cand decidable__es-le es-locl_wf es-causle_wf ses-decrypted_wf ses-encrypted_wf ses-cipher_wf ses-key-rel_wf ses-encryption-key_wf not_wf ses-decryption-key_wf symmetric-key_wf ses-crypt_wf event-has_wf ses-send_wf es-le_wf es-causl_wf event-has*_wf ses-decrypt_wf es-E-interface_wf eclass_wf member_wf es-interface-top es-interface-subtype_rel ses-encrypt_wf subtype_rel_wf sdata_wf encryption-key_wf top_wf ses-info_wf es-E_wf subtype_rel_self

\mforall{}s:SES.  \mforall{}es:EO+(Info).  \mforall{}e1,e2:E.  \mforall{}a:Atom1.
    (ses-flow(s;es;a;e1;e2)
    {}\mRightarrow{}  ((e1  \mleq{}loc  e2    \mwedge{}  (e2  has  a))  \mvee{}  (\mexists{}snd:E(Send).  (e1  \mleq{}loc  snd    \mwedge{}  (snd  <  e2)  \mwedge{}  snd  has*  a))))


Date html generated: 2010_08_28-AM-02_08_34
Last ObjectModification: 2010_03_11-PM-12_17_15

Home Index