| files[ino] = mkfile(m0, md, m1, content), dirs[ino] = mkdir(m2, md0, m3, m4, entries), dirs[m] = mkdir(0, md1, 0, # subdirs(m, dirs), ∅), links(m, dirs) = ∅, ROOT_INO ∈ dirs, m ∈ dirs, ino ∈ dirs → m3 = # links(ino, dirs) ∧ # links(ino, dirs) ≤ 1 ∧ m2 = # entries ∧ m4 = # subdirs(ino, dirs), ino ∈ dirs ∧ name ∈ entries → entries[name] ∈ dirs ∨ entries[name] ∈ files, ino ∈ files → ¬ ino ∈ dirs ∧ m1 = # links(ino, dirs), ino ∈ dirs ∧ ino ≠ ROOT_INO ∧ links(ino, dirs) = ∅ → entries = ∅ ⊦ m = ROOT_INO, m ∈ files, (ino ≠ m ∧ ino ∈ dirs ∧ ino ≠ ROOT_INO ∧ links(ino, dirs) = ∅ → entries = ∅) ∧ (ino ≠ m ∧ ino ∈ dirs → m3 = # links(ino, dirs) ∧ # links(ino, dirs) ≤ 1 ∧ m2 = # entries ∧ m4 = # subdirs(ino, dirs -- m)) ∧ (ino ≠ m ∧ ino ∈ dirs ∧ name ∈ entries → entries[name] ≠ m ∧ entries[name] ∈ dirs ∨ entries[name] ∈ files) |
dirs[m] = mkdir(0, md1, 0, # subdirs(m, dirs), ∅), dirs[ino] = mkdir(m2, md0, m3, m4, entries), files[ino] = mkfile(m0, md, m1, content), links(m, dirs) = ∅, ino ∈ dirs, m ∈ dirs, ROOT_INO ∈ dirs, ino ∈ dirs ∧ ino ≠ ROOT_INO ∧ links(ino, dirs) = ∅ → entries = ∅, ino ∈ files → ¬ ino ∈ dirs ∧ m1 = # links(ino, dirs), ino ∈ dirs ∧ name ∈ entries → entries[name] ∈ dirs ∨ entries[name] ∈ files, ino ∈ dirs → m3 = # links(ino, dirs) ∧ # links(ino, dirs) ≤ 1 ∧ m2 = # entries ∧ m4 = # subdirs(ino, dirs) ⊦ ino = m, m = ROOT_INO, m ∈ files, m3 = # links(ino, dirs) ∧ # links(ino, dirs) ≤ 1 ∧ m2 = # entries ∧ m4 = # subdirs(ino, dirs -- m)
Used simplifier rules: ⊦ p_ino ∈ dirs ∧ dirs[p_ino] = mkdir(m, md, n, n0, entries) ∧ str ∈ entries → links(entries[str], dirs) ≠ ∅; (s)