| class0 ≤ class, same-subclasses(class, str, str0) ⊦ (class∃(str0, class1) ∧ class1 ≤ class0 → class∃(str, class1)) ∧ (interface∃(str0, class2) ∧ class2 ≤ class0 → interface∃(str, class2)) |
⊦ same-subclasses(class, str, str0) ↔ (∀ class0. class∃(str0, class0) ∧ class0 ≤ class → class∃(str, class0)) ∧ (∀ class0. interface∃(str0, class0) ∧ class0 ≤ class → interface∃(str, class0))
class0 ≤ class, (∀ class0. class∃(str0, class0) ∧ class0 ≤ class → class∃(str, class0)) ∧ (∀ class0. interface∃(str0, class0) ∧ class0 ≤ class → interface∃(str, class0)) ⊦ (class∃(str0, class1) ∧ class1 ≤ class0 → class∃(str, class1)) ∧ (interface∃(str0, class2) ∧ class2 ≤ class0 → interface∃(str, class2))
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (str0, str, class)]]