| contains(str1, mkclasstype(class), mkclasstype(class0)), same-subclasses(class, str, str0), same-subclasses-contains(class, str0, str1), same-subclasses(class, str, str1), contains(str0, mkclasstype(class), mkclasstype(class0)), same-subclasses(class0, str, str0) ⊦ same-subclasses(class0, str, str1) |
⊦ same-subclasses-contains(class, str, str0) ↔ same-subclasses(class, str, str0) ∧ (∀ class0. contains(str0, mkclasstype(class), mkclasstype(class0)) → same-subclasses(class0, str, str0))
contains(str1, mkclasstype(class), mkclasstype(class0)), same-subclasses(class, str, str0), same-subclasses(class, str0, str1) ∧ (∀ class0. contains(str1, mkclasstype(class), mkclasstype(class0)) → same-subclasses(class0, str0, str1)), same-subclasses(class, str, str1), contains(str0, mkclasstype(class), mkclasstype(class0)), same-subclasses(class0, str, str0) ⊦ same-subclasses(class0, str, str1)
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (str1, str0, class)]]