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