{ [Info,A:Type]. [F:Id  dataflow(Info;bag(A))]. [es:EO+(Info)]. [e:E].
    (Prior(dataflow-set-class(x.F[x])) es e 
    ~ if null(filter(x.0 <z bag-size(x);
                     data-stream(F[loc(e)];map(e.info(e);before(e)))))
    then {}
    else last(filter(x.0 <z bag-size(x);
                     data-stream(F[loc(e)];map(e.info(e);before(e)))))
    fi ) }

{ Proof }



Definitions occuring in Statement :  dataflow-set-class: dataflow-set-class(x.P[x]) primed-class: Prior(X) es-info: info(e) event-ordering+: EO+(Info) es-before: before(e) es-loc: loc(e) es-E: E data-stream: data-stream(P;L) dataflow: dataflow(A;B) Id: Id map: map(f;as) null: null(as) lt_int: i <z j ifthenelse: if b then t else f fi  uall: [x:A]. B[x] so_apply: x[s] apply: f a lambda: x.A[x] function: x:A  B[x] natural_number: $n universe: Type sqequal: s ~ t filter: filter(P;l) last: last(L) bag-size: bag-size(bs) empty-bag: {} bag: bag(T)
Definitions :  l_member: (x  l) rcv: rcv(l,tg) locl: locl(a) Knd: Knd dataflow-ap: df(a) pi2: snd(t) listp: A List combination: Combination(n;T) iterate-dataflow: P*(inputs) es-le-before: loc(e) qabs: |r| dataflow-history-val: dataflow-history-val(es;e;x.P[x]) es-le: e loc e'  es-locl: (e <loc e') es-p-le: e p e' es-causle: e c e' es-p-locl: e pe' causal-predecessor: causal-predecessor(es;p) record: record(x.T[x]) nil: [] cons: [car / cdr] append: as @ bs tl: tl(l) hd: hd(l) quotient: x,y:A//B[x; y] sq_type: SQType(T) data_stream_nil: data_stream_nil{data_stream_nil_compseq_tag_def:o}(P) bfalse: ff btrue: tt eq_bool: p =b q le_int: i z j eq_int: (i = j) set_blt: a < b grp_blt: a < b infix_ap: x f y 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 es-eq-E: e = e' es-bless: e <loc e' es-ble: e loc e' bimplies: p  q band: p  q bor: p q es-first: first(e) bnot: b unit: Unit bool: isect2: T1  T2 b-union: A  B union: left + right fpf-sub: f  g deq: EqDecider(T) ma-state: State(ds) atom: Atom es-base-E: es-base-E(es) token: "$token" fpf-dom: x  dom(f) guard: {T} pair: <a, b> class-program: ClassProgram(T) fpf-cap: f(x)?z strong-subtype: strong-subtype(A;B) and: P  Q uiff: uiff(P;Q) fpf: a:A fp-B[a] es-E-interface: E(X) uimplies: b supposing a subtype_rel: A r B eclass: EClass(A[eo; e]) atom: Atom$n decide: case b of inl(x) =s[x] | inr(y) =t[y] corec: corec(T.F[T]) dep-isect: Error :dep-isect,  eq_atom: x =a y eq_atom: eq_atom$n(x;y) record+: record+ assert: b record-select: r.x primed-class: Prior(X) last: last(L) empty-bag: {} data-stream: data-stream(P;L) bag-size: bag-size(bs) lt_int: i <z j filter: filter(P;l) null: null(as) ifthenelse: if b then t else f fi  top: Top so_apply: x[s] so_lambda: x.t[x] dataflow-set-class: dataflow-set-class(x.P[x]) true: True squash: T es-causl: (e < e') apply: f a limited-type: LimitedType real: grp_car: |g| minus: -n add: n + m subtract: n - m void: Void false: False not: A natural_number: $n prop: le: A  B ge: i  j  int: set: {x:A| B[x]}  less_than: a < b nat: implies: P  Q product: x:A  B[x] exists: x:A. B[x] strongwellfounded: SWellFounded(R[x; y]) subtype: S  T all: x:A. B[x] universe: Type dataflow: dataflow(A;B) bag: bag(T) Id: Id function: x:A  B[x] event-ordering+: EO+(Info) event_ordering: EO es-E: E member: t  T isect: x:A. B[x] uall: [x:A]. B[x] es-pred: pred(e) es-before: before(e) es-info: info(e) lambda: x.A[x] map: map(f;as) list: type List equal: s = t es-loc: loc(e) sqequal: s ~ t
Lemmas :  assert_of_null not_functionality_wrt_uiff append_wf null_wf3 append_is_nil nat_wf es-E_wf ge_wf nat_properties es-causl-swellfnd bag_wf dataflow_wf Id_wf event-ordering+_wf event-ordering+_inc le_wf member_wf es-causl_wf dataflow-set-class_wf primed-class-cases top_wf subtype_rel_wf true_wf squash_wf es-base-E_wf subtype_rel_self dataflow_subtype subtype_rel_bag bool_wf eqtt_to_assert assert_wf not_wf uiff_transitivity eqff_to_assert assert_of_bnot bnot_wf es-first_wf primed-class_wf ifthenelse_wf subtype_base_sq lt_int_wf bool_subtype_base null_wf es-pred_wf es-pred-causl data-stream_wf filter_wf last_wf dataflow-history-val_wf es-loc_wf atom2_subtype_base es-loc-pred es-info_wf es-before_wf map_wf iterate-dataflow_wf map_append_sq data-stream-append filter_append es-before_wf3 es-locl_wf bag-size_wf data-stream-cons last_append subtype_rel_list false_wf dataflow-ap_wf pi2_wf last-cons assert_of_lt_int assert_functionality_wrt_uiff bnot_of_lt_int assert_of_le_int le_int_wf list_subtype_base append-nil filter_wf_top l_member_wf

\mforall{}[Info,A:Type].  \mforall{}[F:Id  {}\mrightarrow{}  dataflow(Info;bag(A))].  \mforall{}[es:EO+(Info)].  \mforall{}[e:E].
    (Prior(dataflow-set-class(x.F[x]))  es  e 
    \msim{}  if  null(filter(\mlambda{}x.0  <z  bag-size(x);data-stream(F[loc(e)];map(\mlambda{}e.info(e);before(e)))))
    then  \{\}
    else  last(filter(\mlambda{}x.0  <z  bag-size(x);data-stream(F[loc(e)];map(\mlambda{}e.info(e);before(e)))))
    fi  )


Date html generated: 2011_08_16-PM-06_13_20
Last ObjectModification: 2011_06_20-AM-01_50_46

Home Index