| ∀ sk, r, i, st, r0, val. is_fskey(sk) → addarray(r, vals0, i, st[r0 -- sk, val]) = (addarray(r, vals0, i, st)[r0 -- sk, val]) ⊦ is_fskey(sk) → addarray(r, val + vals0, i, st[r0 -- sk, val0]) = (addarray(r, val + vals0, i, st)[r0 -- sk, val0]) |
⊦ addarray(r, val ' + vals, i, st) = (addarray(r, vals, i + 1, st)[r -- i ', val])
is_fskey(sk), ∀ sk0, r1, i0, st0, r2, val1. ¬ is_indexkey(sk0) → addarray(r1, vals0, i0, st0[r2 -- sk0, val1]) = (addarray(r1, vals0, i0, st0)[r2 -- sk0, val1]) ⊦ (addarray(r, vals0, i + 1, st[r0 -- sk, val0])[r -- i ', val]) = (addarray(r, vals0, i + 1, st)[r -- i ', val][r0 -- sk, val0])
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ ¬ is_fskey(sk) ↔ is_indexkey(sk)], [CSIMPSEQ : ⊦ (vals + vals0) + vals1 = vals + vals0 + vals1], [CSIMPSEQ : ⊦ val + vals = val ' + vals])]]