| node-cons(fs[adr].key, fs[adr]), adr ∈ fs, ¬ adr ∈ ri ⊦ ⟪aubifs_core_journal_get#(adr, ri, fi, ro, fo, fs, log, boolvar0; nd; err); ri0 := ri; if err = ESUCCESS then {if nd.inode? then if nd.nlink ≠ 0 ∨ nd.key.ino = ROOT_INO then aubifs_core_index_store#(nd.key, adr, fi, ro, fo, fs, log, boolvar0; ri) else {if ¬ nd.directory then aubifs_core_index_truncate#(nd.key, 0, fi, ro, fo, fs, log, boolvar0; ri); if err = ESUCCESS then aubifs_core_index_remove#(nd.key, fi, ro, fo, fs, log, boolvar0; ri)}; if nd.dentry? then if nd.ino ≠ 0 then aubifs_core_index_store#(nd.key, adr, fi, ro, fo, fs, log, boolvar0; ri) else aubifs_core_index_remove#(nd.key, fi, ro, fo, fs, log, boolvar0; ri); if nd.data? then {let key = inodekey(nd.key.ino) in aubifs_core_index_contains#(key, ri, fi, ro, fo, fs, log, boolvar0; boolvar; err); 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, node-cons(fs[adr].key, fs[adr]), adr ∈ fs ⊦ ⟪if adr ∈ fs then {nd := fs[adr], err := ESUCCESS or fail#(; ; err)} else abort; ri0 := ri; if err = ESUCCESS then {if nd.inode? then if nd.nlink ≠ 0 ∨ nd.key.ino = ROOT_INO then aubifs_core_index_store#(nd.key, adr, fi, ro, fo, fs, log, boolvar0; ri) else {if ¬ nd.directory then aubifs_core_index_truncate#(nd.key, 0, fi, ro, fo, fs, log, boolvar0; ri); if err = ESUCCESS then aubifs_core_index_remove#(nd.key, fi, ro, fo, fs, log, boolvar0; ri)}; if nd.dentry? then if nd.ino ≠ 0 then aubifs_core_index_store#(nd.key, adr, fi, ro, fo, fs, log, boolvar0; ri) else aubifs_core_index_remove#(nd.key, fi, ro, fo, fs, log, boolvar0; ri); if nd.data? then {let key = inodekey(nd.key.ino) in aubifs_core_index_contains#(key, ri, fi, ro, fo, fs, log, boolvar0; boolvar; err); 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_journal_get# (ADR, RI, FI, RO, FO, FS, LOG, CSYNCED; ND; ERR) {if ADR ∈ FS then {ND := FS[ADR], ERR := ESUCCESS or fail#(; ; ERR)} else abort };