| dirs[p_ino] = mkdir(m, md, n0, n1, entries), p_ino ∈ dirs, str0 ∈ (str ∈ entries ∧ entries[str] ∈ dirs ⊃ subdirs(p_ino, dirs[p_ino, mkdir(m0, md, n0, n2, entries)]) -- str ;subdirs(p_ino, dirs[p_ino, mkdir(m0, md, n0, n2, entries)]) ) ⊦ # (str ∈ entries ∧ entries[str] ∈ dirs ⊃ subdirs(p_ino, dirs[p_ino, mkdir(m0, md, n0, n2, entries)]) -- str ;subdirs(p_ino, dirs[p_ino, mkdir(m0, md, n0, n2, entries)]) ) = 0, (str ∈ entries ∧ entries[str] ∈ dirs ⊃ subdirs(p_ino, dirs[p_ino, mkdir(m0, md, n0, n2, entries)]) -- str ;subdirs(p_ino, dirs[p_ino, mkdir(m0, md, n0, n2, entries)]) ) = ∅, str0 ∈ (str ∈ entries ∧ entries[str] ∈ dirs ⊃ subdirs(p_ino, dirs) -- str;subdirs(p_ino, dirs)) |
dirs[p_ino] = mkdir(m, md, n0, n1, entries), str0 ∈ (str ∈ entries ∧ entries[str] ∈ dirs ⊃ subdirs(p_ino, dirs[p_ino, mkdir(m0, md, n0, n2, entries)]) -- str ;subdirs(p_ino, dirs[p_ino, mkdir(m0, md, n0, n2, entries)]) ), p_ino ∈ dirs, ¬ str ∈ entries ∨ ¬ entries[str] ∈ dirs ⊦ # subdirs(p_ino, dirs[p_ino, mkdir(m0, md, n0, n2, entries)]) = 0, (str ∈ entries ∧ entries[str] ∈ dirs ⊃ subdirs(p_ino, dirs[p_ino, mkdir(m0, md, n0, n2, entries)]) -- str ;subdirs(p_ino, dirs[p_ino, mkdir(m0, md, n0, n2, entries)]) ) = ∅, str0 ∈ (str ∈ entries ∧ entries[str] ∈ dirs ⊃ subdirs(p_ino, dirs) -- str;subdirs(p_ino, dirs))
Used simplifier rules: subdirs: ⊦ str ∈ subdirs(ino, dirs) ↔ ino ∈ dirs ∧ str ∈ dirs[ino].entries ∧ dirs[ino].entries[str] ∈ dirs;% ⊦ strings -- str = ∅ ↔ strings = ∅ ∨ strings = ∅ ++ str; (ws)% ⊦ str ∈ strings -- str0 ↔ str ≠ str0 ∧ str ∈ strings; (s)% ⊦ ino ∈ dirs[ino0, ad] ↔ ino ∈ dirs; (s)% ⊦ dirs[ino, ad][ino0] = (ino0 = ino ∧ ino ∈ dirs ⊃ ad;dirs[ino0]); (s)% ⊦ mkdir(m, md, m0, m1, entries).entries = entries; (s)% ⊦ str ≠ str0 → (str ∈ strings -- str0 ↔ str ∈ strings); (ss)%size-zero-01: ⊦ strings ≠ ∅ → # strings ≠ 0; (forward) from specification set-basic[dir-entries]%size-zero: ⊦ # strings ≠ 0 → strings ≠ ∅; (forward) from specification set-basic[dir-entries]