| n1 + m ≤ # ar1, n0 + m ≤ # ar0 ⊦ (∀ n. n < m → ar0[n0 + n] = ar1[n1 + n]) ↔ # subarray(ar0, n0, m) = # subarray(ar1, n1, m) ∧ (∀ n. n < # subarray(ar0, n0, m) → subarray(ar0, n0, m)[n] = subarray(ar1, n1, m)[n]) |
n < m, n1 + m ≤ # ar1, n0 + m ≤ # ar0, ∀ n. n < m → ar0[n0 + n] = ar1[n1 + n] ⊦ ar0[n0 + n] = ar1[n1 + n]
Used simplifier rules: ⊦ m < n → n ≠ 0; (s)%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic% ⊦ n0 < n → subarray(ar, m, n)[n0] = ar[m + n0]; (s)% ⊦ # subarray(ar, m, n) = n; (s)