| ∀ key. key.dentry? → (key = dentrykey(m, str) ∨ key ∈ ks0 ↔ mklink(key.ino, key.name) = mklink(m, str) ∨ mklink(key.ino, key.name) ∈ ls0), ∀ key0. key0 ∈ ks0 → key0.dentry?, mklink(m0, str0) = mklink(m, str) ∨ mklink(m0, str0) ∈ ls0, dentrykey(m0, str0) = dentrykey(m, str) ∨ dentrykey(m0, str0) ∈ ks0, ∀ ls1, ks. # ls1 < #(ls0 ++ mklink(m, str)) → (∀ key. key ∈ ks → key.dentry?) ∧ (∀ key. key.dentry? → (key ∈ ks ↔ mklink(key.ino, key.name) ∈ ls1)) → # ks = # ls1 ⊦ # ks0 = # ls0, dentrykey(m0, str0) ∈ ks0 ↔ mklink(m0, str0) ∈ ls0, mklink(m, str) ∈ ls0, dentrykey(m, str) ∈ ks0 |
Used simplifier rules: ⊦ mklink(m, str) = mklink(m0, str0) ↔ m = m0 ∧ str = str0; (ws)% ⊦ dentrykey(m, str) = dentrykey(m0, str0) ↔ m = m0 ∧ str = str0; (ws)