| m0 +1 ≤ # asar, m0 +1 ≤ n, ∀ n, asar, as. m0 ≤ n ∧ m0 ≤ # asar → union(asar[n, as], 0, m0) = union(asar, 0, m0) ⊦ union(asar[n, as], 0, m0 +1) = union(asar, 0, m0 +1) |
m0 < # asar, m0 < n, ∀ n, asar, as. m0 ≤ n ∧ m0 ≤ # asar → union(asar[n, as], 0, m0) = union(asar, 0, m0) ⊦ asar[m0] ∪ union(asar[n, as], 0, m0) = asar[m0] ∪ union(asar, 0, m0)
Used simplifier rules: union-rec: ⊦ union(asar, n, m + 1) = asar[n + m] ∪ union(asar, n, m);% ⊦ m < n → n ≠ 0; (s)%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic%m ≠ n ⊦ asar[m, a0][n] = asar[n]; (s)% ⊦ ¬ n < n; (s)% ⊦ m + 1 ≤ n ↔ m < n; (s)%c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic% ⊦ n + 0 = n; (s)% ⊦ m +1 = m + 1; (s)