| 2exp-size(n0), 2exp-size(# kar), m < minsize, m < n0, heap-order(kar, m), no-dups-idx(kar, m), valid-idx(kar, ar, m), minsize ≤ n0, m ≤ # kar ⊦ no-dups-idx(copy(kar, 0, mkkeyarray(n0), 0, m), m) |
⊦ no-dups-idx(kar, n) ↔ (∀ m0, m1. m0 < # kar ∧ m0 < n ∧ m1 < # kar ∧ m1 < n ∧ m0 ≠ m1 → kar[m0].idx ≠ kar[m1].idx)
2exp-size(# kar), 2exp-size(n0), m < n0, m < minsize, heap-order(kar, m), no-dups-idx(kar, m), valid-idx(kar, ar, m), m ≤ # kar, minsize ≤ n0 ⊦ ∀ m0, m1. m0 < # copy(kar, 0, mkkeyarray(n0), 0, m) ∧ m0 < m ∧ m1 < # copy(kar, 0, mkkeyarray(n0), 0, m) ∧ m1 < m ∧ m0 ≠ m1 → copy(kar, 0, mkkeyarray(n0), 0, m)[m0].idx ≠ copy(kar, 0, mkkeyarray(n0), 0, m)[m1].idx
Used terms: m, copy(kar, 0, mkkeyarray(n0), 0, m)