| n + m3 + 1 < # zbrar, ∀ m, m0. m < m0 ∧ ¬ m3 + 1 < m0 → zbrar[n + m].key < zbrar[n + m0].key, ∀ n0, zbrar0. n0 + m3 < # zbrar0 ∧ (∀ m, m0. m < m0 ∧ ¬ m3 < m0 → zbrar0[n0 + m].key < zbrar0[n0 + m0].key) → sorted(zbrar0, n0, m3 + 1) ⊦ sorted(zbrar, n, 2 + m3) |
⊦ sorted(zbrar, n, m + 2) ↔ n < # zbrar ∧ zbrar[n].key < zbrar[n + 1].key ∧ sorted(zbrar, n + 1, m + 1)
n + m3 + 1 < # zbrar, ∀ n0, zbrar0. n0 + m3 < # zbrar0 ∧ (∀ m, m0. m < m0 ∧ ¬ m3 < m0 → zbrar0[n0 + m].key < zbrar0[n0 + m0].key) → sorted(zbrar0, n0, m3 + 1), ∀ m, m0. m < m0 ∧ ¬ m3 + 1 < m0 → zbrar[n + m].key < zbrar[n + m0].key ⊦ n < # zbrar ∧ zbrar[n].key < zbrar[n + 1].key ∧ sorted(zbrar, n + 1, m3 + 1)
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic Used terms: m3, n, zbrar