| min(x + a ' + x3) = min((a ' + x3) + x), min(x3 + a0 ' + x) = a0, a0 < min(x + x3), min((a ' + x3) + x) < a0, min((a ' + x3) + x) < min(x + x3), ∀ x1, x2. #(x1 + x2) < #((a + x3) + (a0 + x)) → true → x1 + x2 = [] ∨ min(x1 + x2) = min(x2 + x1) ⊦ a0 = min((a ' + x3) + x), x + x3 = [], a < a0 |
⊦ x ≠ [] → min(a ' + x) = (a < min(x) ⊃ a;min(x))
x3 + x ≠ [], min(x + a ' + x3) = (a < min(x3 + x) ⊃ a;min(x3 + x)), min(x3 + a0 ' + x) = a0, a0 < min(x + x3), (a < min(x3 + x) ⊃ a;min(x3 + x)) < a0, (a < min(x3 + x) ⊃ a;min(x3 + x)) < min(x + x3), ∀ x1, x2. #(x1 + x2) < #((a + x3) + (a0 + x)) → true → x1 + x2 = [] ∨ min(x1 + x2) = min(x2 + x1) ⊦ a0 = (a < min(x3 + x) ⊃ a;min(x3 + x)), x + x3 = [], a < a0
Used simplifier rules: min-base: ⊦ min(a ') = a;%app-02-ant: ⊦ ¬ x + y ≠ [] ↔ x = [] ∧ y = []; from specification list%Nil: ⊦ [] + x = x; from specification list%app: ⊦ x + [] = x; from specification list%a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: x3 + x, a