| entries[str] ∈ dirs, str ∈ entries, ino ∈ dirs ⊦ ino0 ∈ dirs, ∀ str0. str0 ∈ subdirs(ino, dirs[ino, mkdir(n, md, n0, n1, entries[str, ino0])]) ↔ str0 ∈ subdirs(ino, dirs[ino, mkdir(n, md, n0, n1, entries)]) -- str |
ino ∈ dirs, str ∈ entries, entries[str] ∈ dirs, str0 ∈ entries[str, ino0], entries[str, ino0][str0] ∈ dirs ⊦ ino0 ∈ dirs, str0 ≠ str ∧ str0 ∈ entries ∧ entries[str0] ∈ dirs
Used simplifier rules: subdirs: ⊦ str ∈ subdirs(ino, dirs) ↔ ino ∈ dirs ∧ str ∈ dirs[ino].entries ∧ dirs[ino].entries[str] ∈ dirs;% ⊦ str ≠ str0 → entries[str0, ino][str] = entries[str]; (s)% ⊦ str ≠ str0 → (str ∈ entries[str0, ino] ↔ str ∈ entries); (s)% ⊦ str ∈ strings -- str0 ↔ str ≠ str0 ∧ str ∈ strings; (s)% ⊦ mkdir(m, md, m0, m1, entries).entries = entries; (s)% ⊦ dirs[ino, ad][ino0] = (ino0 = ino ∧ ino ∈ dirs ⊃ ad;dirs[ino0]); (s)% ⊦ ino ∈ dirs[ino0, ad] ↔ ino ∈ dirs; (s)