| ⊦ ∀ ino. ROOT_INO ∈ (∅ ++ ROOT_INO)[ROOT_INO, mkdir(0, md, 0, 0, ∅)] ∧ ( ino ∈ (∅ ++ ROOT_INO)[ROOT_INO, mkdir(0, md, 0, 0, ∅)] ∧ ino ≠ ROOT_INO ∧ links(ino, (∅ ++ ROOT_INO)[ROOT_INO, mkdir(0, md, 0, 0, ∅)]) = ∅ → dir-empty(ino, (∅ ++ ROOT_INO)[ROOT_INO, mkdir(0, md, 0, 0, ∅)], ∅)) ∧ ( ino ∈ (∅ ++ ROOT_INO)[ROOT_INO, mkdir(0, md, 0, 0, ∅)] → ¬ ino ∈ ∅ ∧ (∅ ++ ROOT_INO)[ROOT_INO, mkdir(0, md, 0, 0, ∅)][ino].nlink = # links(ino, (∅ ++ ROOT_INO)[ROOT_INO, mkdir(0, md, 0, 0, ∅)]) ∧ (∅ ++ ROOT_INO)[ROOT_INO, mkdir(0, md, 0, 0, ∅)][ino].nlink ≤ 1 ∧ (∅ ++ ROOT_INO)[ROOT_INO, mkdir(0, md, 0, 0, ∅)][ino].size = # (∅ ++ ROOT_INO)[ROOT_INO, mkdir(0, md, 0, 0, ∅)][ino].entries ∧ (∅ ++ ROOT_INO)[ROOT_INO, mkdir(0, md, 0, 0, ∅)][ino].nsubdirs = # subdirs(ino, (∅ ++ ROOT_INO)[ROOT_INO, mkdir(0, md, 0, 0, ∅)])) ∧ ( ino ∈ ∅ → ¬ ino ∈ (∅ ++ ROOT_INO)[ROOT_INO, mkdir(0, md, 0, 0, ∅)] ∧ (∅)[ino].nlink = # links(ino, (∅ ++ ROOT_INO)[ROOT_INO, mkdir(0, md, 0, 0, ∅)])) ∧ (∀ name. ino ∈ (∅ ++ ROOT_INO)[ROOT_INO, mkdir(0, md, 0, 0, ∅)] ∧ name ∈ (∅ ++ ROOT_INO)[ROOT_INO, mkdir(0, md, 0, 0, ∅)][ino].entries → valid-ino((∅ ++ ROOT_INO)[ROOT_INO, mkdir(0, md, 0, 0, ∅)][ino].entries[name], (∅ ++ ROOT_INO)[ROOT_INO, mkdir(0, md, 0, 0, ∅)], ∅)) ∧ (∀ n. ino ∈ ∅ ∧ n ∈ (∅)[ino].content → valid-pagesize(ino, n, ∅)) |
⊦ 0 = # links(ROOT_INO, (∅ ++ ROOT_INO)[ROOT_INO, mkdir(0, md, 0, 0, ∅)]) ∧ 0 = # subdirs(ROOT_INO, (∅ ++ ROOT_INO)[ROOT_INO, mkdir(0, md, 0, 0, ∅)])
Used simplifier rules: ⊦ ¬ str ∈ ∅; (s)% ⊦ mkdir(m, md, m0, m1, entries).nsubdirs = m1; (s)% ⊦ # ∅ = 0; (s)% ⊦ mkdir(m, md, m0, m1, entries).entries = entries; (s)% ⊦ mkdir(m, md, m0, m1, entries).size = m; (s)% ⊦ mkdir(m, md, m0, m1, entries).nlink = m0; (s)% ⊦ dirs[ino, ad][ino0] = (ino0 = ino ∧ ino ∈ dirs ⊃ ad;dirs[ino0]); (s)% ⊦ ¬ ino ∈ ∅; (s)%ino ≠ 0, ¬ ino ∈ dirs ⊦ ino0 ∈ dirs ++ ino ↔ ino0 = ino ∨ ino0 ∈ dirs; (s)% ⊦ ¬ ino ∈ ∅; (s)% ⊦ ROOT_INO ≠ 0; (s)% ⊦ ino ∈ dirs[ino0, ad] ↔ ino ∈ dirs; (s)