| ⊦ n0 < # ar ∧ n1 < # ar → (suffix(ar, n0) < suffix(ar, n1) ↔ ar[n0] < ar[n1] ∨ suffix(ar, n0 + 1) < suffix(ar, n1 + 1) ∧ ar[n0] = ar[n1]) |
[[CONCRETESIMPRULES : ([CSIMPNAMEDSEQ : suffix, , , n ≤ # ar ⊦ suffix(ar, n) = subarray(ar, n, # ar - n)], [CSIMPNAMEDSEQ : lexicographic, , , ⊦ ar0 < ar1 ↔ (∃ n. n ≤ # ar0 ∧ n ≤ # ar1 ∧ subarray(ar0, 0, n) = subarray(ar1, 0, n) ∧ (# ar0 = n → # ar1 > n) ∧ ( # ar0 ≠ n → # ar1 ≠ n ∧ ar0[n] < ar1[n]))], [CSIMPNAMEDSEQ : nat-basic1, gearray, f, ⊦ m < n → n ≠ 0], [CSIMPNAMEDFORWARD : nat-basic1, gearray, f, ⊦ m < n → n ≠ 0], [CSIMPNAMEDSEQ : nat-basic2, gearray, s, ⊦ m < n + 1 ↔ ¬ n < m], [CSIMPNAMEDSEQ : nat, gearray, succ-01, ⊦ m + 1 ≤ n ↔ m < n], [CSIMPNAMEDSEQ : nat, gearray, ls-le-simp, ⊦ m < n → (n ≤ m ↔ false)], [CSIMPNAMEDSEQ : nat-basic2, gearray, c, ⊦ m + n = n + m], [CSIMPNAMEDSEQ : nat-basic2, gearray, a, ⊦ (m + n0) + n1 = m + n0 + n1], [CSIMPNAMEDSEQ : nat, gearray, lep-02, ⊦ m + n ≤ m + n0 ↔ n ≤ n0], [CSIMPNAMEDSEQ : nat, gearray, le, n ≤ m ⊦ (m - n) + m0 ≤ n0 ↔ m + m0 ≤ n0 + n], [CSIMPNAMEDSEQ : nat, gearray, lels, ⊦ ¬ m < n ↔ n ≤ m], [CSIMPNAMEDSEQ : nat, gearray, ls-01, n0 ≤ n ⊦ n - n0 < m ↔ n < m + n0], [CSIMPNAMEDSEQ : nat, gearray, ax-02, ⊦ m > n ↔ n < m], [CSIMPNAMEDSEQ : nat, gearray, ls-02, n0 ≤ n ⊦ m ≤ n - n0 ↔ m + n0 ≤ n], [CSIMPNAMEDSEQ : array-copy, gearray, size-subarray, ⊦ # subarray(ar, m, n) = n], [CSIMPNAMEDSEQ : nat, gearray, lels-01, ⊦ ¬ m ≤ n ↔ n < m], [CSIMPNAMEDSEQ : nat-basic1, gearray, ls-02, ⊦ m < n → ¬ n < m])]]