| st[r -- _type] = typeval(ty), same-subclasses-contains(`java.lang.Object' .class, str, str0), junkref(str, r, st), r -- _type ∈ st, ty ≤ mkclasstype(`java.lang.Object' .class), r ∈ st, is_valid_ref(str0, r, st) ⊦ r = jvmref, is_arraytype(ty), junkref(str0, r, st), same-subclasses-contains(ty .class, str, str0), ty .class ≤ `java.lang.Object' .class |
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ ¬ is_classtype(ty) ∧ ¬ is_arraytype(ty) → ¬ ty ≤ mkclasstype (`java.lang.Object' .class)], [CSIMPSEQ : ⊦ is_classtype(mkclasstype(class))], [CSIMPSEQ : ⊦ mkclasstype(class1) ≤ mkclasstype(class2) ↔ class1 ≤ class2], [CSIMPSEQ : ⊦ ¬ is_arraytype(mkclasstype(class))], [CSIMPELIM : ⊦ is_classtype(ty) → ( class = ty .class ↔ ty = mkclasstype(class))])], [EXTRATERMS : (ty, class)]]