| r0 -- sk ∈ addarray(r0, ty, n→i(# vals) + 1, st) ∨ ¬ is_fskey(sk) ∧ ¬ sk .index ≤ 0 ∧ ¬ n→i(# vals) < sk .index ↔ r0 -- sk ∈ addarray(r0, ty, refval(jvmref) ' + vals, st), is_reftype(ty) ⊦ (putArray(vals, r0, 1, addarray(r0, ty, n→i(# vals) + 1, st))[r0 -- sk]) = (addarray(r0, ty, refval(jvmref) ' + vals, st)[r0 -- sk]) |
⊦ is_fskey(sk) → (putArray(vals, r, i, st)[r -- sk]) = st[r -- sk]
¬ is_fskey(sk), r0 -- sk ∈ addarray(r0, ty, n→i(# vals) + 1, st) ∨ ¬ is_fskey(sk) ∧ ¬ sk .index ≤ 0 ∧ ¬ n→i(# vals) < sk .index ↔ r0 -- sk ∈ addarray(r0, ty, refval(jvmref) ' + vals, st), is_reftype(ty) ⊦ (putArray(vals, r0, 1, addarray(r0, ty, n→i(# vals) + 1, st))[r0 -- sk]) = (addarray(r0, ty, refval(jvmref) ' + vals, st)[r0 -- sk])
is_fskey(sk), r0 -- sk ∈ addarray(r0, ty, n→i(# vals) + 1, st) ∨ ¬ is_fskey(sk) ∧ ¬ sk .index ≤ 0 ∧ ¬ n→i(# vals) < sk .index ↔ r0 -- sk ∈ addarray(r0, ty, refval(jvmref) ' + vals, st), is_reftype(ty) ⊦ (addarray(r0, ty, n→i(# vals) + 1, st)[r0 -- sk]) = (addarray(r0, ty, refval(jvmref) ' + vals, st)[r0 -- sk])
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (sk, addarray(r0, ty, n→i(# vals) + 1, st), 1, r0, vals)]]