| (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?, datakey(ino, n) ∈ ri0, 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, ((¬ 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, 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 = ∅
Used simplifier rules: ⊦ key ∈ ks ∧ ks.inodes? → key.inode?; (ss) Used formulas: key.inode?