| dups((adr + log0) + ax), new(ax, fs), ∀ adr0. adr0 ∈ adr + log0 → adr0 ∈ fs ∧ node-cons(fs[adr0].key, fs[adr0]), ∀ ax, fs. dups(log0 + ax) ∧ new(ax, fs) ∧ (∀ adr. adr ∈ log0 → adr ∈ fs ∧ node-cons(fs[adr].key, fs[adr])) → dups(ax) ∨ dups(log0) ⊦ dups(adr + log0), dups(ax) |
new(ax, 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 = adr ∨ adr0 ∈ log0 → adr0 ∈ fs ∧ node-cons(fs[adr0].key, fs[adr0]), adr ∈ ax ∨ dups(log0 + ax) ⊦ dups(ax), dups(log0), adr ∈ log0
Used simplifier rules: ⊦ adr ∈ adr0 ' + ax ↔ adr = adr0 ∨ adr ∈ ax; (s)% ⊦ dups(adr ' + ax) ↔ dups(ax) ∨ adr ∈ ax; (ws)% ⊦ adr ∈ ax + ax0 ↔ adr ∈ ax ∨ adr ∈ ax0; (s)% ⊦ dups(adr ' + ax) ↔ adr ∈ ax ∨ dups(ax); (s)%a: ⊦ (ax + ax0) + ax1 = ax + ax0 + ax1; from specification list[address-list-set]% ⊦ adr + ax = adr ' + ax; (s)