| ks1 = ks0, ri = ri0 \ datakeys(key, ri0), ro = ks0, ro0 = ks0, ri0 ⊖ ks0 = ri1 ⊖ ro1, ro1.inodes?, ks0.inodes?, key ∈ ks0, key ∈ ro1, ks0 ⊆ ro1 ⊦ ⟪aubifs_core_orphans_remove#(key, ri -- key, fi, fo, fs, log, boolvar; ks0); ks2 := ro0 -- key⟫ (ks2 = ks0 ∧ ks0 ⊆ ro1 ∧ (ri -- key) ⊖ ks0 = ri1 ⊖ ro1 ∧ ks0.inodes? ∧ # ks0 < # ks1), # ks0 = 0, # ro1 = 0, ks0 = ∅, ro1 = ∅ |
ks1 = ks0, ri = ri2 -- key, ri2 = ri0 \ datakeys(key, ri0), ro = ks0, ro0 = ks0, ro2 = ks0, ri0 ⊖ ks0 = ri1 ⊖ ro1, ks0.inodes?, ro1.inodes?, key ∈ ro1, key ∈ ks0, ks0 ⊆ ro1 ⊦ ⟪if key.inode? then ro := ro -- key else abort; ks2 := ro0 -- key⟫ (ks2 = ro ∧ ro ⊆ ro1 ∧ (ri2 -- key) ⊖ ro = ri1 ⊖ ro1 ∧ ro.inodes? ∧ # ro < # ks1), # ro1 = 0, # ks0 = 0, ks0 = ∅, ro1 = ∅
Used simplifier rules: aubifs_core_orphans_remove#(KEY, RI, FI, FO, FS, LOG, CSYNCED; RO) {if KEY.inode? then RO := RO -- KEY else abort};