| fs[adr] = inodenode(key0, md, boolvar1, m, m0, m1), ¬ boolvar1, m = 0, ri0 = ri, fs[adr].inode?, node-cons(key0, fs[adr]), adr ∈ fs ⊦ ⟪aubifs_core_index_truncate#(key0, 0, fi, ro, fo, fs, log, boolvar0; ri); nd := fs[adr]; err := ESUCCESS; 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); boolvar := boolvar0; 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))), key0.ino = ROOT_INO, adr ∈ ri |
fs[adr] = inodenode(inodekey(ino), md, false, 0, m0, m1), ri0 = ri, ino ≠ 0, ino ≠ ROOT_INO, adr ∈ fs, ¬ adr ∈ ri ⊦ ⟪aubifs_core_index_truncate#(inodekey(ino), 0, fi, ro, fo, fs, log, boolvar0; ri); nd := fs[adr]; err := ESUCCESS; 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); boolvar := boolvar0; 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)))
Used simplifier rules: elim-inode: ⊦ key.inode? ↔ (∃ ino. key = inodekey(ino));% ⊦ inodekey(m).ino = m; (s)%⊦ node-cons(key0, inodenode(key1, md, boolvar, n, n0, m)) ↔ key0.inode? ∧ key0.ino ≠ 0; (s)% ⊦ inodenode(key, md, boolvar, m, m0, m1).inode?; (s)