{ [A1,A2,A3:Type]. [d,d':EqDecider(A3)]. [d2:EqDecider(A2)].
  [f:a:A1 fp-Type]. [g:a:A2 fp-Type]. [x:A3].
    ({g(x)?Top r f(x)?Top supposing f  g}) supposing 
       (strong-subtype(A2;A3) and 
       strong-subtype(A1;A2)) }

{ Proof }



Definitions occuring in Statement :  fpf-sub: f  g fpf-cap: f(x)?z fpf: a:A fp-B[a] subtype_rel: A r B uimplies: b supposing a uall: [x:A]. B[x] top: Top guard: {T} universe: Type deq: EqDecider(T) strong-subtype: strong-subtype(A;B)
Definitions :  so_lambda: x.t[x] all: x:A. B[x] member: t  T so_apply: x[s] implies: P  Q cand: A c B strong-subtype: strong-subtype(A;B) false: False not: A
Lemmas :  subtype_rel_self subtype-fpf3

\mforall{}[A1,A2,A3:Type].  \mforall{}[d,d':EqDecider(A3)].  \mforall{}[d2:EqDecider(A2)].  \mforall{}[f:a:A1  fp->  Type].
\mforall{}[g:a:A2  fp->  Type].  \mforall{}[x:A3].
    (\{g(x)?Top  \msubseteq{}r  f(x)?Top  supposing  f  \msubseteq{}  g\})  supposing 
          (strong-subtype(A2;A3)  and 
          strong-subtype(A1;A2))


Date html generated: 2011_08_10-AM-07_58_07
Last ObjectModification: 2011_06_18-AM-08_18_08

Home Index