{ [X:{j}]. [x:Expression]. [base:val:Atom  X]. [pair:fst:Expression
                                                             snd:Expression
                                                             rec1:X
                                                             rec2:X
                                                             X].
  [apply:fun:Atom  arg:Expression  rec1:X  X].
    (case(x)
     leaf(val) => base[val]
     pair(fst,snd) => rec1,rec2.pair[fst;snd;rec1;rec2]
     fun(arg) => rec1.apply[fun;arg;rec1]  X) }

{ Proof }



Definitions occuring in Statement :  expression_ind: expression_ind,  expression: Expression,  uall: [x:A]. B[x],  so_apply: x[s1;s2;s3;s4],  so_apply: x[s1;s2;s3],  so_apply: x[s],  member: t  T,  function: x:A  B[x],  atom: Atom,  universe: Type
Definitions :  uall: [x:A]. B[x],  expression: Expression,  member: t  T,  expression_ind: expression_ind,  so_apply: x[s],  so_apply: x[s1;s2;s3;s4],  so_apply: x[s1;s2;s3],  type-monotone: Monotone(T.F[T]),  uimplies: b supposing a,  ycomb: Y,  pi1: fst(t),  pi2: snd(t)
Lemmas :  subtype_rel_sum,  subtype_rel_simple_product,  expression_wf

\mforall{}[X:\mBbbU{}\{j\}].  \mforall{}[x:Expression].  \mforall{}[base:val:Atom  {}\mrightarrow{}  X].  \mforall{}[pair:fst:Expression
                                                                                                                    {}\mrightarrow{}  snd:Expression
                                                                                                                    {}\mrightarrow{}  rec1:X
                                                                                                                    {}\mrightarrow{}  rec2:X
                                                                                                                    {}\mrightarrow{}  X].  \mforall{}[apply:fun:Atom
                                                                                                                                                  {}\mrightarrow{}  arg:Expression
                                                                                                                                                  {}\mrightarrow{}  rec1:X
                                                                                                                                                  {}\mrightarrow{}  X].
    (case(x)
      leaf(val)  =>  base[val]
      pair(fst,snd)  =>  rec1,rec2.pair[fst;snd;rec1;rec2]
      fun(arg)  =>  rec1.apply[fun;arg;rec1]  \mmember{}  X)


Date html generated: 2011_08_17-PM-04_33_45
Last ObjectModification: 2011_06_18-AM-11_44_44

Home Index