| boolvar0 ↔ boolvar1, key = inodekey(inode.ino), fo.inodes?, ro.inodes?, file-node-cons(fs, ri), log-cons(log, fs), orphans-cons(fs, ri, ro), pre-evict(inode.ino, fs, ri, ro), replay-cons-strong(fs, ri, ro, fi, fo, log), ri-inj(fi), ri-inj(ri), ubifs-cons(fs, ri, ro, fi, fo, log), inodekey(inode.ino) ∈ ri, ∀ ino. inodekey(ino) ∈ ro → links(ino, fs, ri) = ∅, ∀ ino. inodekey(ino) ∈ ro → dentrykeys(inodekey(ino), ri) = ∅ ⊦ ⟪aubifs_core_orphans_contains#(key, ri, fi, ro, fo, fs, log, boolvar0; boolvar); if boolvar then {aubifs_core_index_truncate#(key, 0, fi, ro, fo, fs, log, boolvar0; ri); aubifs_core_orphans_remove#(key, ri, fi, fo, fs, log, boolvar0; ro); aubifs_core_index_remove#(key, 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)), inode.ino = ROOT_INO |
inode.ino ≠ ROOT_INO, 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(inode.ino) ∈ ri, ∀ ino. inodekey(ino) ∈ ro → dentrykeys(inodekey(ino), ri) = ∅, ∀ ino. inodekey(ino) ∈ ro → links(ino, fs, ri) = ∅ ⊦ ⟪aubifs_core_orphans_contains#(inodekey(inode.ino), ri, fi, ro, fo, fs, log, boolvar0; boolvar); if boolvar then {aubifs_core_index_truncate#(inodekey(inode.ino), 0, fi, ro, fo, fs, log, boolvar0; ri); aubifs_core_orphans_remove#(inodekey(inode.ino), ri, fi, fo, fs, log, boolvar0; ro); aubifs_core_index_remove#(inodekey(inode.ino), 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: ⊦ ubifs-cons(fs, ri, ro, fi, fo, log) ∧ key ∈ ro → key ∈ ri; (ss)% ⊦ valid-ino(ino, fs, ri) ↔ inodekey(ino) ∈ ri; (s)%⊦ pre-evict(ino, fs, ri, ro) ↔ valid-ino(ino, fs, ri) ∧ ino ≠ ROOT_INO ∧ (∀ ino. inodekey(ino) ∈ ri ∧ inodekey(ino) ∈ ro → dentrykeys(inodekey(ino), ri) = ∅) ∧ (∀ ino. inodekey(ino) ∈ ri ∧ inodekey(ino) ∈ ro → links(ino, fs, ri) = ∅); (s)