| ⟨afs_lookup#(pageno, dirs1, files1, asynced0; dent, err)⟩ (dent = old_dent ∧ err = err0), dirs1[pageno] = mkdir(m, md, m0, m1, entries), pageno ∈ dirs1, links(pageno, dirs1) ≠ ∅ ∨ pageno = ROOT_INO ⊦ ⟨fail#(; ; err)⟩ (dent = old_dent ∧ err = err0), ⟨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 = err0) |
⟨afs_lookup#(pageno, dirs1, files1, asynced0; dent, err)⟩ (dent = old_dent ∧ err = err0), dirs1[pageno] = mkdir(m, md, m0, m1, entries), pageno ∈ dirs1, links(pageno, dirs1) ≠ ∅ ∨ pageno = ROOT_INO ⊦ ⟨choose err0 with ⌊err0⌋ in err := err0⟩ (dent = old_dent ∧ err = err0), ⟨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 = err0)
Used simplifier rules: fail#(; ; ERR){choose ERR0 with ⌊ERR0⌋ in ERR := ERR0};