{ [Info,A:Type]. [X:EClass(A)]. [Y:EClass(Top)].
    ((X until Y) = xs,ys.if bag-null(ys) then xs else {} fi |X;Prior(Y)|) }

{ Proof }



Definitions occuring in Statement :  simple-comb2: x,y.F[x; y]|X;Y| primed-class: Prior(X) until-class: (X until Y) eclass: EClass(A[eo; e]) ifthenelse: if b then t else f fi  uall: [x:A]. B[x] top: Top universe: Type equal: s = t bag-null: bag-null(bs) empty-bag: {}
Definitions :  Unfold: Error :Unfold,  RepUR: Error :RepUR,  RepeatFor: Error :RepeatFor,  top: Top Repeat: Error :Repeat,  D: Error :D,  ExRepD: Error :ExRepD,  Try: Error :Try,  Complete: Error :Complete,  Auto: Error :Auto,  CollapseTHENA: Error :CollapseTHENA,  CollapseTHEN: Error :CollapseTHEN,  MaAuto: Error :MaAuto,  isect: x:A. B[x] member: t  T function: x:A  B[x] event-ordering+: EO+(Info) event_ordering: EO es-E: E bag: bag(T) uall: [x:A]. B[x] universe: Type equal: s = t eclass: EClass(A[eo; e]) until-class: (X until Y) simple-comb2: x,y.F[x; y]|X;Y| ifthenelse: if b then t else f fi  bag-null: bag-null(bs) empty-bag: {} primed-class: Prior(X) axiom: Ax all: x:A. B[x] subtype_rel: A r B uiff: uiff(P;Q) and: P  Q product: x:A  B[x] uimplies: b supposing a less_than: a < b not: A ge: i  j  le: A  B strong-subtype: strong-subtype(A;B) fpf: a:A fp-B[a] pair: <a, b> subtype: S  T simple-comb: simple-comb(F;Xs) lambda: x.A[x] select: l[i] record+: record+ dep-isect: Error :dep-isect,  eq_atom: eq_atom$n(x;y) eq_atom: x =a y class-pred: class-pred(X;es;e) union: left + right decide: case b of inl(x) =s[x] | inr(y) =t[y] apply: f a so_lambda: x y.t[x; y] bool: assert: b set: {x:A| B[x]}  record-select: r.x inr: inr x  or: P  Q existse-before: e<e'.P[e] alle-lt: e<e'.P[e] exists: x:A. B[x] cand: A c B es-locl: (e <loc e') squash: T sq_type: SQType(T) so_lambda: x.t[x] record: record(x.T[x]) void: Void prop: inl: inl x  es-causl: (e < e') infix_ap: x f y es-le: e loc e'  implies: P  Q unit: Unit int: bnot: b bor: p q band: p  q bimplies: p  q es-ble: e loc e' es-bless: e <loc e' es-eq-E: e = e' eq_lnk: a = b eq_id: a = b name_eq: name_eq(x;y) deq-all-disjoint: deq-all-disjoint(eq;ass;bs) deq-disjoint: deq-disjoint(eq;as;bs) deq-member: deq-member(eq;x;L) q_le: q_le(r;s) q_less: q_less(r;s) qeq: qeq(r;s) eq_type: eq_type(T;T') btrue: tt limited-type: LimitedType bfalse: ff le_int: i z j lt_int: i <z j classrel: v  X(e) Id: Id guard: {T} es-E-interface: E(X) atom: Atom token: "$token" it: natural_number: $n false: False nat: list: type List l_member: (x  l) length: ||as|| ycomb: Y list_ind: list_ind def add: n + m nil: [] subtract: n - m es-base-E: es-base-E(es) true: True permutation: permutation(T;L1;L2) int_seg: {i..j} lelt: i  j < k inject: Inj(A;B;f) permute_list: (L o f) atom_eq: if a=b then c else d atom: Atom$n less: if (a) < (b)  then c  else d quotient: x,y:A//B[x; y] mklist: mklist(n;f) append: as @ bs cons: [car / cdr] primrec: primrec(n;b;c) eq_int: (i = j) int_eq: if a=b  then c  else d Knd: Knd locl: locl(a) so_apply: x[s] rationals: IdLnk: IdLnk es-loc: loc(e) fpf-dom: x  dom(f) eq_knd: a = b in-eclass: e  X intensional-universe: IType rev_uimplies: rev_uimplies(P;Q) bag-member: bag-member(T;x;bs)
Lemmas :  es-locl_wf Id_wf es-loc_wf squash_wf existse-before_wf alle-lt_wf es-le_wf primed-classrel false_wf intensional-universe_wf no-classrel-iff-empty uiff_wf classrel_wf permutation_wf bnot_wf not_functionality_wrt_uiff assert_of_bnot eqff_to_assert not_wf assert-bag-null eqtt_to_assert uiff_transitivity isect_subtype_base set_subtype_base assert_wf union_subtype_base subtype_base_sq class-pred-cases es-interface-top subtype_rel_wf primed-class_wf bag-null_wf bool_wf top_wf class-pred_wf empty-bag_wf event-ordering+_inc member_wf eclass_wf event-ordering+_wf es-E_wf bag_wf ifthenelse_wf

\mforall{}[Info,A:Type].  \mforall{}[X:EClass(A)].  \mforall{}[Y:EClass(Top)].
    ((X  until  Y)  =  \mlambda{}xs,ys.if  bag-null(ys)  then  xs  else  \{\}  fi  |X;Prior(Y)|)


Date html generated: 2011_08_16-PM-05_05_15
Last ObjectModification: 2011_06_17-AM-10_59_48

Home Index