| st[r -- _type] .type = mkarraytype(ty), is_array(r, st) ⊦ (rk ∈ addarray(r, ty, getarray(r, st), st) → rk ∈ st) ∧ (addarray(r, ty, getarray(r, st), st)[rk]) = st[rk] |
⊦ rk .ref ≠ r → (addarray(r, ty, vals, st)[rk]) = st[rk]
¬ rk .ref ≠ r, st[r -- _type] .type = mkarraytype(ty), is_array(r, st) ⊦ (rk ∈ addarray(r, ty, getarray(r, st), st) → rk ∈ st) ∧ (addarray(r, ty, getarray(r, st), st)[rk]) = st[rk]
rk .ref ≠ r, st[r -- _type] .type = mkarraytype(ty), is_array(r, st) ⊦ (rk ∈ addarray(r, ty, getarray(r, st), st) → rk ∈ st) ∧ st[rk] = st[rk]
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (rk, st, getarray(r, st), ty, r)]]