| Inv-main(A, A0, m) ⊦ m = 0, Inv-end(A, A, m, m, A[m]) |
# A = # A0, perm(A, A0), sorted(A, 0, m), m ≤ # A0 ⊦ # A0 = 0, m = 0, perm(A[m, A[m]], A)
Used simplifier rules: Inv-main: ⊦ Inv-main(A, A0, i) ↔ # A ≠ 0 ∧ # A = # A0 ∧ i ≤ # A ∧ sorted(A, 0, i) ∧ perm(A, A0);%Inv-end: ⊦ Inv-end(A, A0, i, j, y) ↔ # A ≠ 0 ∧ # A = # A0 ∧ j ≤ i ∧ (j ≠ i → y ≤ A[j + 1]) ∧ sorted(A, 0, (j = i ⊃ i;i + 1)) ∧ perm(A[j, y], A0);%m ≤ m0 ⊦ sorted(A, m, n) → sorted(A, m0, n); (ss)% ⊦ m ≤ m; (s)