| ⊦ is_indexkey(sk), r = r0, ( r1 -- sk ∈ addobj(r0, class, fis, st) ∨ r1 = r ∧ is_indexkey(sk) ∧ i ≤ sk .index ∧ sk .index < i + n→i(# bytes) ↔ r1 -- sk ∈ addobj(r0, class, fis, putByteArray(bytes, r, i, st))) ∧ (putByteArray(bytes, r, i, addobj(r0, class, fis, st))[r1 -- sk]) = (addobj(r0, class, fis, putByteArray(bytes, r, i, st))[r1 -- sk]) |
is_fskey(sk) ⊦ r = r0, ( r1 -- sk ∈ addobj(r0, class, fis, st) ∨ r1 = r ∧ is_indexkey(sk) ∧ i ≤ sk .index ∧ sk .index < i + n→i(# bytes) ↔ r1 -- sk ∈ addobj(r0, class, fis, putByteArray(bytes, r, i, st))) ∧ (addobj(r0, class, fis, st)[r1 -- sk]) = (addobj(r0, class, fis, putByteArray(bytes, r, i, st))[r1 -- sk])
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ is_fskey(sk) → (putByteArray(bytes, r, i, st) [r0 -- sk ] ) = st[r0 -- sk]], [CSIMPSEQ : ⊦ ¬ is_indexkey(sk) ↔ is_fskey(sk)])]]