| A[n0] = A[m], mkbag(A[m, a], n0) = (mkbag(A, n0) -- A[m]) ++ a, m < # A, m ≤ n0, m < n0 ∧ m < # A → mkbag(A[m, A[m, a][n0]], n0) = (mkbag(A, n0) -- A[m]) ++ A[m, a][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) |
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)
Used simplifier rules: index-in-mkbag: m < # A, m < n ⊦ A[m] ∈ mkbag(A, n);%bag-del-add: a ∈ bag ⊦ (bag -- a) ++ a = bag;% ⊦ ar[n] = a → ar[n, a] = ar; (s)% ⊦ m < n → ar[m, a][n] = ar[n]; (s)