| m0 = m3 +1, n + m0 < # zbrar, ∀ n, zbrar. n + m0 ≤ # zbrar ∧ (∀ m2, m1. m2 < m1 ∧ m1 < m0 → zbrar[n + m2].key < zbrar[n + m1].key) → sorted(zbrar, n, m0), ∀ m, m1. m < m1 ∧ ¬ m0 < m1 → zbrar[n + m].key < zbrar[n + m1].key ⊦ sorted(zbrar, n, m0 + 1) |
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)
Used simplifier rules: ⊦ m < n + 1 ↔ ¬ n < m; (s)% ⊦ m + 1 ≤ n ↔ m < n; (s)%c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic% ⊦ m +1 = m + 1; (s)