| # kx = # ax, as ∩ ax.toSet = ∅, as ∩ log0.toSet = ∅, ax.toSet ∩ log0.toSet = ∅, as ∩ range ri0[kx, ax] = ∅, fo.inodes?, ro.inodes?, log-cons(log0, fs0), new(ax, fs0), node-cons(fs0[adr].key, fs0[adr]), ri-cons(ri0, fs0), ri-cons(ri0[kx, ax], fs0[ax, fs0[ri0[kx]]]), ri-inj(fi), ri-inj(ri0), adr ∈ fs0, adr ∈ log0, kx.toSet ⊆ dom ri0 ⊦ dups(ax), dups(kx), (adr ∈ fs0[ax, fs0[ri0[kx]]] ∧ ¬ adr ∈ as) ∧ node-cons((fs0[ax, fs0[ri0[kx]]] \ as)[adr].key, (fs0[ax, fs0[ri0[kx]]] \ as)[adr]) |
# kx = # ax, as ∩ range ri0[kx, ax] = ∅, ax.toSet ∩ log0.toSet = ∅, as ∩ log0.toSet = ∅, as ∩ ax.toSet = ∅, ro.inodes?, fo.inodes?, log-cons(log0, fs0), new(ax, fs0), node-cons(fs0[adr].key, fs0[adr]), ri-cons(ri0[kx, ax], fs0[ax, fs0[ri0[kx]]]), ri-cons(ri0, fs0), ri-inj(ri0), ri-inj(fi), adr ∈ log0, adr ∈ fs0, kx.toSet ⊆ dom ri0 ⊦ dups(kx), dups(ax), ¬ adr ∈ as ∧ node-cons(fs0[ax, fs0[ri0[kx]]][adr].key, fs0[ax, fs0[ri0[kx]]][adr])
Used simplifier rules: ⊦ ¬ adr ∈ as → (fs \ as)[adr] = fs[adr]; (s)% ⊦ log-cons(log, fs) ∧ adr ∈ log → adr ∈ fs; (ss)%# ax = # ndx ⊦ adr ∈ fs[ax, ndx] ↔ adr ∈ fs ∨ adr ∈ ax; (s)% ⊦ # ri[kx] = # kx; (s)% ⊦ # fs[ax] = # ax; (s)