| A[n0] = A[m], mkbag(A[m, a], n0) = (mkbag(A, n0) -- A[m]) ++ a, m < # A, m ≤ n0, ∀ m, A, a. m < n0 ∧ m < # A → mkbag(A[m, a], n0) = (mkbag(A, n0) -- A[m]) ++ a ⊦ (mkbag(A, n0) -- A[m]) ++ A[m, a][n0] = mkbag(A, n0) |
⊦ m ≠ n → ar[n, a][m] = ar[m]
Used simplifier rules: mkbag-update-out-of-bound: ⊦ n ≤ m → mkbag(A[m, a], n) = mkbag(A, n);%index-in-mkbag: m < # A, m < n ⊦ A[m] ∈ mkbag(A, n);%bag-del-add: a ∈ bag ⊦ (bag -- a) ++ a = bag;% ⊦ m ≠ n → (m ≤ n ↔ m < n); (s)%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic% ⊦ m < n → n ≠ 0; (s)% ⊦ m < # ar → ar[m, a][m] = a; (s) Used terms: n0, a, m, A