| fs[ri[inodekey(ino)]].nlink = 0 ∧ ino ≠ ROOT_INO ↔ inodekey(ino) ∈ ro, as ∩ range ri = ∅, fo.inodes?, ro.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(fi), ri-inj(ri), ubifs-cons(fs, ri, ro, fi, fo, log), inodekey(ino) ∈ ri ⊦ (fs \ as)[ri[inodekey(ino)]].nlink = 0 ∧ ino ≠ ROOT_INO ↔ inodekey(ino) ∈ ro |
Used simplifier rules: ⊦ ¬ adr ∈ as → (fs \ as)[adr] = fs[adr]; (s)% ⊦ adr ∈ as → (fs \ as)[adr] = (∅)[adr]; (s)%int-a: ⊦ (as ∩ as0) ∩ as1 = as ∩ as0 ∩ as1; from specification set-union[node-store]%int-c: ⊦ as ∩ as0 = as0 ∩ as; from specification set-union[node-store]% ⊦ key ∈ ri ∧ as ∩ range ri = ∅ → ¬ ri[key] ∈ as; (s) Used formulas: ri[inodekey(ino)] ∈ as