| m0 + 1 < # zbrar, 2 + m0 < # zbrar, m0 < nused, nused < # zbrar, n < # zbrar, m < nused, m0 < m, m + 1 < # zbrar, m < # zbrar, m0 + 1 < nused, m0 < # zbrar, sorted(zbrar, 0, nused + 1), n ≤ nused ⊦ zbrar[m0 + 1].key < (m < n ⊃ zbrar[m];zbrar[m + 1]).key, m0 < n |
n + 1 < # zbrar, n + 1 < nused, n < nused, n < m, m0 + 1 < # zbrar, 2 + m0 < # zbrar, m0 < nused, nused < # zbrar, n < # zbrar, m < nused, m0 < m, m + 1 < # zbrar, m < # zbrar, m0 + 1 < nused, m0 < # zbrar, 2 + n < # zbrar, sorted(zbrar, 0, nused + 1), n ≤ m0 ⊦ zbrar[m0 + 1].key < zbrar[m + 1].key
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic%transitivity: ⊦ n < n0 ∧ n0 < n1 → n < n1; (forward) from specification oelem[nat-set]% ⊦ m +1 = m + 1; (s)%lf: ⊦ m < n ∧ n < n0 → m +1 < n0; (forward) from specification nat-basic% ⊦ n < n0 → (n0 < n ↔ false); (ss)% ⊦ m < n → m ≤ n; (s)%fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat% ⊦ m < n ↔ ¬ n ≤ m; (ss)