| st[r -- _type] .type = mkclasstype(class), st[r -- fs '] = refval(r1), okbytearray(r1, st), fs ' ∈ instfields(class), is_valid_ref(str, r, st) ⊦ st[r1 -- sk0] = (putByteArray(bytes, r1, st)[r1 -- sk0]), r = r1, r = jvmref, junkref(str, r, st), validrefs(str, r ' + r1 ', mkclasstype(class), st), ∃ refs. refs ≠ [] ∧ refs .first = r ∧ refs .last = r1 ∧ validrefs(str, refs, st[refs .first -- _type] .type, st) |
⊦ is_valid_ref(str, r, st) ↔ is_obj(str, r, st) ∨ is_array(str, r, st)
st[r -- _type] .type = mkclasstype(class), st[r -- fs '] = refval(r1), okbytearray(r1, st), fs ' ∈ instfields(class), is_obj(str, r, st) ∨ is_array(str, r, st) ⊦ st[r1 -- sk0] = (putByteArray(bytes, r1, st)[r1 -- sk0]), r = r1, r = jvmref, junkref(str, r, st), validrefs(str, r ' + r1 ', mkclasstype(class), st), ∃ refs. refs ≠ [] ∧ refs .first = r ∧ refs .last = r1 ∧ validrefs(str, refs, st[refs .first -- _type] .type, st)
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (st, r, str)]]