| m < n, a < a0, ordered<(a0 ' + y), m ≤ # y, n ≤ 1 + # y, ∀ m0, n0. m0 < n0 ∧ ¬ # y < n0 → (a0 ' + y)[m0] < (a0 ' + y)[n0] ⊦ (a ' + a0 ' + y)[m] < (a ' + a0 ' + y)[n], a ' + a0 ' + y ≠ [] ∧ m ≠ 0 |
a < a0, (a ' + a0 ' + y)[n] < a0, ordered<(a0 ' + y), n ≤ 1 + # y, ∀ m0, n0. m0 < n0 ∧ ¬ # y < n0 → (a0 ' + y)[m0] < (a0 ' + y)[n0] ⊦ a ' + a0 ' + y = [], n = 0, a < (a ' + a0 ' + y)[n]
Used simplifier rules: nll: ⊦ ¬ b < a ∧ b < c → a < c; (forward) from specification oelem% ⊦ (a ' + x)[0] = a; (s)% ⊦ 0 ≤ m; (s)% ⊦ m < n → n ≠ 0; (s)% ⊦ 0 < n ↔ n ≠ 0; (s)%lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic%a: ⊦ (x + y) + z = x + y + z; from specification list% ⊦ a ' ≠ []; (s)% ⊦ x + y = [] ↔ x = [] ∧ y = []; (as)