| dirs[p_ino] = mkdir(m, md, n0, n1, entries), p_ino ∈ dirs, str0 ∈ (ino ∈ dirs ⊃ subdirs(p_ino, dirs) ++ str;(str ∈ entries ∧ entries[str] ∈ dirs ⊃ subdirs(p_ino, dirs) -- str;subdirs(p_ino, dirs))) ⊦ str0 = str, str0 ∈ (subdirs(p_ino, dirs) \ (str ∈ entries ∧ entries[str] ∈ dirs ⊃ ∅ ++ str;∅)) ∪ (ino ∈ dirs ⊃ ∅ ++ str;∅) |
dirs[p_ino] = mkdir(m, md, n0, n1, entries), p_ino ∈ dirs, str0 ∈ (ino ∈ dirs ⊃ subdirs(p_ino, dirs) ++ str;(str ∈ entries ∧ entries[str] ∈ dirs ⊃ subdirs(p_ino, dirs) -- str;subdirs(p_ino, dirs))) ⊦ # (ino ∈ dirs ⊃ subdirs(p_ino, dirs) ++ str;(str ∈ entries ∧ entries[str] ∈ dirs ⊃ subdirs(p_ino, dirs) -- str;subdirs(p_ino, dirs))) = 0, (ino ∈ dirs ⊃ subdirs(p_ino, dirs) ++ str;(str ∈ entries ∧ entries[str] ∈ dirs ⊃ subdirs(p_ino, dirs) -- str;subdirs(p_ino, dirs))) = ∅, str0 = str, str0 ∈ (ino ∈ dirs ⊃ ∅ ++ str;∅), str0 ∈ subdirs(p_ino, dirs) \ (str ∈ entries ∧ entries[str] ∈ dirs ⊃ ∅ ++ str;∅)
Used simplifier rules: size-zero-01: ⊦ strings ≠ ∅ → # strings ≠ 0; (forward) from specification set-basic[dir-entries]%ne-01: ⊦ str ∈ strings → strings ≠ ∅; (forward) from specification set-basic[dir-entries]%unc: ⊦ strings ∪ strings0 = strings0 ∪ strings; from specification set-union[dir-entries]%una: ⊦ (strings ∪ strings0) ∪ strings1 = strings ∪ strings0 ∪ strings1; from specification set-union[dir-entries]% ⊦ str ∈ strings ∪ strings0 ↔ ¬(¬ str ∈ strings ∧ ¬ str ∈ strings0); (ss)