| ∀ p, ay. unique_al(ax0 + p ' + ay) → ax0 + ay = [] ∨ ¬ (ax0 + ay).head.1 ∈ (ax0 + ay).tail ∧ unique_al((ax0 + ay).tail), (p0 ' + ax0) + p ' + ay = [] ∨ ¬ ((p0 ' + ax0) + p ' + ay).head.1 ∈ ((p0 ' + ax0) + p ' + ay).tail ∧ unique_al(((p0 ' + ax0) + p ' + ay).tail) ⊦ ¬ p0.1 ∈ ax0 ∧ ¬ p0.1 ∈ ay ∧ unique_al(ax0 + ay) |
unique_al(ax0 + p ' + ay), ∀ p, ay. unique_al(ax0 + p ' + ay) → ax0 + ay = [] ∨ ¬ (ax0 + ay).head.1 ∈ (ax0 + ay).tail ∧ unique_al((ax0 + ay).tail) ⊦ ax0 + ay = [], p0.1 ∈ ay, p0.1 ∈ p ', p0.1 ∈ ax0, ¬ (ax0 + ay).head.1 ∈ (ax0 + ay).tail ∧ unique_al((ax0 + ay).tail)
Used simplifier rules: inapp: ⊦ a ∈ ax + ay ↔ a ∈ ax ∨ a ∈ ay;%k-unique-r: ⊦ unique_al(ay) ↔ ay = [] ∨ ¬ ay.head.1 ∈ ay.tail ∧ unique_al(ay.tail);% ⊦ (p ' + ax).tail = ax; (s)% ⊦ (p ' + ax).head = p; (s)%a: ⊦ (ax + ax0) + ax1 = ax + ax0 + ax1; from specification list[assoclist]% ⊦ p ' + ax ≠ []; (s)