| fs = ∅, log = [] ⊦ ⟪aubifs_core_journal_add1#(inodenode(inodekey(ROOT_INO), md, true, 0, 0, 0), ∅, ∅, ∅, ∅; adr, fs, log; boolvar, err0); ro := ∅; ri := ∅; fo := ∅; fi := ∅; if err0 = ESUCCESS then aubifs_core_index_store#(inodekey(ROOT_INO), adr, fi, ro, fo, fs, log, boolvar; ri); if err0 = ESUCCESS then aubifs_core_journal_sync#(ri, fi, ro, fo, fs, log; ; boolvar, err0)⟫ ( ( err0 = ESUCCESS → ⟨afs_format#(n, boolvar0, LEB_SIZE, md; dirs0; files0, asynced, err1)⟩ ( dirs0 = abs-dirs(fs, ri) ∧ files0 = abs-files(fs, ri) ∧ orphans(abs-dirs(fs, ri), abs-files(fs, ri)) = abs-keys(ro) ∧ (asynced → boolvar) ∧ ESUCCESS = err1)) ∧ ( err0 ≠ ESUCCESS → (∀ dirs, files, boolvar. ⟨afs_format#(n, boolvar0, LEB_SIZE, md; dirs0; files0, asynced, err1)⟩ (dirs = dirs0 ∧ files = files0 ∧ (boolvar ↔ asynced) ∧ err0 = err1)))) |
fi = ∅, fo = ∅, fs = ∅, log = [], nd = inodenode(inodekey(ROOT_INO), md, true, 0, 0, 0), ri = ∅, ro = ∅ ⊦ ⟪if ri-cons(ri, fs) ∧ node-cons(nd.key, nd) then { choose adr1 with new(adr1 ', fs) ∧ ¬ dups(adr1 ') in {adr := adr1; fs[adr] := nd, log := log + adr, err := ESUCCESS} ifnone err := ENOSPC or {fail#(; ; err); adr := ?}; boolvar := ?} else abort; ro := ∅; ri := ∅; fo := ∅; fi := ∅; err0 := err; if err0 = ESUCCESS then aubifs_core_index_store#(inodekey(ROOT_INO), adr, fi, ro, fo, fs, log, boolvar; ri); if err0 = ESUCCESS then aubifs_core_journal_sync#(ri, fi, ro, fo, fs, log; ; boolvar, err0)⟫ ( ( err0 = ESUCCESS → ⟨afs_format#(n, boolvar0, LEB_SIZE, md; dirs0; files0, asynced, err1)⟩ ( dirs0 = abs-dirs(fs, ri) ∧ files0 = abs-files(fs, ri) ∧ orphans(abs-dirs(fs, ri), abs-files(fs, ri)) = abs-keys(ro) ∧ (asynced → boolvar) ∧ ESUCCESS = err1)) ∧ ( err0 ≠ ESUCCESS → (∀ dirs, files, boolvar. ⟨afs_format#(n, boolvar0, LEB_SIZE, md; dirs0; files0, asynced, err1)⟩ (dirs = dirs0 ∧ files = files0 ∧ (boolvar ↔ asynced) ∧ err0 = err1))))
Used simplifier rules: aubifs_core_journal_add1# (ND1, RI, FI, RO, FO; ADR1, FS, LOG; CSYNCED, ERR) {if ri-cons(RI, FS) ∧ node-cons(ND1.key, ND1) then { choose adr1 with new(adr1 ', FS) ∧ ¬ dups(adr1 ') in {ADR1 := adr1; FS[ADR1] := ND1, LOG := LOG + ADR1, ERR := ESUCCESS} ifnone ERR := ENOSPC or {fail#(; ; ERR); ADR1 := ?}; CSYNCED := ?} else abort };