| is_fskey(sk), r -- sk ∈ addarray(r, ty, vals, st), ∀ st, ty, sk, r, vals0. # vals0 < # vals → (r -- sk ∈ addarray(r, ty, vals0, st) ∧ is_fskey(sk) → sk = _length ∨ sk = _type ∨ r -- sk ∈ st) ⊦ sk = _type, sk = _length, r -- sk ∈ st |
⊦ vals ≠ [] → addarray(r, ty, vals, st) = (addarray(r, ty, vals .butlast, st)[r -- n→i((# vals) -1) ', vals .last][r -- _length, intval(n→i(# vals))])
¬ vals ≠ [], is_fskey(sk), r -- sk ∈ addarray(r, ty, vals, st), ∀ st, ty, sk, r, vals0. # vals0 < # vals → (r -- sk ∈ addarray(r, ty, vals0, st) ∧ is_fskey(sk) → sk = _length ∨ sk = _type ∨ r -- sk ∈ st) ⊦ sk = _type, sk = _length, r -- sk ∈ st
vals ≠ [], is_fskey(sk), r -- sk ∈ (addarray(r, ty, vals .butlast, st)[r -- n→i((# vals) -1) ', vals .last][r -- _length, intval(n→i(# vals))]), ∀ st, ty, sk, r, vals0. # vals0 < # vals → (r -- sk ∈ addarray(r, ty, vals0, st) ∧ is_fskey(sk) → sk = _length ∨ sk = _type ∨ r -- sk ∈ st) ⊦ sk = _type, sk = _length, r -- sk ∈ st
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (st, vals, ty, r)]]