| # ints = m + 1 ∧ # ints ≠ 0, i + 1 < n→i(# ints), i ∈ ints, 0 ≤ i, i < n→i(# ints), ∀ i0. i0 ∈ ints → 0 ≤ i0 ∧ i0 ≤ i, ∀ j0, ints. i→n(j0) < i→n(i + 1) → (∀ i. i ∈ ints → 0 ≤ i ∧ i < j0) ∧ 0 ≤ j0 ∧ j0 < n→i(# ints) → dups(ints) ⊦ ints = [], # ints = 1, ~1 = i, dups(ints), (i0 ∈ ints -1l i → 0 ≤ i0 ∧ i0 < i) ∧ i < n→i(m) |
# ints = m + 1, i0 ∈ ints, i0 ∈ ints -1l i, i < n→i(m), i ∈ ints, 0 ≤ i, i ≤ n→i(m), ∀ i0. i0 ∈ ints → 0 ≤ i0 ∧ i0 ≤ i, ∀ j0, ints. i→n(j0) < i→n(i + 1) → (∀ i. i ∈ ints → 0 ≤ i ∧ i < j0) ∧ 0 ≤ j0 ∧ j0 < n→i(# ints) → dups(ints) ⊦ m = 0, ~1 = i, ints = [], dups(ints), 0 ≤ i0 ∧ i0 < i
Used simplifier rules: zero: ⊦ 0 < m ↔ m ≠ 0; from specification nat-basic1%num-n2i-ls-02: 0 ≤ i ⊦ (* i) < n→i(n) ↔ i→n(i) < n; from specification intnat%forward-lele: ⊦ j ≤ j0 ∧ j0 ≤ j1 → j ≤ j1; (forward) from specification int-abs%in-01-01: ⊦ i ∈ ints -1l i0 → i ∈ ints; (forward) from specification list-del[intlista]%ls-01: ⊦ i + j < i + i0 ↔ j < i0; from specification int-basic2%succ-02: ⊦ i < j + 1 ↔ i ≤ j; 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%nat2int: ⊦ 0 ≤ n→i(n); from specification intnat%mone-06: ⊦ ~1 < i ↔ 0 ≤ i; from specification int-abs%numls-02: ⊦ (* j) < i0 + (* j0) ↔ j - j0 < i0; from specification int-abs%n2i-add: ⊦ n→i(m + n) = n→i(m) + n→i(n); from specification intnat%c: ⊦ m + n = n + m; from specification nat-basic2%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic2%one: ⊦ m + n = 1 ↔ m = 0 ∧ n = 1 ∨ n = 0 ∧ m = 1; from specification nat-basic2%forward-le-05: ⊦ i < j ∧ 0 ≤ i → 0 < j; (forward) from specification int-abs%l: ⊦ # ints = 0 ↔ ints = []; from specification list-data[intlista]