| (key0 ∈ ri0 ∧ key0.data? ∧ inodekey(key0.ino) ∈ ks0 ⊃ (∅)[key0];(key0 ∈ ks0 ⊃ (∅)[key0];ri0[key0])) = (ri1 ⊖ ro1)[key0], key0 ∈ ri0 ∧ ¬ key0 ∈ ks0 ∧ (¬ key0.data? ∨ ¬ inodekey(key0.ino) ∈ ks0) ↔ key0 ∈ ri1 ⊖ ro1, ro1.inodes?, ks0.inodes?, key ∈ ks0, key ∈ ro1, ks0 ⊆ ro1, ∀ key1. (key1 ∈ ri0 ∧ ¬ key1 ∈ ks0 ∧ (¬ key1.data? ∨ ¬ inodekey(key1.ino) ∈ ks0) ↔ key1 ∈ ri1 ⊖ ro1) ∧ (key1 ∈ ri0 ∧ key1.data? ∧ inodekey(key1.ino) ∈ ks0 ⊃ (∅)[key1];(key1 ∈ ks0 ⊃ (∅)[key1];ri0[key1])) = (ri1 ⊖ ro1)[key1] ⊦ # ks0 = 0, # ro1 = 0, ks0 = ∅, ro1 = ∅, (key0 ∈ ((ri0 \ datakeys(key, ri0)) -- key) ⊖ (ks0 -- key) ↔ key0 ∈ ri1 ⊖ ro1) ∧ (((ri0 \ datakeys(key, ri0)) -- key) ⊖ (ks0 -- key))[key0] = (ri1 ⊖ ro1)[key0], key0 ∈ ri0 ∧ ¬ key0 ∈ ks0 ∧ ¬ key0.data? |
⊦ ri ⊖ ks = (ri \ ks) \ datakeys(ks, ri)
(key0 ∈ ri0 ∧ key0.data? ∧ inodekey(key0.ino) ∈ ks0 ⊃ (∅)[key0];(key0 ∈ ks0 ⊃ (∅)[key0];ri0[key0])) = ((ri1 \ ro1) \ datakeys(ro1, ri1))[key0], key0 ∈ ri0 ∧ ¬ key0 ∈ ks0 ∧ (¬ key0.data? ∨ ¬ inodekey(key0.ino) ∈ ks0) ↔ key0 ∈ (ri1 \ ro1) \ datakeys(ro1, ri1), ks0.inodes?, ro1.inodes?, key ∈ ro1, key ∈ ks0, ks0 ⊆ ro1, ∀ key1. (key1 ∈ ri0 ∧ ¬ key1 ∈ ks0 ∧ (¬ key1.data? ∨ ¬ inodekey(key1.ino) ∈ ks0) ↔ key1 ∈ (ri1 \ ro1) \ datakeys(ro1, ri1)) ∧ (key1 ∈ ri0 ∧ key1.data? ∧ inodekey(key1.ino) ∈ ks0 ⊃ (∅)[key1];(key1 ∈ ks0 ⊃ (∅)[key1];ri0[key1])) = ((ri1 \ ro1) \ datakeys(ro1, ri1))[key1] ⊦ # ro1 = 0, # ks0 = 0, ks0 = ∅, ro1 = ∅, key0 ∈ ri0 ∧ ¬ key0 ∈ ks0 ∧ ¬ key0.data?, (key0 ∈ ((ri0 \ datakeys(key, ri0)) -- key) ⊖ (ks0 -- key) ↔ key0 ∈ (ri1 \ ro1) \ datakeys(ro1, ri1)) ∧ (((ri0 \ datakeys(key, ri0)) -- key) ⊖ (ks0 -- key))[key0] = ((ri1 \ ro1) \ datakeys(ro1, ri1))[key0]
Used terms: ro1, ri1