| tys = [], contains(str0, mkclasstype(class) ' + tys + mkclasstype(class0) '), same-subclasses-contains(class, str, str0), ∀ class0, str0, str, class, tys0. # tys0 < # tys → (same-subclasses-contains(class, str, str0) ∧ contains(str0, mkclasstype(class) ' + tys0 + mkclasstype(class0) ') → tdname+∃(str, class0)) ⊦ tdname+∃(str, class0) |
same-subclasses-contains(class, str, str0), contains(str0, mkclasstype(class) ' + mkclasstype(class0) '), ∀ class0, str0, str, class, tys0. # tys0 < # [] → (same-subclasses-contains(class, str, str0) ∧ contains(str0, mkclasstype(class) ' + tys0 + mkclasstype(class0) ') → tdname+∃(str, class0)) ⊦ tdname+∃(str, class0)
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ (tys + tys0) + tys1 = tys + tys0 + tys1], [CSIMPSEQ : ⊦ [] + tys = tys])]]