| ri-inj(ri) ⊦ #(ri[ks] ∩ range(ri \ ks)) = 0, ∀ adr. adr ∈ ri[ks] ∩ range(ri \ ks) ↔ adr ∈ ∅ |
ri-inj(ri), ri[key] ∈ ri \ ks, key ∈ ri, key ∈ ks ⊦ #(ri[ks] ∩ range(ri \ ks)) = 0, # ks = 0, ks = ∅
Used simplifier rules: lookup-keys: ⊦ adr ∈ ri[ks] ↔ (∃ key. key ∈ ks ∧ key ∈ ri ∧ adr = ri[key]);%size-zero-01: ⊦ ks ≠ ∅ → # ks ≠ 0; (forward) from specification set-basic[node-index]%ne-01: ⊦ key ∈ ks → ks ≠ ∅; (forward) from specification set-basic[node-index]%int-c: ⊦ as ∩ as0 = as0 ∩ as; from specification set-union[node-store]%int-a: ⊦ (as ∩ as0) ∩ as1 = as ∩ as0 ∩ as1; from specification set-union[node-store]% ⊦ adr ∈ range ri ↔ adr ∈ ri; (s)% ⊦ adr ∈ as ∩ as0 ↔ adr ∈ as ∧ adr ∈ as0; (ws)% ⊦ ¬ adr ∈ ∅; (s)