| 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 = ∅ |
ks1 = ks0, ri = ri2 -- key, ri2 = ri0 \ datakeys(key, ri0), ro = ks0, ro0 = ks0, ro2 = ks0, ri0 ⊖ ks0 = ri1 ⊖ ro1, ro1.inodes?, ks0.inodes?, key ∈ ks0, key ∈ ro1, ks0 ⊆ ro1 ⊦ ⟪ro := ro -- key; ks2 := ro0 -- key⟫ (ks2 = ro ∧ ro ⊆ ro1 ∧ (ri2 -- key) ⊖ ro = ri1 ⊖ ro1 ∧ ro.inodes? ∧ # ro < # ks1), # ks0 = 0, # ro1 = 0, ks0 = ∅, ro1 = ∅
Used simplifier rules: ⊦ key ∈ ks ∧ ks.inodes? → key.inode?; (ss)