| same-subclasses(class0, str, str0), same-subclasses(class, str, str0), class0 ≤ class, tdname+∃(str0, class), contains(str0, mkclasstype(class0), mkclasstype(class1)), ∀ class0. contains(str0, mkclasstype(class), mkclasstype(class0)) → same-subclasses(class0, str, str0) ⊦ same-subclasses(class1, str, str0), contains(str0, mkclasstype(class), mkclasstype(class1)) |
⊦ contains(str, ty, ty1) ∧ ty ≤ ty0 ∧ type∃(str, ty0) → contains(str, ty0, ty1)
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ mkclasstype(class1) ≤ mkclasstype(class2) ↔ class1 ≤ class2], [CSIMPSEQ : ⊦ type∃(str, mkclasstype(class)) ↔ tdname+∃(str, class)])], [EXTRATERMS : (str0, mkclasstype(class0), mkclasstype(class1), mkclasstype(class))]]