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