| ⊦ r ≠ r0 → ((r -- sk) × val ∈ addarray(r0, ty, i, st) ↔ (r -- sk) × val ∈ st) |
⊦ addarray(r, ty, i, st) = addarray(r, initial_value(ty), i, st[r -- _type, typeval(mkarraytype(ty))][r -- _length, intval(i)])
⊦ r ≠ r0 → (r -- sk ∈ addarray(r0, val, i, st) ↔ r -- sk ∈ st)
⊦ r ≠ r0 → (addarray(r, val, i, st)[r0 -- sk]) = st[r0 -- sk]
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ rk × val ∈ st ↔ ¬ ¬ (rk ∈ st ∧ st[rk] = val)], [CSIMPSEQ : ⊦ r ≠ r0 → (st[r0 -- sk0, val][r -- sk]) = st[r -- sk]], [CSIMPSEQ : ⊦ r ≠ r0 → ( r -- sk ∈ st[r0 -- sk0, val] ↔ r -- sk ∈ st)], [CSIMPSEQ : ⊦ rk × val ∈ st ↔ rk ∈ st ∧ st[rk] = val])]]