| dirs[p_ino] = mkdir(m, md, n0, n1, entries), p_ino ∈ dirs ⊦ subdirs(p_ino, dirs[p_ino, mkdir(m, md, n0, n1, entries[str, ino])]) = (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 ⊦ (ino ∈ dirs ⊃ subdirs(p_ino, dirs) ++ str;(str ∈ entries ∧ entries[str] ∈ dirs ⊃ subdirs(p_ino, dirs) -- str;subdirs(p_ino, dirs))) = (subdirs(p_ino, dirs) \ (str ∈ entries ∧ entries[str] ∈ dirs ⊃ ∅ ++ str;∅)) ∪ (ino ∈ dirs ⊃ ∅ ++ str;∅)
Used simplifier rules: subdirs-add-entry: ⊦ ino ∈ dirs → subdirs (ino, dirs[ino, mkdir(n, md, n0, n1, entries[str, ino0])]) = (ino0 ∈ dirs ⊃ subdirs(ino, dirs[ino, mkdir(n, md, n0, n1, entries)]) ++ str ;(str ∈ entries ∧ entries[str] ∈ dirs ⊃ subdirs(ino, dirs[ino, mkdir(n, md, n0, n1, entries)]) -- str ;subdirs(ino, dirs[ino, mkdir(n, md, n0, n1, entries)]) ) );% ⊦ {str} = ∅ ++ str; (s)%ino ∈ dirs ⊦ dirs[ino] = ad → dirs[ino, ad] = dirs; (s)