| sort(x1 + a ' + x0) = sort(x1 + x0) + a ', a < max(sort(x1 + x0) + a '), max((a ' + x1) + x0) < max(sort(x1 + x0) + a '), max(x1 + x0) < max(sort(x1 + x0) + a '), ordered≤(sort(x1 + x0) + a ') ⊦ ins≤(a, sort(x1 + x0) + a ') = (sort(x1 + x0) + a ') + a ', a < max((a ' + x1) + x0), a < max(x1 + x0) |
⊦ x ≠ [] → max(a ' + x) = (max(x) < a ⊃ a;max(x))
sort(x1 + a ' + x0) = sort(x1 + x0) + a ', max(x1 + x0) < max(sort(x1 + x0) + a '), (max(x1 + x0) < a ⊃ a;max(x1 + x0)) < max(sort(x1 + x0) + a '), a < max(sort(x1 + x0) + a '), ordered≤(sort(x1 + x0) + a ') ⊦ x1 + x0 = [], ins≤(a, sort(x1 + x0) + a ') = (sort(x1 + x0) + a ') + a ', a < max(x1 + x0), a < (max(x1 + x0) < a ⊃ a;max(x1 + x0))
Used simplifier rules: ⊦ x + y = [] ↔ x = [] ∧ y = []; (as)% ⊦ [] + x = x; (s)% ⊦ x + [] = x; (s)% ⊦ sort(a ') = a '; (s)% ⊦ sort([]) = []; (s)% ⊦ a ' = b ' ↔ a = b; (s)% ⊦ ins≤(a, a ') = a ' + a '; (s)% ⊦ x + y = x + z ↔ y = z; (s)%a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: x1 + x0, a