| i2 + i3 ≤ st0[r2 -- _length] .intval, 0 ≤ i2, i < i3, 0 ≤ i, okarray(r2, int_type, st0), 0 < i3, r2 ∈ st0 ⊦ r1 = r2, r2 = jvmref, (r -- sk ∈ arraycopy(r1, i1, r2, i2, i3, st0[r2 -- (i2 + i) ', val]) ↔ r -- sk ∈ arraycopy(r1, i1, r2, i2, i3, st0)) ∧ (arraycopy(r1, i1, r2, i2, i3, st0[r2 -- (i2 + i) ', val])[r -- sk]) = (arraycopy(r1, i1, r2, i2, i3, st0)[r -- sk]) |
⊦ i2 + i3 ≤ st0[r2 -- _length] .intval ∧ 0 ≤ i2 ∧ i0 < i3 ∧ 0 ≤ i0 ∧ okarray(r2, int_type, st0) ∧ 0 < i3 ∧ r2 ∈ st0 → r1 = r2 ∨ r2 = jvmref ∨ (r -- i ' ∈ arraycopy(r1, i1, r2, i2, i3, st0[r2 -- (i2 + i0) ', val]) ↔ r -- i ' ∈ arraycopy(r1, i1, r2, i2, i3, st0)) ∧ (arraycopy(r1, i1, r2, i2, i3, st0[r2 -- (i2 + i0) ', val])[r -- i ']) = (arraycopy(r1, i1, r2, i2, i3, st0)[r -- i '])
[[CONCRETESIMPRULES : ([CSIMPGEN : storekey generated by ', ';], [CSIMPSEQ : ⊦ r -- fs ' ∈ arraycopy (r1, i1, r2, i2, j, st) ↔ r -- fs ' ∈ st], [CSIMPSEQ : ⊦ r -- fs ' ∈ st[r0 -- i ', val0] ↔ r -- fs ' ∈ st], [CSIMPSEQ : ⊦ (arraycopy(r1, i1, r2, i2, j, st) [r -- fs ' ] ) = st[r -- fs ']], [CSIMPSEQ : ⊦ (st[rk0, val][rk]) = ((rk = rk0 ⊃ val; st[rk]))], [CSIMPSEQ : ⊦ r -- sk = r0 -- sk0 ↔ ¬ ¬ (r = r0 ∧ sk = sk0)], [CSIMPSEQ : ⊦ fs ' ≠ i '])]]