| dirs[m] = mkdir(m0, md0, # links(m, dirs), m4, entries1), files[entries0[str]] = mkfile(m1, md, # links(entries0[str], dirs), content0), dirs[ino] = mkdir(m2, md3, # links(ino, dirs), m6, entries0), entries0[str] = entries[str], dirs[ino0] = mkdir(m3, md1, m5, m7, entries), afs-cons(dirs, files), ino ∈ dirs, str ∈ entries0, m ∈ dirs, entries0[str] ∈ files, ino0 ∈ dirs, str ∈ entries, links(ino, dirs) ≠ ∅ ∨ ino = ROOT_INO, links(m, dirs) ≠ ∅ ∨ m = ROOT_INO, links(ino0, dirs) ≠ ∅ ∨ ino0 = ROOT_INO ⊦ ⟪fail#(; ; err); asynced := ?⟫ true, str0 ∈ entries1 |
dirs[m] = mkdir(m0, md0, # links(m, dirs), m4, entries1), files[entries[str]] = mkfile(m1, md, # links(entries[str], dirs), content0), dirs[ino] = mkdir(m2, md3, # links(ino, dirs), m6, entries0), entries0[str] = entries[str], dirs[ino0] = mkdir(m3, md1, # links(ino0, dirs), m7, entries), afs-cons(dirs, files), ino ∈ dirs, str ∈ entries0, m ∈ dirs, entries[str] ∈ files, ino0 ∈ dirs, str ∈ entries, ¬ str0 ∈ entries1, links(ino, dirs) ≠ ∅ ∨ ino = ROOT_INO, links(m, dirs) ≠ ∅ ∨ m = ROOT_INO, links(ino0, dirs) ≠ ∅ ∨ ino0 = ROOT_INO ⊦ ⟪fail#(; ; err); asynced := ?⟫ true
Used simplifier rules: afs-cons-dir-nlink: ⊦ afs-cons(dirs, files) ∧ ino ∈ dirs ∧ dirs[ino] = mkdir(n0, md, n, n1, entries) → # links(ino, dirs) = n; (forward) from specification afs-base