| ty2 .jtelemtype = mkclasstype(`java.lang.Object' .class), contains(str, mkarraytype(ty2), ty0), type∃(str, ty0), ∀ ty0, str, ty1. i→n(ty1 .jtdims) < i→n(mkarraytype(ty2) .jtdims) → ( contains(str, ty1, ty0) ∧ ty1 .jtelemtype = mkclasstype(`java.lang.Object' .class) → type∃(str, ty0) ∧ (is_classtype(ty0) ∨ is_arraytype(ty0)) ∧ is_arraytype(ty1) ∨ contains(str, mkclasstype(`java.lang.Object' .class), ty0)) ⊦ contains(str, mkclasstype(`java.lang.Object' .class), ty0), is_classtype(ty0), is_arraytype(ty0) |
⊦ contains(str, mkarraytype(ty), ty0) ↔ ty0 ≤ ty ∧ type∃(str, ty) ∧ type∃(str, ty0) ∨ contains(str, ty, ty0)
ty2 .jtelemtype = mkclasstype(`java.lang.Object' .class), ty0 ≤ ty2 ∧ type∃(str, ty2) ∧ type∃(str, ty0) ∨ contains(str, ty2, ty0), type∃(str, ty0), ∀ ty0, str, ty1. i→n(ty1 .jtdims) < i→n(mkarraytype(ty2) .jtdims) → ( contains(str, ty1, ty0) ∧ ty1 .jtelemtype = mkclasstype(`java.lang.Object' .class) → type∃(str, ty0) ∧ (is_classtype(ty0) ∨ is_arraytype(ty0)) ∧ is_arraytype(ty1) ∨ contains(str, mkclasstype(`java.lang.Object' .class), ty0)) ⊦ contains(str, mkclasstype(`java.lang.Object' .class), ty0), is_classtype(ty0), is_arraytype(ty0)
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (ty0, ty2, str)]]