| ordered≤(a ' + x1), ordered≤(x0), x0 ≠ [] → ¬ x0.first < (a ' + x1).last, ∀ x. ordered≤(x) ∧ (x1 ≠ [] ∧ x ≠ [] → ¬ x.first < x1.last) → ordered≤(x1 + x) ⊦ ordered≤((a ' + x1) + x0) |
x0 = a0 + y ∧ x0 ≠ [], ordered≤(a ' + x1), ordered≤(x0), x0 ≠ [] → ¬ a0 < (a ' + x1).last, ∀ x. ordered≤(x) ∧ (x1 ≠ [] ∧ x ≠ [] → ¬ x.first < x1.last) → ordered≤(x1 + x) ⊦ ordered≤((a ' + x1) + x0)
Used simplifier rules: le-e: ⊦ ordered≤([]);%app: ⊦ x + [] = x; from specification list%a: ⊦ (x + y) + z = x + y + z; from specification list%x ≠ [] ⊦ a = x.first ∧ y = x.rest ↔ x = a + y; (elim) Used terms: x0, a0, y