| kar[m] = key-index(key, n), m < # kar, ∀ m0. ¬ m < m0 → kar[m0].idx < # ar ∧ ar[kar[m0].idx].idx = m0 ⊦ valid-idx(kar[0, key-index(key, n)], ar[n, ar[n].idx:= 0], m) |
⊦ valid-idx(kar, ar, n) ↔ n ≤ # kar ∧ (∀ m. m < n → kar[m].idx < # ar ∧ ar[kar[m].idx].idx = m)
kar[m] = key-index(key, n), m < # kar, ∀ m0. ¬ m < m0 → kar[m0].idx < # ar ∧ ar[kar[m0].idx].idx = m0 ⊦ m ≤ # kar[0, key-index(key, n)] ∧ (∀ m0. m0 < m → kar[0, key-index(key, n)][m0].idx < # ar[n, ar[n].idx:= 0] ∧ ar[n, ar[n].idx:= 0][kar[0, key-index(key, n)][m0].idx].idx = m0)
Used terms: m, ar[n, ar[n].idx:= 0], kar[0, key-index(key, n)]