| same-subclasses(class, str0, str1), ∀ class0. interface∃(str0, class0) ∧ class0 ≤ class → interface∃(str, class0), ∀ class0. class∃(str0, class0) ∧ class0 ≤ class → class∃(str, class0) ⊦ (class∃(str1, class0) ∧ class0 ≤ class → class∃(str, class0)) ∧ (interface∃(str1, class1) ∧ class1 ≤ class → interface∃(str, class1)) |
⊦ 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∃(str1, class0) ∧ class0 ≤ class → class∃(str0, class0)) ∧ (∀ class0. interface∃(str1, class0) ∧ class0 ≤ class → interface∃(str0, class0)), ∀ class0. interface∃(str0, class0) ∧ class0 ≤ class → interface∃(str, class0), ∀ class0. class∃(str0, class0) ∧ class0 ≤ class → class∃(str, class0) ⊦ (class∃(str1, class0) ∧ class0 ≤ class → class∃(str, class0)) ∧ (interface∃(str1, class1) ∧ class1 ≤ class → interface∃(str, class1))
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (str1, str0, class)]]