| 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, is_referencevalue(refval(r)) ∧ ( refval(r) .refval ≠ jvmref → refval(r) .refval -- _type ∈ (putArray(vals, r, i, addarray(r, byte_type, vals0, st))[r -- _length, intval(j)]) ∧ is_typevalue(putArray(vals, r, i, addarray(r, byte_type, vals0, st))[r -- _length, intval(j)][refval(r) .refval -- _type]) ∧ (putArray(vals, r, i, addarray(r, byte_type, vals0, st))[r -- _length, intval(j)][refval(r) .refval -- _type]) .type ≤ mkarraytype(byte_type)) ∧ (0 ≤ j1 ∧ j1 < j → r -- j1 ' ∈ st ∨ ¬ n→i(# vals0) ≤ j1 ∨ ¬ j1 < i ∧ ¬ i + n→i(# vals) ≤ j1) ∧ (0 ≤ j0 ∧ j0 < j → is_bytevalue(putArray(vals, r, i, addarray(r, byte_type, vals0, st))[r -- j0 '])) |
⊦ r -- _type ∈ addarray(r, ty, vals, st)
⊦ (addarray(r, ty, vals, st)[r -- _type]) = typeval(mkarraytype(ty))
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, (0 ≤ j1 ∧ j1 < j → r -- j1 ' ∈ st ∨ ¬ n→i(# vals0) ≤ j1 ∨ ¬ j1 < i ∧ ¬ i + n→i(# vals) ≤ j1) ∧ (0 ≤ j0 ∧ j0 < j → is_bytevalue(putArray(vals, r, i, addarray(r, byte_type, vals0, st))[r -- j0 ']))
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ byte_type ≤ ty ↔ ty = byte_type], [CSIMPSEQ : ⊦ mkarraytype(ty) ≤ mkarraytype(ty0) ↔ ty ≤ ty0], [CSIMPSEQ : ⊦ typeval(ty) .type = ty], [CSIMPSEQ : ⊦ is_typevalue(typeval(ty))], [CSIMPSEQ : ⊦ (putArray(vals, r, i, st) [r0 -- _type ] ) = st[r0 -- _type]], [CSIMPSEQ : ⊦ (st[r -- _length, val] [r0 -- _type ] ) = st[r0 -- _type]], [CSIMPSEQ : ⊦ rk ∈ putArray(vals, r, i, st) ↔ rk ∈ st ∨ rk .ref = r ∧ is_indexkey(rk .key) ∧ i ≤ rk .key .index ∧ rk .key .index < i + n→i(# vals)], [CSIMPSEQ : sk ≠ sk0 ⊦ r -- sk ∈ st[r -- sk0, val] ↔ r -- sk ∈ st], [CSIMPSEQ : ⊦ _type ≠ _length], [CSIMPSEQ : ⊦ refval(r) .refval = r], [CSIMPSEQ : ⊦ is_referencevalue(refval(r))])]]