| # ints1 = # ints2, i0 + Σ ints2 < i + Σ ints1, i ≤ i0, ∀ n. ¬ # ints2 < n → (i ' + ints1)[n] ≤ (i0 ' + ints2)[n], (∀ n. n < # ints2 → ints1[n] ≤ ints2[n]) ∧ # ints2 = # ints2 → Σ ints1 ≤ Σ ints2 ⊦ |
# ints1 = # ints2, ints2[n] < ints1[n], Σ ints2 < Σ ints1, n < # ints2, i ≤ i0, i0 + Σ ints2 < i + Σ ints1, ∀ n. ¬ # ints2 < n → (i ' + ints1)[n] ≤ (i0 ' + ints2)[n] ⊦ ints2 = []
Used simplifier rules: l: ⊦ # ints = 0 ↔ ints = []; from specification list-data[intlista]%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic1%lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic1%lels-01: ⊦ ¬ i ≤ j ↔ j < i; from specification int-abs%add-c: ⊦ i + j = j + i; from specification int-basic2%add-a: ⊦ i + j + i0 = (i + j) + i0; from specification int-basic2%int-simp-07: ⊦ i ≤ i1 ∧ i2 ≤ i3 → (i1 + i3 < i + i2 ↔ false); from specification int-abs