| (inodekey(ino) ∈ ks0 ⊃ (∅)[datakey(ino, n)];ri0[datakey(ino, n)]) = (datakey(ino, n) ∈ ri1 ∧ inodekey(ino) ∈ ro1 ⊃ (∅)[datakey(ino, n)];ri1[datakey(ino, n)]), ¬ inodekey(ino) ∈ ks0 ↔ datakey(ino, n) ∈ ri1 ∧ ¬ inodekey(ino) ∈ ro1, key.inode?, ks0.inodes?, ro1.inodes?, key ∈ ro1, key ∈ ks0, datakey(ino, n) ∈ ri0, 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, ((¬ key.inode? ∨ ino ≠ key.ino) ∧ inodekey(ino) ∈ ks0 ⊃ (∅)[datakey(ino, n)];(ino = key.ino ⊃ (∅)[datakey(key.ino, n)];ri0[datakey(ino, n)])) = (inodekey(ino) ∈ ks0 ⊃ (∅)[datakey(ino, n)];ri0[datakey(ino, n)]), key = datakey(ino, n), ks0 = ∅, ro1 = ∅ |
(inodekey(ino) ∈ ks0 ⊃ (∅)[datakey(ino, n)];ri0[datakey(ino, n)]) = (datakey(ino, n) ∈ ri1 ∧ inodekey(ino) ∈ ro1 ⊃ (∅)[datakey(ino, n)];ri1[datakey(ino, n)]), ¬ inodekey(ino) ∈ ks0 ↔ datakey(ino, n) ∈ ri1 ∧ ¬ inodekey(ino) ∈ ro1, ks0.inodes?, ro1.inodes?, inodekey(ino0) ∈ ks0, datakey(ino, n) ∈ ri0, inodekey(ino0) ∈ 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])) ⊦ # ro1 = 0, # ks0 = 0, (ino ≠ ino0 ∧ inodekey(ino) ∈ ks0 ⊃ (∅)[datakey(ino, n)];(ino = ino0 ⊃ (∅)[datakey(ino0, n)];ri0[datakey(ino, n)])) = (inodekey(ino) ∈ ks0 ⊃ (∅)[datakey(ino, n)];ri0[datakey(ino, n)]), ks0 = ∅, ro1 = ∅
Used simplifier rules: elim-inode: ⊦ key.inode? ↔ (∃ ino. key = inodekey(ino));%sub-in: ⊦ key ∈ ks ∧ ks ⊆ ks0 → key ∈ ks0; (forward) from specification set-basic[node-index]% ⊦ inodekey(m) ≠ datakey(m0, m1); (s)% ⊦ inodekey(m).ino = m; (s)