| unchanged(str, r, st, st0), fits(r, sk ', st0), fits(r, sk ', st), is_valid_ref(str, r, st) ⊦ st[r -- sk] = st0[r -- sk], r = jvmref, junkref(str, r, st), junkref(str, r, st0), (is_classtype(st[r -- _type] .type) → sk ∈ instfields(st[r -- _type] .type .class)) ∧ (is_arraytype(st[r -- _type] .type) → sk = _length ∨ ¬ is_fskey(sk) ∧ ¬ sk .index < 0 ∧ ¬ st[r -- _length] .intval ≤ sk .index) |
⊦ fits(r, sk ', st) ↔ r ≠ jvmref ∧ is_referencevalue(st[r -- sk]) ∧ (is_classtype(st[r -- _type] .type) → sk ∈ instfields(st[r -- _type] .type .class)) ∧ (is_arraytype(st[r -- _type] .type) → is_indexkey(sk) ∧ 0 ≤ sk .index ∧ sk .index < st[r -- _length] .intval)
[[CONCRETESIMPRULES : ([CSIMPNAMEDSEQ : addfuns, , is_valid_ref-array-01, ⊦ is_arraytype (st[r -- _type] .type) ∧ r ≠ jvmref → ( is_valid_ref(str, r, st) ↔ is_array(str, r, st))], [CSIMPNAMEDSEQ : javatype, , diff-01, ⊦ is_arraytype(ty) → ¬ is_classtype(ty)], [CSIMPNAMEDSEQ : storekey, , test-02, ⊦ is_indexkey(sk) → ¬ is_fskey(sk)], [CSIMPNAMEDSEQ : int-abs, , lels-04, ⊦ i ≤ j → (¬ ¬ j < i ↔ false)], [CSIMPNAMEDSEQ : int-abs, , lels-03, ⊦ i < j → (¬ ¬ j ≤ i ↔ false)])], [EXTRATERMS : (st, sk, r)]]