| okbytearray(r0, st), validrefnotnull(str, r, ty, st), ∀ r0, st, str, r, ty, i. okbytearray(r0, st) ∧ validrefnotnull(str, r, ty, st) → r = r0 ∨ r = jvmref ∨ validrefnotnull(str, r, ty, putByteArray(bytes0, r0, i, st)) ⊦ okval(byteval(by), st[r0 -- _type] .type .type), r = r0, r = jvmref, validref(str, r, ty, putByteArray(bytes0, r0, i + 1, st)[r0 -- i ', byteval(by)]) |
⊦ okval(val, ty) ↔ is_boolvalue(val) ∧ ty = boolean_type ∨ is_integervalue(val) ∧ ty = int_type ∨ is_shortvalue(val) ∧ ty = short_type ∨ is_bytevalue(val) ∧ ty = byte_type ∨ is_longvalue(val) ∧ ty = long_type ∨ is_floatvalue(val) ∧ ty = float_type ∨ is_doublevalue(val) ∧ ty = double_type ∨ is_charvalue(val) ∧ ty = char_type ∨ is_referencevalue(val) ∧ (is_classtype(ty) ∨ is_arraytype(ty) ∨ ty = void_type)
okbytearray(r0, st), validrefnotnull(str, r, ty, st), ∀ r0, st, str, r, ty, i. okbytearray(r0, st) ∧ validrefnotnull(str, r, ty, st) → r = r0 ∨ r = jvmref ∨ validrefnotnull(str, r, ty, putByteArray(bytes0, r0, i, st)) ⊦ is_boolvalue(byteval(by)) ∧ st[r0 -- _type] .type .type = boolean_type ∨ is_integervalue(byteval(by)) ∧ st[r0 -- _type] .type .type = int_type ∨ is_shortvalue(byteval(by)) ∧ st[r0 -- _type] .type .type = short_type ∨ is_bytevalue(byteval(by)) ∧ st[r0 -- _type] .type .type = byte_type ∨ is_longvalue(byteval(by)) ∧ st[r0 -- _type] .type .type = long_type ∨ is_floatvalue(byteval(by)) ∧ st[r0 -- _type] .type .type = float_type ∨ is_doublevalue(byteval(by)) ∧ st[r0 -- _type] .type .type = double_type ∨ is_charvalue(byteval(by)) ∧ st[r0 -- _type] .type .type = char_type ∨ is_referencevalue(byteval(by)) ∧ (is_classtype(st[r0 -- _type] .type .type) ∨ is_arraytype(st[r0 -- _type] .type .type) ∨ st[r0 -- _type] .type .type = void_type), r = r0, r = jvmref, validref(str, r, ty, putByteArray(bytes0, r0, i + 1, st)[r0 -- i ', byteval(by)])
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (st[r0 -- _type] .type .type, byteval(by))]]