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