| ar[m] = elemindex(a, m0), valid-idx(kar, ar, n), key-index(key, m) ∈ keyset(kar, n) ⊦ kar[m0] = key-index(key, m) |
ar[m] = elemindex(a, m0), key-index(key, m) ∈ keyset(kar, n), n ≤ # kar, ∀ m. m < n → kar[m].idx < # ar ∧ ar[kar[m].idx].idx = m ⊦ # keyset(kar, n) = 0, kar[m0] = key-index(key, m), keyset(kar, n) = ∅
Used simplifier rules: valid-idx: ⊦ valid-idx(kar, ar, n) ↔ n ≤ # kar ∧ (∀ m. m < n → kar[m].idx < # ar ∧ ar[kar[m].idx].idx = m);%size-zero-01: ⊦ s ≠ ∅ → # s ≠ 0; (forward) from specification set-basic[keyindex-set]%ne-01: ⊦ ki ∈ s → s ≠ ∅; (forward) from specification set-basic[keyindex-set]