| ints = max(ints) ', j1 < n→i(# ints) + j0, j0 < max(ints), max(ints) ≤ j1, j0 < j1, max(ints) < n→i(# ints) + j0, ∀ i. i ∈ ints → j0 < i ∧ i ≤ j1, ∀ ints0, j0, j1. # ints0 < # ints → ¬ dups(ints0) ∧ (∀ i. i ∈ ints0 → j0 < i ∧ i ≤ j1) ∧ ints0 ≠ [] → n→i(# ints0) ≤ j1 - j0 ⊦ ints = [], dups(ints), dups(ints -1l max(ints)) |
⊦ # ints ≤ 1 ∧ ints ≠ [] → # ints = 1
¬(# ints ≤ 1 ∧ ints ≠ []), ints = max(ints) ', j1 < n→i(# ints) + j0, j0 < max(ints), max(ints) ≤ j1, j0 < j1, max(ints) < n→i(# ints) + j0, ∀ i. i ∈ ints → j0 < i ∧ i ≤ j1, ∀ ints0, j0, j1. # ints0 < # ints → ¬ dups(ints0) ∧ (∀ i. i ∈ ints0 → j0 < i ∧ i ≤ j1) ∧ ints0 ≠ [] → n→i(# ints0) ≤ j1 - j0 ⊦ ints = [], dups(ints), dups(ints -1l max(ints))
Used simplifier rules: succ-02: ⊦ i < j + 1 ↔ i ≤ j; from specification int-abs%lels-03: ⊦ i < j → (¬ ¬ j ≤ i ↔ false); from specification int-abs%add-a: ⊦ i + j + i0 = (i + j) + i0; from specification int-basic2%add-c: ⊦ i + j = j + i; from specification int-basic2 Used terms: ints