| 0 ≤ j, 0 ≤ i, r0 ∈ st, r ∈ st, i + j ≤ st[r0 -- _length] .intval, okarray(r0, byte_type, st), okarray(r, byte_type, st), ∀ i0, i, r0, st, r, j0. i→n(j0) < i→n(j) → ( okarray(r, byte_type, st) ∧ okarray(r0, byte_type, st) ∧ i + j0 ≤ st[r0 -- _length] .intval ∧ r ∈ st ∧ r0 ∈ st ∧ 0 ≤ i ∧ 0 ≤ j0 → r = jvmref ∨ r0 = jvmref ∨ okarray(r, byte_type, arraycopy(r0, i, r, i0, j0, st))) ⊦ r0 = jvmref, r = jvmref, okarray(r, byte_type, arraycopy(r0, i, r, i0, j, st)) |
⊦ 0 < j → arraycopy(r1, i1, r2, i2, j, st) = arraycopy(r1, i1, r2, i2, j - 1, st[r2 -- (i2 + j - 1) ', st[r1 -- (i1 + j - 1) ']])
0 < j, 0 ≤ j, 0 ≤ i, r0 ∈ st, r ∈ st, i + j ≤ st[r0 -- _length] .intval, okarray(r0, byte_type, st), okarray(r, byte_type, st), ∀ i0, i, r0, st, r, j0. i→n(j0) < i→n(j) → ( okarray(r, byte_type, st) ∧ okarray(r0, byte_type, st) ∧ i + j0 ≤ st[r0 -- _length] .intval ∧ r ∈ st ∧ r0 ∈ st ∧ 0 ≤ i ∧ 0 ≤ j0 → r = jvmref ∨ r0 = jvmref ∨ okarray(r, byte_type, arraycopy(r0, i, r, i0, j0, st))) ⊦ r0 = jvmref, r = jvmref, okarray(r, byte_type, arraycopy(r0, i, r, i0, j - 1, st[r -- (i0 + j - 1) ', st[r0 -- (i + j - 1) ']]))
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ ¬ i < j ↔ j ≤ i], [CSIMPSEQ : ⊦ i ≤ j → (j ≤ i ↔ i = j)], [CSIMPSEQ : ⊦ i + 0 = i], [CSIMPSEQ : ⊦ i + j + i0 = (i + j) + i0], [CSIMPSEQ : ⊦ i + j = j + i], [CSIMPSEQ : ⊦ arraycopy(r1, i1, r2, i2, 0, st) = st], [CSIMPFORWARD : ⊦ i ≤ j ∧ 0 ≤ i → 0 ≤ j])], [EXTRATERMS : (st, j, i0, r, i, r0)]]