| kar[3 + 2 * m1] = key-index(key1, m3), kar[4 + 2 * m1] = key-index(key2, m4), kar[m1 + 1] = key-index(key3, m5), kar[m1 / 2] = key-index(key4, m6), key-index(key1, m3) = key-index(key, m0), 3 + 2 * m1 < # kar, m1 + 1 < # kar, m1 + 1 < n, key < key4, 3 + 2 * m1 < n, n ≤ # kar, ∀ m. m < n ∧ m ≠ 0 → ¬ kar[m].key < kar[(m - 1) / 2].key, ¬ 4 + 2 * m1 < n ∨ ¬ key2 < key1 ⊦ key3 < key4 |
kar[3 + 2 * m1] = key-index(key, m3), kar[4 + 2 * m1] = key-index(key2, m4), kar[m1 + 1] = key-index(key3, m5), kar[m1 / 2] = key-index(key4, m6), 3 + 2 * m1 < # kar, m1 + 1 < # kar, m1 + 1 < n, key < key4, 3 + 2 * m1 < n, n ≤ # kar, ∀ m. m < n ∧ m ≠ 0 → ¬ kar[m].key < kar[(m - 1) / 2].key, ¬ 4 + 2 * m1 < n ∨ ¬ key2 < key ⊦ key3 < key4
Used simplifier rules: lel: ⊦ key < key0 ∧ key = key1 → key1 < key0; (forward) from specification oelem[binheap-key]% ⊦ key-index(key, m) = key-index(key0, m0) ↔ key = key0 ∧ m = m0; (ws)