| kar[m] = key-index(key, m1), m < # kar, ∀ m2. ¬ m < m2 → kar[m2].idx < # ar ∧ ar[kar[m2].idx].idx = m2 ⊦ valid-idx(kar[m0, key-index(key, m1)], ar[m1, ar[m1].idx:= m0], 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, m1), m < # kar, ∀ m2. ¬ m < m2 → kar[m2].idx < # ar ∧ ar[kar[m2].idx].idx = m2 ⊦ m ≤ # kar[m0, key-index(key, m1)] ∧ (∀ m2. m2 < m → kar[m0, key-index(key, m1)][m2].idx < # ar[m1, ar[m1].idx:= m0] ∧ ar[m1, ar[m1].idx:= m0][kar[m0, key-index(key, m1)][m2].idx].idx = m2)
Used terms: m, ar[m1, ar[m1].idx:= m0], kar[m0, key-index(key, m1)]