| n < m1, n + m0 < # ar1, m0 + m1 ≤ # ar1 ⊦ (n + m0 < n3 + m0 ∨ (n3 + m0) + n2 ≤ n + m0 ⊃ ar1[n + m0];ar0[(n + m0) + n0 - n3 + m0]) = (n < n3 ∨ n3 + n2 ≤ n ⊃ copy(ar1, m0, mkarray(m1), 0, m1)[n];ar0[n + n0 - n3]) |
n < m1, n + m0 < # ar1, m0 + m1 ≤ # ar1 ⊦ (n < n3 ∨ n3 + n2 ≤ n ⊃ ar1[n + m0];ar0[n + n0 - n3]) = (n < n3 ∨ n3 + n2 ≤ n ⊃ copy(ar1, m0, mkarray(m1), 0, m1)[n];ar0[n + n0 - n3])
Used simplifier rules: ⊦ m < n → n ≠ 0; (s)%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic% ⊦ m + n - n + n1 = m - n1; (s)% ⊦ m + n ≤ m + n0 ↔ n ≤ n0; (s)%c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic% ⊦ m + n < m + n0 ↔ n < n0; (s)