| 0 ≤ n→i(# vals) + i, 0 ≤ j, 0 ≤ i, i ≤ n→i(# vals0), j ≤ n→i(# vals) + i, ∀ val. val ∈ vals ∨ val ∈ vals0 → is_bytevalue(val) ⊦ r = jvmref, okarray(r, byte_type, putArray(vals, r, i, addarray(r, byte_type, vals0, st))[r -- _length, intval(j)]) |
⊦ okarray(r, ty, st) ↔ okreftype(refval(r), mkarraytype(ty), st) ∧ r ≠ jvmref ∧ r -- _length ∈ st ∧ is_integervalue(st[r -- _length]) ∧ 0 ≤ st[r -- _length] .intval ∧ is_arrayref(r, st[r -- _length] .intval, st) ∧ (∀ j. 0 ≤ j ∧ j < st[r -- _length] .intval → oktype(st[r -- j '], ty, st))
0 ≤ n→i(# vals) + i, 0 ≤ j, 0 ≤ i, i ≤ n→i(# vals0), j ≤ n→i(# vals) + i, ∀ val. val ∈ vals ∨ val ∈ vals0 → is_bytevalue(val) ⊦ r = jvmref, okreftype(refval(r), mkarraytype(byte_type), putArray(vals, r, i, addarray(r, byte_type, vals0, st))[r -- _length, intval(j)]) ∧ r ≠ jvmref ∧ r -- _length ∈ (putArray(vals, r, i, addarray(r, byte_type, vals0, st))[r -- _length, intval(j)]) ∧ is_integervalue(putArray(vals, r, i, addarray(r, byte_type, vals0, st))[r -- _length, intval(j)][r -- _length]) ∧ 0 ≤ (putArray(vals, r, i, addarray(r, byte_type, vals0, st))[r -- _length, intval(j)][r -- _length]) .intval ∧ is_arrayref (r, (putArray(vals, r, i, addarray(r, byte_type, vals0, st))[r -- _length, intval(j)][r -- _length]) .intval, putArray(vals, r, i, addarray(r, byte_type, vals0, st))[r -- _length, intval(j)]) ∧ (∀ j0. 0 ≤ j0 ∧ j0 < (putArray(vals, r, i, addarray(r, byte_type, vals0, st))[r -- _length, intval(j)][r -- _length]) .intval → oktype (putArray(vals, r, i, addarray(r, byte_type, vals0, st))[r -- _length, intval(j)][r -- j0 '], byte_type, putArray(vals, r, i, addarray(r, byte_type, vals0, st))[r -- _length, intval(j)]))
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (putArray (vals, r, i, addarray(r, byte_type, vals0, st)) [r -- _length, intval(j) ], byte_type, r)]]