| # ints1 = # ints2, ∀ ints0. # ints2 = # ints0 ∧ (∀ n. n < # ints0 → ints1[n] = ints0[n]) → Σ ints1 = Σ ints0, ¬ # ints2 < 0 → (i ' + ints1)[0] = (i0 ' + ints2)[0], ∀ n. ¬ # ints2 < n → (i ' + ints1)[n] = (i0 ' + ints2)[n] ⊦ i + Σ ints1 = i0 + Σ ints2 |
# ints1 = # ints2, ∀ ints0. # ints2 = # ints0 ∧ (∀ n. n < # ints0 → ints1[n] = ints0[n]) → Σ ints1 = Σ ints0, ∀ n. ¬ # ints2 < n → (i0 ' + ints1)[n] = (i0 ' + ints2)[n] ⊦ Σ ints1 = Σ ints2
Used simplifier rules: add-c: ⊦ i + j = j + i; from specification int-basic2%add-a: ⊦ i + j + i0 = (i + j) + i0; from specification int-basic2%add-in: ⊦ i + j = i + i0 ↔ j = i0; from specification int-basic2%a: ⊦ (ints + ints0) + ints1 = ints + ints0 + ints1; from specification list[intlista]%get-zero-01: ⊦ (i ' + ints)[0] = i; from specification list-del[intlista]%zero-01: ⊦ ¬ m < 0; from specification nat-basic1