| ⊦ Inv-last-inner(A, A0, x, y, i, j) → ( Inv-last-inner(A1, A2, x0, y0, i0, j0) ↔ # A ≠ 0 ∧ # A = # A0 ∧ i ≤ # A ∧ j ≤ i ∧ y ≤ x ∧ y ≤ A[j + 1] ∧ sorted(A, 0, j) ∧ sorted(A, j + 1, i + 2) ∧ (j ≠ 0 → A[j - 1] ≤ A[j + 1]) ∧ perm(A[j, y], A0) → # A1 ≠ 0 ∧ # A1 = # A2 ∧ i0 ≤ # A1 ∧ j0 ≤ i0 ∧ y0 ≤ x0 ∧ y0 ≤ A1[j0 + 1] ∧ sorted(A1, 0, j0) ∧ sorted(A1, j0 + 1, i0 + 2) ∧ (j0 ≠ 0 → A1[j0 - 1] ≤ A1[j0 + 1]) ∧ perm(A1[j0, y0], A2)) |
Inv-last-inner(A, A0, x, y, i, j) ⊦ Inv-last-inner(A1, A2, x0, y0, i0, j0) ↔ # A ≠ 0 ∧ # A = # A0 ∧ i ≤ # A ∧ j ≤ i ∧ y ≤ x ∧ y ≤ A[j + 1] ∧ sorted(A, 0, j) ∧ sorted(A, j + 1, i + 2) ∧ (j ≠ 0 → A[j - 1] ≤ A[j + 1]) ∧ perm(A[j, y], A0) → # A1 ≠ 0 ∧ # A1 = # A2 ∧ i0 ≤ # A1 ∧ j0 ≤ i0 ∧ y0 ≤ x0 ∧ y0 ≤ A1[j0 + 1] ∧ sorted(A1, 0, j0) ∧ sorted(A1, j0 + 1, i0 + 2) ∧ (j0 ≠ 0 → A1[j0 - 1] ≤ A1[j0 + 1]) ∧ perm(A1[j0, y0], A2)