| 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 ⊦ ¬ dups(ints -1l max(ints)) ∧ (∀ i. i ∈ ints -1l max(ints) → j0 < i ∧ i ≤ j1 - 1) ∧ ints -1l max(ints) ≠ [], ints = [], dups(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 ≠ max(ints) ' ∧ (i ∈ ints -1l max(ints) → j0 < i ∧ i < j1)
Used simplifier rules: dups: ⊦ dups(ints -1l i) → dups(ints); (forward) from specification list-del[intlista]%del1-empty: ⊦ ints ≠ [] → (ints -1l i = [] ↔ ints = i '); from specification list-del[intlista]%add-c: ⊦ i + j = j + i; from specification int-basic2%add-a: ⊦ i + j + i0 = (i + j) + i0; from specification int-basic2%succ-01: ⊦ i + 1 ≤ j ↔ i < j; from specification int-abs%sub-le-01: ⊦ i ≤ j - i0 ↔ i + i0 ≤ j; from specification int-abs