| # ar0 = 0, ∀ ar, ar1. # ar < # ar0 → (true → (∃ n. n ≤ # ar ∧ n ≤ # ar1 ∧ subarray(ar, 0, n) = subarray(ar1, 0, n) ∧ (n ≠ # ar ∧ n ≠ # ar1 → ar[n] ≠ ar1[n]))) ⊦ ∃ n. n ≤ # ar0 ∧ n ≤ # ar1 ∧ subarray(ar0, 0, n) = subarray(ar1, 0, n) ∧ (n ≠ # ar0 ∧ n ≠ # ar1 → ar0[n] ≠ ar1[n]) |
# ar0 = 0, ∀ ar, ar1. # ar < 0 → (true → (∃ n. n ≤ # ar ∧ n ≤ # ar1 ∧ subarray(ar, 0, n) = subarray(ar1, 0, n) ∧ (n ≠ # ar ∧ n ≠ # ar1 → ar[n] ≠ ar1[n]))) ⊦ ar0 = mkarray(0)
[[CONCRETESIMPRULES : ([CSIMPNAMEDSEQ : array-copy, gearray, subarray-zero, ⊦ subarray(ar, n, 0) = mkarray(0)], [CSIMPNAMEDSEQ : nat, gearray, lez, ⊦ 0 ≤ m], [CSIMPNAMEDSEQ : array-copy, gearray, subarray-elim, # ar = n ⊦ subarray(ar, 0, n) = ar], [CSIMPNAMEDSEQ : nat, gearray, lez-01, ⊦ m ≤ 0 ↔ m = 0])]]