| ∀ key. key ∈ ks → key.dentry? ∧ key.ino = ino, ∀ key. key.dentry? ∧ key.ino = ino → (key ∈ ks ↔ key.name ∈ entries), ∀ ks0, ino, entries. # ks0 < # ks → (∀ key. key ∈ ks0 → key.dentry? ∧ key.ino = ino) ∧ (∀ key. key.dentry? ∧ key.ino = ino → (key ∈ ks0 ↔ key.name ∈ entries)) → # ks0 = # entries ⊦ # ks = # entries, ks = ∅ |
∀ key. key ∈ ks → key.dentry? ∧ key.ino = ino, ∀ key. key.dentry? ∧ key.ino = ino → (key ∈ ks ↔ key.name ∈ entries), ∀ ks0, ino, entries. # ks0 < # ks → (∀ key. key ∈ ks0 → key.dentry? ∧ key.ino = ino) ∧ (∀ key. key.dentry? ∧ key.ino = ino → (key ∈ ks0 ↔ key.name ∈ entries)) → # ks0 = # entries ⊦ # ks = 0, # ks = # entries, ks = ∅
Used simplifier rules: size-zero: ⊦ # ks ≠ 0 → ks ≠ ∅; (forward) from specification set-basic[node-index]%size-zero-01: ⊦ ks ≠ ∅ → # ks ≠ 0; (forward) from specification set-basic[node-index]