| dirs[n] = mkdir(m0, md, m1, m2, entries) ⊦ ispath(str ', n, m, dirs, files) ↔ n ∈ dirs ∧ str ∈ entries ∧ (entries[str] ∈ dirs ∨ entries[str] ∈ files) ∧ entries[str] = m |
⊦ ispath(str ' + p, n, m, dirs, files) ↔ valid-dir-ino(n, dirs, files) ∧ str ∈ dirs[n].entries ∧ ispath(p, dirs[n].entries[str], m, dirs, files)
Used simplifier rules: valid-dir-ino: ⊦ valid-dir-ino(ino, dirs, files) ↔ ino ∈ dirs;%path-here: ⊦ ispath(ε, n, m, dirs, files) ↔ valid-ino(n, dirs, files) ∧ m = n;%valid-ino: ⊦ valid-ino(ino, dirs, files) ↔ ino ∈ dirs ∨ ino ∈ files;% ⊦ p + ε = p; (s)%a: ⊦ (p + p0) + p1 = p + p0 + p1; from specification list[path]% ⊦ mkdir(m, md, m0, m1, entries).entries = entries; (s) Used terms: str, ε, n, m, dirs, files