{ U:Atom  SimpleType. st:SimpleType. x:Atom.
    ((x  st-vars(st))
     ((st-rank(st-subst(U;st_var(x)))  st-rank(st-subst(U;st)))
        ((st_var?(st))
          (st-rank(st-subst(U;st_var(x))) < st-rank(st-subst(U;st)))))) }

{ Proof }



Definitions occuring in Statement :  st-subst: st-subst(subst;st) st-vars: st-vars(st) st-rank: st-rank(st) st_var?: st_var?(x) st_var: st_var(name) simple_type: SimpleType assert: b le: A  B all: x:A. B[x] not: A implies: P  Q and: P  Q less_than: a < b function: x:A  B[x] atom: Atom l_member: (x  l)
Definitions :  simple_type_ind_st_class: simple_type_ind_st_class_compseq_tag_def simple_type_ind_st_list: simple_type_ind_st_list_compseq_tag_def simple_type_ind_st_union: simple_type_ind_st_union_compseq_tag_def simple_type_ind_st_prod: simple_type_ind_st_prod_compseq_tag_def natural_number: $n add: n + m lt_int: i <z j bfalse: ff suptype: suptype(S; T) limited-type: LimitedType btrue: tt eq_int: (i = j) eq_atom: x =a y null: null(as) set_blt: a < b grp_blt: a < b infix_ap: x f y dcdr-to-bool: [d] bl-all: (xL.P[x])_b bl-exists: (xL.P[x])_b b-exists: (i<n.P[i])_b eq_type: eq_type(T;T') eq_atom: eq_atom$n(x;y) qeq: qeq(r;s) q_less: q_less(r;s) q_le: q_le(r;s) deq-member: deq-member(eq;x;L) deq-disjoint: deq-disjoint(eq;as;bs) deq-all-disjoint: deq-all-disjoint(eq;ass;bs) eq_id: a = b eq_lnk: a = b es-eq-E: e = e' es-bless: e <loc e' es-ble: e loc e' bimplies: p  q band: p  q bor: p q le_int: i z j bnot: b unit: Unit bool: imax: imax(a;b) strong-subtype: strong-subtype(A;B) ge: i  j  uiff: uiff(P;Q) cand: A c B atom-deq: AtomDeq simple_type_ind_st_arrow: simple_type_ind_st_arrow_compseq_tag_def simple_type_ind_st_const: simple_type_ind_st_const_compseq_tag_def real: grp_car: |g| subtype: S  T nat: int: void: Void false: False true: True subtype_rel: A r B sq_type: SQType(T) IdLnk: IdLnk Id: Id rationals: apply: f a so_apply: x[s] or: P  Q append: as @ bs guard: {T} locl: locl(a) Knd: Knd uimplies: b supposing a exists: x:A. B[x] iff: P  Q l-union: as  bs list: type List nil: [] cons: [car / cdr] isect: x:A. B[x] uall: [x:A]. B[x] prop: st_var?: st_var?(x) st-rank: st-rank(st) st-vars: st-vars(st) set: {x:A| B[x]}  union: left + right rec: rec(x.A[x]) simple_type_ind_st_var: simple_type_ind_st_var_compseq_tag_def st-subst: st-subst(subst;st) universe: Type equal: s = t member: t  T all: x:A. B[x] and: P  Q product: x:A  B[x] implies: P  Q less_than: a < b not: A assert: b le: A  B l_member: (x  l) atom: Atom simple_type: SimpleType function: x:A  B[x] Auto: Error :Auto,  CollapseTHEN: Error :CollapseTHEN,  Unfold: Error :Unfold,  Try: Error :Try,  ORELSE: Error :ORELSE,  CollapseTHENA: Error :CollapseTHENA,  RepUR: Error :RepUR,  D: Error :D,  RepeatFor: Error :RepeatFor
Lemmas :  member_wf l_member_wf simple_type_wf st-subst_wf nat_wf st-rank_wf le_wf assert_wf bool_wf assert_of_le_int eqtt_to_assert uiff_transitivity member-union st-vars_wf atom-deq_wf l-union_wf nil_member true_wf not_wf false_wf atom_subtype_base subtype_base_sq member_singleton eqff_to_assert assert_functionality_wrt_uiff bnot_of_le_int assert_of_lt_int lt_int_wf bnot_wf le_int_wf

\mforall{}U:Atom  {}\mrightarrow{}  SimpleType.  \mforall{}st:SimpleType.  \mforall{}x:Atom.
    ((x  \mmember{}  st-vars(st))
    {}\mRightarrow{}  ((st-rank(st-subst(U;st\_var(x)))  \mleq{}  st-rank(st-subst(U;st)))
          \mwedge{}  ((\mneg{}\muparrow{}st\_var?(st))  {}\mRightarrow{}  (st-rank(st-subst(U;st\_var(x)))  <  st-rank(st-subst(U;st))))))


Date html generated: 2011_08_17-PM-04_54_31
Last ObjectModification: 2011_02_08-PM-12_16_09

Home Index