| dirs[ino] = mkdir(m4, md2, m5, m6, entries0), files[ino] = mkfile(m1, md1, m3, content), dirs[m] = mkdir(m0, md0, # links(m, dirs), m2, entries), afs-cons(dirs, files), ROOT_INO ∈ dirs, m ∈ dirs, links(m, dirs) ≠ ∅ ∨ m = ROOT_INO ⊦ 0 = # subdirs(ino, (dirs[m, mkdir(m0 + 1, md0, # links(m, dirs), m2 + 1, entries[str, ino])] ++ ino)[ino, mkdir(0, md, 1, 0, ∅)]), ino = 0, subdirs(ino, (dirs[m, mkdir(m0 + 1, md0, # links(m, dirs), m2 + 1, entries[str, ino])] ++ ino)[ino, mkdir(0, md, 1, 0, ∅)]) = ∅, str ∈ entries, ino ∈ files, ino ∈ dirs |
⊦ strings = strings0 ↔ (∀ str. str ∈ strings ↔ str ∈ strings0)
Used simplifier rules: ⊦ str ∈ subdirs(ino, dirs) ↔ ino ∈ dirs ∧ str ∈ dirs[ino].entries ∧ dirs[ino].entries[str] ∈ dirs; (s)% ⊦ ino ∈ dirs[ino0, ad] ↔ ino ∈ dirs; (s)%ino ≠ 0, ¬ ino ∈ dirs ⊦ ino0 ∈ dirs ++ ino ↔ ino0 = ino ∨ ino0 ∈ dirs; (s)% ⊦ dirs[ino, ad][ino0] = (ino0 = ino ∧ ino ∈ dirs ⊃ ad;dirs[ino0]); (s)% ⊦ mkdir(m, md, m0, m1, entries).entries = entries; (s)% ⊦ ¬ str ∈ ∅; (s)% ⊦ ¬ str ∈ ∅; (s) Used terms: ∅, subdirs (ino, ( dirs [m, mkdir(m0 + 1, md0, # links(m, dirs), m2 + 1, entries[str, ino]) ] ++ ino )[ino, mkdir(0, md, 1, 0, ∅) ])