| boolvar ↔ boolvar0, fs[adr] = datanode(datakey(ino, n), buf), adr ∈ fs, ¬ adr ∈ ri ⊦ ⟪aubifs_core_index_contains#(inodekey(ino), ri, fi, ro, fo, fs, log, boolvar0; boolvar; err); ri0 := ri; nd := fs[adr]; if err = ESUCCESS ∧ boolvar then aubifs_core_index_store#(nd.key, adr, fi, ro, fo, fs, log, boolvar0; ri); if nd.trunc? then aubifs_core_index_truncate#(nd.key, nd.size, fi, ro, fo, fs, log, boolvar0; ri)⟫ ((err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → ri = replay-one(adr, fs[adr], ri0))) |
boolvar ↔ boolvar0, fs[adr] = datanode(datakey(ino, n), buf), key = inodekey(ino), adr ∈ fs ⊦ ⟪fail_or_success#(; ; err); if err = ESUCCESS then boolvar := key ∈ ri else boolvar := ?; ri0 := ri; nd := fs[adr]; if err = ESUCCESS ∧ boolvar then aubifs_core_index_store#(nd.key, adr, fi, ro, fo, fs, log, boolvar0; ri); if nd.trunc? then aubifs_core_index_truncate#(nd.key, nd.size, fi, ro, fo, fs, log, boolvar0; ri)⟫ ((err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → ri = replay-one(adr, fs[adr], ri0))), adr ∈ ri
Used simplifier rules: aubifs_core_index_contains# (KEY, RI, FI, RO, FO, FS, LOG, CSYNCED; EXISTS; ERR) {fail_or_success#(; ; ERR); if ERR = ESUCCESS then EXISTS := KEY ∈ RI else EXISTS := ? };