| dirs[m] = mkdir(0, md1, 0, # subdirs(m, dirs), ∅), dirs[ino] = mkdir(# entries, md0, # links(ino, dirs), # subdirs(ino, dirs), entries), files[ino] = mkfile(m0, md, m1, content), links(m, dirs) = ∅, ino ∈ dirs, m ∈ dirs, ROOT_INO ∈ dirs, # links(ino, dirs) ≤ 1, ino ≠ ROOT_INO ∧ links(ino, dirs) = ∅ → entries = ∅, name ∈ entries → entries[name] ∈ dirs ∨ entries[name] ∈ files ⊦ # subdirs(ino, dirs) = # subdirs(ino, dirs -- m), ino = m, m = ROOT_INO, ino ∈ files, m ∈ files |
∀ str. str ∈ strings ↔ str ∈ strings0 ⊦ # strings = # strings0 ↔ true
Used simplifier rules: ⊦ str ∈ subdirs(ino, dirs) ↔ ino ∈ dirs ∧ str ∈ dirs[ino].entries ∧ dirs[ino].entries[str] ∈ dirs; (s)% ⊦ ino ∈ dirs -- ino0 ↔ ino ≠ ino0 ∧ ino ∈ dirs; (s)%ino ∈ dirs ⊦ ino ≠ ino0 → (dirs -- ino0)[ino] = dirs[ino]; (s)% ⊦ mkdir(m, md, m0, m1, entries).entries = entries; (s)%⊦ p_ino ∈ dirs ∧ dirs[p_ino] = mkdir(m, md, n, n0, entries) ∧ str ∈ entries → links(entries[str], dirs) ≠ ∅; (s) Used terms: subdirs(ino, dirs -- m), subdirs(ino, dirs)