| sort(x1 + a ' + x0) = sort(x1 + x0) + a ', max(x1 + x0) < max(sort(x1 + x0) + a '), ordered≤(sort(x1 + x0) + a '), a < max(sort(x1 + x0) + a ') ⊦ x1 + x0 = [], ins≤(a, sort(x1 + x0) + a ') = (sort(x1 + x0) + a ') + a ', a < max(x1 + x0) |
max(x1 + x0) < a, sort(x1 + a ' + x0) = sort(x1 + x0) + a ', max(x1 + x0) < max(sort(x1 + x0) + a '), ordered≤(sort(x1 + x0) + a '), a < max(sort(x1 + x0) + a ') ⊦ x1 + x0 = [], ins≤(a, sort(x1 + x0) + a ') = (sort(x1 + x0) + a ') + a ', a < max(x1 + x0)
Used simplifier rules: max-ins-max-last-sort: ⊦ ¬ a < max(x0) → ins≤(a, sort(x0)) = sort(x0) + a ';%seq: ⊦ ¬ b < a → (¬ a < b ↔ a = b); from specification oelem%lel: ⊦ a < b ∧ a = c → c < b; (forward) from specification oelem%nen: ⊦ ¬ b < a ∧ a = c → ¬ b < c; (forward) from specification oelem%ins-less-last: ⊦ ¬ a0 < a → ins≤(a, x + a0 ') = ins≤(a, x) + a0 '; from specification olist%a: ⊦ (x + y) + z = x + y + z; from specification list%app-01: ⊦ x + y = x + z ↔ y = z; from specification list Used formulas: max(x1 + x0) < a