| ⟨afs_lookup#(pageno, dirs1, files1, asynced0; dent, err)⟩ (dent = old_dent ∧ err = err0), pageno ∈ dirs1, links(pageno, dirs1) ≠ ∅ ∨ pageno = ROOT_INO ⊦ ⟨fail#(; ; err)⟩ (dent = old_dent ∧ err = err0), ⟨if dent.name ∈ dirs1[pageno].entries then {dent := mkdentry(dent.name, dirs1[pageno].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 ⊦ ⟨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)
Used simplifier rules: ⊦ ( ((m = ad.size ∧ md = ad.meta) ∧ m0 = ad.nlink) ∧ m1 = ad.nsubdirs) ∧ entries = ad.entries ↔ ad = mkdir(m, md, m0, m1, entries); (elim) Used terms: dirs1[pageno], m, md, m0, m1, entries