| st[r0 -- _type] .type ≤ ty, class+∃(str, st[r0 -- _type] .type .class), is_obj(r0, st) ⊦ ty = mkclasstype(`java.lang.Object' .class), is_arraytype(ty), is_arraytype(st[r0 -- _type] .type), is_abstract(st[r0 -- _type] .type .class), is_valid_ref(r0, putByteArray(bytes, r, i, st)) |
⊦ is_valid_ref(r, st) ↔ is_obj(r, st) ∨ is_array(r, st)
⊦ is_obj(r, putByteArray(bytes, r1, i, st)) ↔ is_obj(r, st)
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (putByteArray(bytes, r, i, st), r0)]]