| n = scan(key, zbrar, 0, nused), sorted(zbrar, 0, nused), nused ≤ # zbrar ⊦ n ≤ nused ∧ (n < nused → key ≤ zbrar[n].key) ∧ (∀ n0. n0 < n → zbrar[n0].key < key) ∧ (∀ n1. n < n1 ∧ n1 < nused → key < zbrar[n1].key) |
sorted(zbrar, 0, nused), nused ≤ # zbrar, scan(key, zbrar, 0, nused) ≤ nused, scan(key, zbrar, 0, nused) ≤ # zbrar ⊦ (scan(key, zbrar, 0, nused) < n0 ∧ n0 < nused → key < zbrar[n0].key) ∧ (n < scan(key, zbrar, 0, nused) → zbrar[n].key < key) ∧ (scan(key, zbrar, 0, nused) < nused → ¬ zbrar[scan(key, zbrar, 0, nused)].key < key)
Used simplifier rules: scan-max-0: ⊦ ¬ len < scan(key, zbrar, 0, len);%let: ⊦ n ≤ n0 ∧ n0 ≤ n1 → n ≤ n1; (forward) from specification nat% ⊦ m ≤ n ↔ ¬ n < m; (ss)% ⊦ key0 ≤ key1 ↔ ¬ key1 < key0; (s)