| n ∈ dirs, name ∈ dirs[n].entries, ∀ q, n, m, dirs, files. ispath(p0 + q, n, m, dirs, files) ↔ (∃ m0. ispath(p0, n, m0, dirs, files) ∧ ispath(q, m0, m, dirs, files)) ⊦ ispath(p0 + q, dirs[n].entries[name], m, dirs, files) ↔ (∃ m0. ispath(p0, dirs[n].entries[name], m0, dirs, files) ∧ ispath(q, m0, m, dirs, files)) |
dirs[n] = mkdir(m1, md, m2, m3, entries), name ∈ entries, n ∈ dirs, ∀ q, n, m, dirs, files. ispath(p0 + q, n, m, dirs, files) ↔ (∃ m0. ispath(p0, n, m0, dirs, files) ∧ ispath(q, m0, m, dirs, files)) ⊦ ispath(p0 + q, entries[name], m, dirs, files) ↔ (∃ m0. ispath(p0, entries[name], m0, dirs, files) ∧ ispath(q, m0, m, dirs, files))
Used simplifier rules: ⊦ ( ((m = ad.size ∧ md = ad.meta) ∧ m0 = ad.nlink) ∧ m1 = ad.nsubdirs) ∧ entries = ad.entries ↔ ad = mkdir(m, md, m0, m1, entries); (elim) Used terms: dirs[n], md, m1, entries