| r -- sk ∈ addarray(r, ty, [], st), is_fskey(sk), ∀ st, ty, sk, r, vals0. # vals0 < # [] → (r -- sk ∈ addarray(r, ty, vals0, st) ∧ is_fskey(sk) → sk = _length ∨ sk = _type ∨ r -- sk ∈ st) ⊦ sk = _length, sk = _type, r -- sk ∈ st |
⊦ addarray(r, ty, vals, st) = addarray(r, vals, 0, st[r -- _type, typeval(mkarraytype(ty))][r -- _length, intval(n→i(# vals))])
⊦ addarray(r, [], i, st) = st
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ # [] = 0], [CSIMPSEQ : sk ≠ sk0 ⊦ r -- sk ∈ st[r -- sk0, val] ↔ r -- sk ∈ st], [CSIMPFORWARD : ⊦ r -- sk ∈ st → r ∈ st])], [EXTRATERMS : (st, [], ty, r)]]