| asynced ↔ asynced0, ENOENT = err1, dirs1[pageno] = mkdir(m, md, m0, m1, entries), dirs = dirs1, files = files1, negdentry(dent.name) = old_dent, p_ino = pageno, pageno ∈ dirs1, links(pageno, dirs1) ≠ ∅ ∨ pageno = ROOT_INO ⊦ ∃ err0. ⌊err0⌋ ∧ ⟨err := err0⟩ (dent = old_dent ∧ err = err1), ⟨if dent.name ∈ entries then {dent := mkdentry(dent.name, entries[dent.name]); err := ESUCCESS} else {dent := negdentry(dent.name); err := ENOENT}⟩ (dent = old_dent ∧ err = err1), dent.name ∈ dirs[p_ino].entries |
dirs1[pageno] = mkdir(m, md, m0, m1, entries), pageno ∈ dirs1, ¬ dent.name ∈ entries, links(pageno, dirs1) ≠ ∅ ∨ pageno = ROOT_INO ⊦ ⟨dent0 := negdentry(dent.name); err := ENOENT⟩ (dent0 = negdentry(dent.name) ∧ err = ENOENT), ∃ err0. ⌊err0⌋ ∧ ⟨err := err0⟩ (dent = negdentry(dent.name) ∧ err = ENOENT)
Used simplifier rules: ⊦ mkdir(m, md, m0, m1, entries).entries = entries; (s)