| ∀ r, st, sk, val. (hasKeys(r, sks0, st[r -- sk, val]) ↔ hasKeys(r, sks0, st)) ∨ sk ∈ sks0 ⊦ hasKeys(r, sk0 + sks0, st[r -- sk, val]) ↔ hasKeys(r, sk0 + sks0, st), sk ∈ sk0 + sks0 |
⊦ hasKeys(r, sks + sks0, st) ↔ hasKeys(r, sks, st) ∧ hasKeys(r, sks0, st)
⊦ hasKeys(r, sk ', st) ↔ r -- sk ∈ st
∀ r, st, sk, val. (hasKeys(r, sks0, st[r -- sk, val]) ↔ hasKeys(r, sks0, st)) ∨ sk ∈ sks0 ⊦ r -- sk0 ∈ st ∧ hasKeys(r, sks0, st[r -- sk, val]) ↔ hasKeys(r, sk0 ' + sks0, st), sk = sk0, sk ∈ sks0
[[CONCRETESIMPRULES : ([CSIMPSEQ : sk ≠ sk0 ⊦ r -- sk ∈ st[r -- sk0, val] ↔ r -- sk ∈ st], [CSIMPSEQ : ⊦ ¬ sk ∈ sk0 ' + sks ↔ sk ≠ sk0 ∧ ¬ sk ∈ sks], [CSIMPSEQ : ⊦ (sks + sks0) + sks1 = sks + sks0 + sks1], [CSIMPSEQ : ⊦ sk + sks = sk ' + sks])]]