| # kx = # ax, # ax = # fs0[ri0[kx]], 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 ∈ ax, ¬ adr ∈ as ∧ node-cons(fs0[adr].key, fs0[adr]) |
# 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 ∈ as, adr ∈ fs0, adr ∈ log0, kx.toSet ⊆ dom ri0 ⊦ # as = 0, as = ∅, dups(ax), dups(kx)
Used simplifier rules: size-zero-01: ⊦ as ≠ ∅ → # as ≠ 0; (forward) from specification set-basic[node-store]%ne-01: ⊦ adr ∈ as → as ≠ ∅; (forward) from specification set-basic[node-store]% ⊦ log-cons(log, fs) ∧ adr ∈ log → node-cons(fs[adr].key, fs[adr]); (ss)% ⊦ new(log, fs) ∧ adr ∈ fs → ¬ adr ∈ log; (s)% ⊦ # ri[kx] = # kx; (s)% ⊦ # fs[ax] = # ax; (s)