| contains(str, ty2, ty0), ty2 .jtelemtype = mkclasstype(`java.lang.Object' .class), 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 : ([CSIMPSEQ : ⊦ mkarraytype(ty) .jtdims = ty .jtdims + 1], [CSIMPSEQ : ⊦ i→n(i) < i→n(j) ↔ abs(i) < abs(j)], [CSIMPSEQ : ⊦ ¬ i < j ↔ j ≤ i], [CSIMPSEQ : ⊦ abs(i + 1) ≤ abs(i) ↔ i < 0], [CSIMPSEQ : ⊦ ¬ ty .jtdims < 0], [CSIMPSEQ : ⊦ i + j + i0 = (i + j) + i0], [CSIMPSEQ : ⊦ i + j = j + i])], [EXTRATERMS : (ty0, str, ty2)]]