| fv = sk × val, validFields(r, fv ' + fis0, st), ∀ r, st, r0. validFields(r, fis0, st) → (update(r, fis0, st)[r0 -- _length]) = st[r0 -- _length] ⊦ (update(r, fis0, st)[r -- sk, val][r0 -- _length]) = st[r0 -- _length] |
⊦ validFields(r, (sk × val) ' + fis, st) ↔ validFields(r, fis, st) ∧ sk ≠ _length ∧ sk ≠ _type ∧ r -- sk ∈ st ∧ ¬ sk ∈ fis
validFields(r, fis0, st), r -- sk ∈ st, r ∈ st, ∀ r, st, r0. validFields(r, fis0, st) → (update(r, fis0, st)[r0 -- _length]) = st[r0 -- _length] ⊦ sk = _type, sk = _length, (update(r, fis0, st)[r0 -- _length]) = st[r0 -- _length], sk ∈ fis0
[[CONCRETESIMPRULES : ([CSIMPFORWARD : ⊦ r -- sk ∈ st → r ∈ st], [CSIMPSEQ : ⊦ sk ≠ sk0 → (st[r -- sk, val][r0 -- sk0]) = st[r0 -- sk0]], [CSIMPSEQ : ⊦ (fis + fis0) + fis1 = fis + fis0 + fis1])]]