| getarray(r1, i1, i3, st0) = getarray(r2, i2, i3, st0), i2 + i3 ≤ st0[r2 -- _length] .intval, okarray(r2, ty, st0), 0 ≤ i3, 0 ≤ i2, r2 ∈ st0 ⊦ arraycopy(r1, i1, r2, i2, i3, st0) = st0, r2 = jvmref |
⊦ st1 = st2 ↔ (∀ rk. (rk ∈ st1 ↔ rk ∈ st2) ∧ st1[rk] = st2[rk])
getarray(r1, i1, i3, st0) = getarray(r2, i2, i3, st0), i2 + i3 ≤ st0[r2 -- _length] .intval, okarray(r2, ty, st0), 0 ≤ i3, 0 ≤ i2, r2 ∈ st0 ⊦ ∀ rk. (rk ∈ arraycopy(r1, i1, r2, i2, i3, st0) ↔ rk ∈ st0) ∧ (arraycopy(r1, i1, r2, i2, i3, st0)[rk]) = st0[rk], r2 = jvmref
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (st0, arraycopy(r1, i1, r2, i2, i3, st0))]]