| st1 = (update(r0, fis, st0)[r0 -- sk, st1[r0 -- sk]]), # st0 = m + 1, st1 -- (r0 -- sk) = update(r0, fis, st0 -- (r0 -- sk)), r0 -- sk ∈ st1, r0 -- sk ∈ st0, r0 ∈ st1, r0 ∈ st0, validFields(r0, fis, st0 -- (r0 -- sk)), validFields(r0, fis, st0), sk ∈ fis, ∀ rk. rk ∈ st0 ↔ rk ∈ st1, ∀ r1, sk. r1 ≠ r0 → st0[r1 -- sk] = st1[r1 -- sk], r0 -- _type ∈ st0 → st0[r0 -- _type] = st1[r0 -- _type], r0 -- _length ∈ st0 → st0[r0 -- _length] = st1[r0 -- _length] ⊦ st0[r0 -- sk] = st1[r0 -- sk], st0 = ∅ |
⊦ validFields(r, fis, st) ↔ unique_al(fis) ∧ ¬ _type ∈ fis ∧ ¬ _length ∈ fis ∧ hasKeys(r, fis .keys, st)
st1 = (update(r0, fis, st0)[r0 -- sk, st1[r0 -- sk]]), # st0 = m + 1, st1 -- (r0 -- sk) = update(r0, fis, st0 -- (r0 -- sk)), r0 -- sk ∈ st1, r0 -- sk ∈ st0, r0 ∈ st1, r0 ∈ st0, unique_al(fis) ∧ ¬ _type ∈ fis ∧ ¬ _length ∈ fis ∧ hasKeys(r0, fis .keys, st0 -- (r0 -- sk)), validFields(r0, fis, st0), sk ∈ fis, ∀ rk. rk ∈ st0 ↔ rk ∈ st1, ∀ r1, sk. r1 ≠ r0 → st0[r1 -- sk] = st1[r1 -- sk], r0 -- _type ∈ st0 → st0[r0 -- _type] = st1[r0 -- _type], r0 -- _length ∈ st0 → st0[r0 -- _length] = st1[r0 -- _length] ⊦ st0[r0 -- sk] = st1[r0 -- sk], st0 = ∅
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (st0 -- (r0 -- sk), fis, r0)]]