| ⊦ unique_al((sk × val) ' + fis) ∧ ¬ _type ∈ (sk × val) ' + fis ∧ ¬ _length ∈ (sk × val) ' + fis ∧ hasKeys(r, ((sk × val) ' + fis) .keys, st) ↔ validFields(r, fis, st) ∧ sk ≠ _length ∧ sk ≠ _type ∧ r -- sk ∈ st ∧ ¬ sk ∈ fis |
⊦ (fis + fis0) .keys = fis .keys + fis0 .keys
⊦ fv ' .keys = fv .1 '
⊦ hasKeys(r, sks + sks0, st) ↔ hasKeys(r, sks, st) ∧ hasKeys(r, sks0, st)
⊦ hasKeys(r, sk ', st) ↔ r -- sk ∈ st
r -- sk ∈ st, r ∈ st ⊦ unique_al(fis) ∧ _type ≠ sk ∧ ¬ _type ∈ fis ∧ _length ≠ sk ∧ ¬ _length ∈ fis ∧ hasKeys(r, fis .keys, st) ↔ validFields(r, fis, st) ∧ sk ≠ _length ∧ sk ≠ _type, sk ∈ fis
[[CONCRETESIMPRULES : ([CSIMPFORWARD : ⊦ r -- sk ∈ st → r ∈ st], [CSIMPSEQ : ⊦ (sks + sks0) + sks1 = sks + sks0 + sks1], [CSIMPSEQ : ⊦ (sk × val) .1 = sk], [CSIMPSEQ : ⊦ sk ∈ (sk0 × val) ' ↔ sk = sk0], [CSIMPSEQ : ⊦ sk ∈ fis + fis0 ↔ sk ∈ fis ∨ sk ∈ fis0], [CSIMPSEQ : ⊦ (fis + fis0) + fis1 = fis + fis0 + fis1], [CSIMPSEQ : ⊦ unique_al((sk × val) ' + fis) ↔ ¬ sk ∈ fis ∧ unique_al(fis)])]]