| (key0 ∈ ri0 ∧ key0.data? ∧ inodekey(key0.ino) ∈ ks0 ⊃ (∅)[key0];(key0 ∈ ks0 ⊃ (∅)[key0];ri0[key0])) = (key0 ∈ ri1 ∧ key0.data? ∧ inodekey(key0.ino) ∈ ro1 ⊃ (∅)[key0];(key0 ∈ ro1 ⊃ (∅)[key0];ri1[key0])), key0 ∈ ri0 ∧ ¬ key0 ∈ ks0 ∧ (¬ key0.data? ∨ ¬ inodekey(key0.ino) ∈ ks0) ↔ key0 ∈ ri1 ∧ ¬ key0 ∈ ro1 ∧ (¬ key0.data? ∨ ¬ inodekey(key0.ino) ∈ ro1), ks0.inodes?, ro1.inodes?, key ∈ ro1, key ∈ ks0, ks0 ⊆ ro1, ∀ key1. (key1 ∈ ri0 ∧ ¬ key1 ∈ ks0 ∧ (¬ key1.data? ∨ ¬ inodekey(key1.ino) ∈ ks0) ↔ key1 ∈ ri1 ∧ ¬ key1 ∈ ro1 ∧ (¬ key1.data? ∨ ¬ inodekey(key1.ino) ∈ ro1)) ∧ (key1 ∈ ri0 ∧ key1.data? ∧ inodekey(key1.ino) ∈ ks0 ⊃ (∅)[key1];(key1 ∈ ks0 ⊃ (∅)[key1];ri0[key1])) = (key1 ∈ ri1 ∧ key1.data? ∧ inodekey(key1.ino) ∈ ro1 ⊃ (∅)[key1];(key1 ∈ ro1 ⊃ (∅)[key1];ri1[key1])) ⊦ # ro1 = 0, # ks0 = 0, ks0 = ∅, ro1 = ∅, ( key0 ∈ (((ri0 \ datakeys(key, ri0)) -- key) \ (ks0 -- key)) \ datakeys(ks0 -- key, (ri0 \ datakeys(key, ri0)) -- key) ↔ key0 ∈ ri1 ∧ ¬ key0 ∈ ro1 ∧ (¬ key0.data? ∨ ¬ inodekey(key0.ino) ∈ ro1)) ∧ ((((ri0 \ datakeys(key, ri0)) -- key) \ (ks0 -- key)) \ datakeys(ks0 -- key, (ri0 \ datakeys(key, ri0)) -- key))[key0] = (key0 ∈ ri1 ∧ key0.data? ∧ inodekey(key0.ino) ∈ ro1 ⊃ (∅)[key0];(key0 ∈ ro1 ⊃ (∅)[key0];ri1[key0])), key0 ∈ ri0 ∧ ¬ key0 ∈ ks0 ∧ ¬ key0.data? |
(key0 ∈ ri0 ∧ key0.data? ∧ inodekey(key0.ino) ∈ ks0 ⊃ (∅)[key0];(key0 ∈ ks0 ⊃ (∅)[key0];ri0[key0])) = (key0 ∈ ri1 ∧ key0.data? ∧ inodekey(key0.ino) ∈ ro1 ⊃ (∅)[key0];(key0 ∈ ro1 ⊃ (∅)[key0];ri1[key0])), key0 ∈ ri0 ∧ ¬ key0 ∈ ks0 ∧ (¬ key0.data? ∨ ¬ inodekey(key0.ino) ∈ ks0) ↔ key0 ∈ ri1 ∧ ¬ key0 ∈ ro1 ∧ (¬ key0.data? ∨ ¬ inodekey(key0.ino) ∈ ro1), ro1.inodes?, ks0.inodes?, key ∈ ks0, key ∈ ro1, ks0 ⊆ ro1, ∀ key1. (key1 ∈ ri0 ∧ ¬ key1 ∈ ks0 ∧ (¬ key1.data? ∨ ¬ inodekey(key1.ino) ∈ ks0) ↔ key1 ∈ ri1 ∧ ¬ key1 ∈ ro1 ∧ (¬ key1.data? ∨ ¬ inodekey(key1.ino) ∈ ro1)) ∧ (key1 ∈ ri0 ∧ key1.data? ∧ inodekey(key1.ino) ∈ ks0 ⊃ (∅)[key1];(key1 ∈ ks0 ⊃ (∅)[key1];ri0[key1])) = (key1 ∈ ri1 ∧ key1.data? ∧ inodekey(key1.ino) ∈ ro1 ⊃ (∅)[key1];(key1 ∈ ro1 ⊃ (∅)[key1];ri1[key1])) ⊦ # ks0 = 0, # ro1 = 0, ks0 = ∅, ro1 = ∅, key0 ∈ ri0 ∧ ¬ key0 ∈ ks0 ∧ ¬ key0.data?, ( key0 ∈ ri0 ∧ (¬ key0.data? ∨ ¬ key.inode? ∨ key0.ino ≠ key.ino) ∧ ¬ key0 ∈ ks0 ∧ ¬ key0 ∈ datakeys(ks0, (ri0 \ datakeys(key, ri0)) -- key) \ datakeys(key, (ri0 \ datakeys(key, ri0)) -- key) ↔ key0 ∈ ri1 ∧ ¬ key0 ∈ ro1 ∧ (¬ key0.data? ∨ ¬ inodekey(key0.ino) ∈ ro1)) ∧ (key = key0 ⊃ (∅)[key0] ;(key0 ∈ datakeys(ks0, (ri0 \ datakeys(key, ri0)) -- key) \ datakeys(key, (ri0 \ datakeys(key, ri0)) -- key) ⊃ (∅)[key0] ;(key0 ∈ ks0 ⊃ (∅)[key0];(key0 ∈ ri0 ∧ key0.data? ∧ key0.ino = key.ino ⊃ (∅)[key0];ri0[key0])) ) ) = (key0 ∈ ri1 ∧ key0.data? ∧ inodekey(key0.ino) ∈ ro1 ⊃ (∅)[key0];(key0 ∈ ro1 ⊃ (∅)[key0];ri1[key0]))
Used simplifier rules: at-del-ri: ⊦ (ri -- key0)[key1] = (key0 = key1 ⊃ (∅)[key0];ri[key1]);%at-diff-ri: ⊦ (ri \ ks)[key] = (key ∈ ks ⊃ (∅)[key];ri[key]);% ⊦ key ∈ ks ∧ ks.inodes? → key.inode?; (ss)% ⊦ key ∈ ks -- key0 ↔ key ≠ key0 ∧ key ∈ ks; (s)%⊦ key ∈ datakeys(key0, ri) ↔ key ∈ ri ∧ key.data? ∧ key0.inode? ∧ key.ino = key0.ino; (s)% ⊦ key ∈ ri \ ks ↔ key ∈ ri ∧ ¬ key ∈ ks; (ls)% ⊦ key ∈ ri -- key0 ↔ key ≠ key0 ∧ key ∈ ri; (s)% ⊦ datakeys(ks -- key, ri) = datakeys(ks, ri) \ datakeys(key, ri); (s)% ⊦ (ri -- key) \ ks = (ri \ ks) -- key; (s)