{ [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