| ri = ri1 \ datakeys(inodekey(m), ri1), # ro ≠ 0, m ≠ ROOT_INO, ro ≠ ∅, fo.inodes?, ro.inodes?, file-node-cons(fs, ri1), log-cons(log, fs), orphans-cons(fs, ri1, ro), replay-cons-strong(fs, ri1, ro, fi, fo, log), ri-inj(fi), ri-inj(ri1), ubifs-cons(fs, ri1, ro, fi, fo, log), inodekey(m) ∈ ri1, inodekey(m) ∈ ro, ∀ ino. inodekey(ino) ∈ ro → links(ino, fs, ri1) = ∅, ∀ ino. inodekey(ino) ∈ ro → dentrykeys(inodekey(ino), ri1) = ∅ ⊦ ⟪aubifs_core_index_remove#(inodekey(m), fi, ro -- inodekey(m), fo, fs, log, boolvar0; ri); err := ESUCCESS⟫ ( ubifs-cons(fs, ri, ro -- inodekey(m), fi, fo, log) ∧ replay-cons-strong(fs, ri, ro -- inodekey(m), fi, fo, log) ∧ file-node-cons(fs, ri) ∧ orphans-cons(fs, ri, ro -- inodekey(m))) |
boolvar ↔ boolvar0, key = inodekey(m), ri = ri1 \ datakeys(inodekey(m), ri1), ro = ro0 -- inodekey(m), ro0.inodes?, fo.inodes?, file-node-cons(fs, ri1), log-cons(log, fs), orphans-cons(fs, ri1, ro0), replay-cons-strong(fs, ri1, ro0, fi, fo, log), ri-inj(ri1), ri-inj(fi), ubifs-cons(fs, ri1, ro0, fi, fo, log), inodekey(m) ∈ ro0, inodekey(m) ∈ ri1, ∀ ino. inodekey(ino) ∈ ro0 → dentrykeys(inodekey(ino), ri1) = ∅, ∀ ino. inodekey(ino) ∈ ro0 → links(ino, fs, ri1) = ∅ ⊦ ⟪ri := ri -- key; err := ESUCCESS⟫ ( ubifs-cons(fs, ri, ro0 -- inodekey(m), fi, fo, log) ∧ replay-cons-strong(fs, ri, ro0 -- inodekey(m), fi, fo, log) ∧ file-node-cons(fs, ri) ∧ orphans-cons(fs, ri, ro0 -- inodekey(m))), # ro0 = 0, m = ROOT_INO, ro0 = ∅
Used simplifier rules: aubifs_core_index_remove#(KEY, FI, RO, FO, FS, LOG, CSYNCED; RI) {RI := RI -- KEY};