| ⊦ fs ' = _type, fs ' = _length, r -- fs ' ∈ addarray(r0, vals, 0, st[r0 -- _type, typeval(mkarraytype(ty))][r0 -- _length, intval(n→i(# vals))]) ↔ r -- fs ' ∈ st |
⊦ r -- fs ' ∈ addarray(r0, vals, j, st) ↔ r -- fs ' ∈ st
r -- fs ' ∈ (st[r0 -- _type, typeval(mkarraytype(ty))][r0 -- _length, intval(n→i(# vals))]), r ∈ (st[r0 -- _type, typeval(mkarraytype(ty))][r0 -- _length, intval(n→i(# vals))]) ⊦ fs ' = _type, fs ' = _length, r -- fs ' ∈ st
[[CONCRETESIMPRULES : ([CSIMPFORWARD : ⊦ r -- sk ∈ st → r ∈ st], [CSIMPSEQ : ⊦ r -- sk = r0 -- sk0 ↔ ¬ ¬ (r = r0 ∧ sk = sk0)], [CSIMPSEQ : ⊦ rk ∈ st[rk0, val] ↔ rk = rk0 ∨ rk ∈ st])]]