| tdname+∃(str, class), is_predefined_class(class), ty ≤ ty3, mkfs(class1, ty3, fieldvar) ' ∈ instfields(ty0 .class), type∃(str, ty), type∃(str, ty0), ty0 .class ≤ class, is_classtype(ty0), ∀ class0. tdname∃(str, class0) ∧ class0 ≤ class → is_predefined_class(class0) ⊦ class = `java.lang.Object' .class, interface∃(str, ty0 .class) |
ty0 = mkclasstype(class2), tdname+∃(str, class), is_predefined_class(class), ty ≤ ty3, mkfs(class1, ty3, fieldvar) ' ∈ instfields(class2), type∃(str, ty), type∃(str, ty0), class2 ≤ class, is_classtype(ty0), ∀ class0. tdname∃(str, class0) ∧ class0 ≤ class → is_predefined_class(class0) ⊦ class = `java.lang.Object' .class, interface∃(str, class2)
[[CONCRETESIMPRULES : ([CSIMPELIM : ⊦ is_classtype(ty) → ( class = ty .class ↔ ty = mkclasstype(class))])], [EXTRATERMS : (ty0, class2)]]