| # A = # A0, i + 1 < # A0, m < i, m < # A0, perm(A[m + 1, y][2 + m, x], A0), sorted(A, 3 + m, i + 2), sorted(A, 0, m + 1), i ≤ # A0, m + 1 ≠ i → ¬ A[3 + m] < A[m], m + 1 ≠ i → x < A[3 + m] ⊦ x < y, x < A[m], sorted(A[2 + m, x], 2 + m, i + 2) |
a ≤ ar[n + 1] ⊦ sorted(ar, n + 1, m) → sorted(ar[n, a], n, m)
Used simplifier rules: a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic%c: ⊦ m + n = n + m; from specification nat-basic% ⊦ x ≤ y ↔ ¬ y < x; (s)% ⊦ m + n ≤ m + n0 ↔ n ≤ n0; (s)% ⊦ m ≤ n ↔ ¬ n < m; (ss)% ⊦ ¬ n < n; (s)%m ≤ m0 ⊦ sorted(A, m, n) → sorted(A, m0, n); (ss)%transitivity: ⊦ a < b ∧ b < c → a < c; (forward) from specification oelem%nll: ⊦ ¬ b < a ∧ b < c → a < c; (forward) from specification oelem% ⊦ ¬ a < a; (s)% ⊦ m + n - n + n1 = m - n1; (s)% ⊦ m < 1 ↔ m = 0; (s)% ⊦ m < n → n ≠ 0; (s)% ⊦ a < b → (b < a ↔ false); (ss)%eqle-one: ⊦ m = n + 1 ∧ n < n0 → m ≤ n0; (forward) from specification nat%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic%lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic%lf: ⊦ m < n ∧ n < n0 → m +1 < n0; (forward) from specification nat-basic%trans: ⊦ n < n0 ∧ n0 < n1 → n < n1; (forward) from specification nat-basic%lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic%fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat%n < n0 ⊦ (* n) ≠ m0 + (* n0); (s)% ⊦ m ≤ m; (s)% ⊦ m +1 = m + 1; (s)% ⊦ m + n < m + n0 ↔ n < n0; (s)% ⊦ m < m + n ↔ n ≠ 0; (s)% ⊦ m < n + 1 ↔ ¬ n < m; (s)%n < n0 ⊦ m + (* n) < m0 + (* n0) ↔ m < m0 + (n0 - n); (s)%1 ≤ # ar, n0 ≤ # ar, n0 - n ≤ 1 ⊦ sorted(ar, n, n0); (as)% ⊦ m + 1 ≤ n ↔ m < n; (s)% ⊦ # ar[n, a] = # ar; (s)%1 ≤ # ar, n0 ≤ # ar, n0 - n ≤ 1 ⊦ sorted(ar, n, n0); (ss) Used terms: i + 2, x, 2 + m, A