| key = inodekey(m), ro.inodes?, fo.inodes?, file-node-cons(fs, ri), log-cons(log, fs), orphans-cons(fs, ri, ro), replay-cons-strong(fs, ri, ro, fi, fo, log), ri-inj(ri), ri-inj(fi), ubifs-cons(fs, ri, ro, fi, fo, log), key ∈ ro, inodekey(m) ∈ ri, ∀ ino. inodekey(ino) ∈ ro → dentrykeys(inodekey(ino), ri) = ∅, ∀ ino. inodekey(ino) ∈ ro → links(ino, fs, ri) = ∅ ⊦ ⟪aubifs_core_index_truncate#(inodekey(m), 0, fi, ro, fo, fs, log, boolvar0; ri); aubifs_core_orphans_remove#(inodekey(m), ri, fi, fo, fs, log, boolvar0; ro); aubifs_core_index_remove#(inodekey(m), fi, ro, fo, fs, log, boolvar0; ri); err := ESUCCESS⟫ (ubifs-cons(fs, ri, ro, fi, fo, log) ∧ replay-cons-strong(fs, ri, ro, fi, fo, log) ∧ file-node-cons(fs, ri) ∧ orphans-cons(fs, ri, ro)), m = ROOT_INO |
# ro ≠ 0, m ≠ ROOT_INO, ro ≠ ∅, ro.inodes?, fo.inodes?, file-node-cons(fs, ri), log-cons(log, fs), orphans-cons(fs, ri, ro), replay-cons-strong(fs, ri, ro, fi, fo, log), ri-inj(ri), ri-inj(fi), ubifs-cons(fs, ri, ro, fi, fo, log), inodekey(m) ∈ ro, inodekey(m) ∈ ri, ∀ ino. inodekey(ino) ∈ ro → dentrykeys(inodekey(ino), ri) = ∅, ∀ ino. inodekey(ino) ∈ ro → links(ino, fs, ri) = ∅ ⊦ ⟪aubifs_core_index_truncate#(inodekey(m), 0, fi, ro, fo, fs, log, boolvar0; ri); aubifs_core_orphans_remove#(inodekey(m), ri, fi, fo, fs, log, boolvar0; ro); aubifs_core_index_remove#(inodekey(m), fi, ro, fo, fs, log, boolvar0; ri); err := ESUCCESS⟫ (ubifs-cons(fs, ri, ro, fi, fo, log) ∧ replay-cons-strong(fs, ri, ro, fi, fo, log) ∧ file-node-cons(fs, ri) ∧ orphans-cons(fs, ri, ro))
Used simplifier rules: size-zero-01: ⊦ ks ≠ ∅ → # ks ≠ 0; (forward) from specification set-basic[node-index]%ne-01: ⊦ key ∈ ks → ks ≠ ∅; (forward) from specification set-basic[node-index]