| st[r -- _type] .type = mkarraytype(ty), is_fskey(sk), is_array(r, st) ⊦ sk ≠ _type, (r -- sk ∈ addarray(r, ty, getarray(r, st), st) → r -- sk ∈ st) ∧ (addarray(r, ty, getarray(r, st), st)[r -- sk]) = st[r -- sk] |
⊦ r -- _type ∈ addarray(r, ty, vals, st)
⊦ (addarray(r, ty, vals, st)[r -- _type]) = typeval(mkarraytype(ty))
st[r -- _type] .type = mkarraytype(ty), is_array(r, st), r -- _type ∈ st, r ∈ st ⊦ typeval(mkarraytype(ty)) = st[r -- _type]
[[CONCRETESIMPRULES : ([CSIMPFORWARD : ⊦ r -- sk ∈ st → r ∈ st], [CSIMPSEQ : ⊦ ¬ r -- _type ∈ st → ¬ is_array(r, st)], [CSIMPSEQ : ⊦ ∅[rk] = noval], [CSIMPSEQ : ⊦ ¬ rk ∈ st → st[rk] = ∅[rk]], [CSIMPSEQ : ⊦ is_fskey(_type)])]]