{ [X1:{j}]. [x:ClassDerivation]. [base:args:BaseDef  X1].
  [... }

{ Proof }



Definitions occuring in Statement :  classderiv_ind: classderiv_ind classderiv: ClassDerivation base-deriv: BaseDef uall: [x:A]. B[x] so_apply: x[s1;s2;s3;s4;s5] so_apply: x[s1;s2;s3;s4] so_apply: x[s1;s2;s3] so_apply: x[s] unit: Unit member: t  T function: x:A  B[x] universe: Type bag: bag(T)
Definitions :  fpf: a:A fp-B[a] strong-subtype: strong-subtype(A;B) le: A  B ge: i  j  not: A less_than: a < b lambda: x.A[x] tag-by: zT ldag: LabeledDAG(T) labeled-graph: LabeledGraph(T) record+: record+ record: record(x.T[x]) eclass: EClass(A[eo; e]) fset: FSet{T} dataflow: dataflow(A;B) isect2: T1  T2 b-union: A  B rev_implies: P  Q or: P  Q implies: P  Q iff: P  Q uiff: uiff(P;Q) and: P  Q list: type List set: {x:A| B[x]}  top: Top true: True subtype_rel: A r B uimplies: b supposing a type-monotone: Monotone(T.F[T]) product: x:A  B[x] union: left + right rec: rec(x.A[x]) all: x:A. B[x] axiom: Ax so_apply: x[s1;s2;s3;s4;s5] so_apply: x[s1;s2;s3] so_apply: x[s1;s2;s3;s4] apply: f a so_apply: x[s] classderiv_ind: classderiv_ind equal: s = t base-deriv: BaseDef isect: x:A. B[x] uall: [x:A]. B[x] so_lambda: x.t[x] member: t  T prop: bag: bag(T) universe: Type unit: Unit classderiv: ClassDerivation function: x:A  B[x]
Lemmas :  uall_wf classderiv_wf bag_wf member_wf base-deriv_wf unit_wf type-monotone_wf subtype_rel_wf subtype_rel_sum subtype_rel_simple_product subtype_rel_product

\mforall{}[X1:\mBbbU{}\{j\}].  \mforall{}[x:ClassDerivation].  \mforall{}[base:args:BaseDef  {}\mrightarrow{}  X1].  \mforall{}[pair:fst:ClassDerivation
                                                                                                                                          {}\mrightarrow{}  snd:ClassDerivation
                                                                                                                                          {}\mrightarrow{}  rec1:X1
                                                                                                                                          {}\mrightarrow{}  rec2:X1
                                                                                                                                          {}\mrightarrow{}  X1].
\mforall{}[delay:X:ClassDerivation  {}\mrightarrow{}  dummy:Unit  {}\mrightarrow{}  rec1:X1  {}\mrightarrow{}  X1].  \mforall{}[comb:typ:Type
                                                                                                                                    {}\mrightarrow{}  argtype:Type
                                                                                                                                    {}\mrightarrow{}  arg:ClassDerivation
                                                                                                                                    {}\mrightarrow{}  fun:argtype  {}\mrightarrow{}  bag(typ)
                                                                                                                                    {}\mrightarrow{}  rec1:X1
                                                                                                                                    {}\mrightarrow{}  X1].
\mforall{}[reccomb:typ:Type
                    {}\mrightarrow{}  argtype:Type
                    {}\mrightarrow{}  arg:ClassDerivation
                    {}\mrightarrow{}  fun:argtype  {}\mrightarrow{}  bag(typ)  {}\mrightarrow{}  bag(typ)
                    {}\mrightarrow{}  rec1:X1
                    {}\mrightarrow{}  X1].
    (case(x)
      Base(args)=>  base[args]
      pair(fst,snd)  =>  rec1,rec2.pair[fst;snd;rec1;rec2]
      (X)'=>  rec1.delay[X;dummy;rec1]
      fun(arg:argtype):typ=>  rec1.comb[typ;argtype;arg;fun;rec1]
      fun(arg:argtype,  self'):typ=>  rec1.reccomb[typ;argtype;arg;fun;rec1]  \mmember{}  X1)


Date html generated: 2011_08_17-PM-04_23_25
Last ObjectModification: 2011_06_18-AM-11_35_14

Home Index