| ro.inodes?, fo.inodes?, dups(log + adr0 '), log-cons(log, fs), ri-closed(ri, fs, ro), ri-cons(ri, fs), ro ⊆ dom ri, fo ⊆ dom fi ⊦ dups(log), adr0 ∈ fs, inodekey(0) ∈ ri |
fo.inodes?, ro.inodes?, adr0 ∈ log, fo ⊆ dom fi, ro ⊆ dom ri, ∀ key. key ∈ ri → ri[key] ∈ fs ∧ key-cons(key, fs[ri[key]]), ∀ key. key ∈ ri → ri[key] ∈ fs ∧ node-closed(fs[ri[key]], ri, fs, ro), ∀ adr. adr ∈ log → adr ∈ fs ∧ node-cons(fs[adr].key, fs[adr]) ⊦ dups(log), inodekey(0) ∈ ri, adr0 ∈ fs
Used simplifier rules: ri-cons: ⊦ ri-cons(ri, fs) ↔ (∀ key. key ∈ ri → ri[key] ∈ fs ∧ key-cons(key, fs[ri[key]]));%ri-closed: ⊦ ri-closed(ri, fs, ro) ↔ (∀ key. key ∈ ri → ri[key] ∈ fs ∧ node-closed(fs[ri[key]], ri, fs, ro));%log-cons: ⊦ log-cons(log, fs) ↔ (∀ adr. adr ∈ log → adr ∈ fs ∧ node-cons(fs[adr].key, fs[adr]));%a: ⊦ (ax + ax0) + ax1 = ax + ax0 + ax1; from specification list[address-list-set]% ⊦ dups(ax + adr ') ↔ adr ∈ ax ∨ dups(ax); (ws)