| st[r1 -- _type] = typeval(mkclasstype(class)), r1 ∈ st, is_obj(r1, class, addarray(r0, ty, vals, st)), r1 -- _type ∈ st ⊦ r1 = jvmref, r1 = r0, is_obj(r1, class, st) |
⊦ is_obj(r, class, st) ↔ r ≠ jvmref ∧ (r -- _type) × typeval(mkclasstype(class)) ∈ st ∧ goodfieldsandtypes(r, instfields(class), st)
st[r1 -- _type] = typeval(mkclasstype(class)), r1 ∈ st, r1 ≠ jvmref ∧ (r1 -- _type) × typeval(mkclasstype(class)) ∈ addarray(r0, ty, vals, st) ∧ goodfieldsandtypes(r1, instfields(class), addarray(r0, ty, vals, st)), r1 -- _type ∈ st ⊦ r1 = jvmref, r1 = r0, is_obj(r1, class, st)
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (addarray(r0, ty, vals, st), class, r1)]]