| #(ints -1l max(ints)) < # ints, j1 < n→i(# ints) + j0, j0 < max(ints), max(ints) ≤ j1, j0 < j1, max(ints) < n→i(# ints) + j0, n→i(#(ints -1l max(ints))) + j0 < j1, ∀ 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) |
⊦ i ∈ ints → #(ints -1l i) = (# ints)-1
max(ints) ∈ ints, (# ints)-1 < # ints, j1 < n→i(# ints) + j0, j0 < max(ints), max(ints) ≤ j1, j0 < j1, max(ints) < n→i(# ints) + j0, n→i((# ints)-1) + j0 < j1, ∀ 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)
Used simplifier rules: in-02-01: ⊦ ¬ i ∈ ints → ints -1l i = ints; from specification list-del[intlista]%ref-1: ⊦ ¬ n < n; from specification nat-basic1 Used terms: max(ints), ints