| st ⊆ st0, r ≠ jvmref ∧ r -- _type ∈ st ∧ is_typevalue(st[r -- _type]) ∧ is_arraytype(st[r -- _type] .type) ∧ okarray(r, st[r -- _type] .type .type, st), i + j ≤ st[r -- _length] .intval, 0 ≤ i ⊦ getarray(r, i, j, st) = getarray(r, i, j, st0), is_arrayref(r, i + j, st) |
⊦ okarray(r, ty, st) → r ≠ jvmref ∧ r ∈ st
⊦ st ⊆ st0 ∧ okarray(r, ty, st) → okarray(r, ty, st0)
⊦ okarray(r, ty, st) ∧ st ⊆ st0 → okarray(r, ty, st0)
r ∈ st, 0 ≤ i, i + j ≤ st[r -- _length] .intval, okarray(r, st[r -- _type] .type .type, st), is_arraytype(st[r -- _type] .type), is_typevalue(st[r -- _type]), r -- _type ∈ st, st ⊆ st0 ⊦ r = jvmref, getarray(r, i, j, st) = getarray(r, i, j, st0), is_arrayref(r, i + j, st)
[[CONCRETESIMPRULES : ([CSIMPFORWARD : ⊦ r -- sk ∈ st → r ∈ st])]]