| new(ax, fs), adr = adr ∨ adr ∈ log0 → adr ∈ fs ∧ node-cons(fs[adr].key, fs[adr]), ∀ adr0. adr0 ∈ log0 → adr0 ∈ fs ∧ node-cons(fs[adr0].key, fs[adr0]), ∀ ax0, fs0. dups(log0 + ax0) ∧ new(ax0, fs0) ∧ (∀ adr. adr ∈ log0 → adr ∈ fs0 ∧ node-cons(fs0[adr].key, fs0[adr])) → dups(ax0), adr ∈ ax ∨ dups(log0 + ax) ⊦ dups(log0), dups(ax), adr ∈ log0 |
dups(log0 + ax), new(ax, fs), node-cons(fs[adr].key, fs[adr]), adr ∈ fs, ∀ ax0, fs0. dups(log0 + ax0) ∧ new(ax0, fs0) ∧ (∀ adr. adr ∈ log0 → adr ∈ fs0 ∧ node-cons(fs0[adr].key, fs0[adr])) → dups(ax0), ∀ adr0. adr0 ∈ log0 → adr0 ∈ fs ∧ node-cons(fs[adr0].key, fs[adr0]) ⊦ dups(ax), dups(log0), adr ∈ log0
Used simplifier rules: ⊦ new(log, fs) ∧ adr ∈ fs → ¬ adr ∈ log; (s)