| (mkbag(A, # A) -- A[m + 2]) ++ b = mkbag(A0, # A0), A[m + 1] = A[m + 2], m < # A, m + 2 < # A, m + 1 < # A ⊦ (mkbag(A, # A) -- A[m] -- A[m + 2]) ++ A[m] = mkbag(A, # A) -- A[m + 2], b = A[m + 2] |
⊦ bag -- a -- b = bag -- b -- a
Used simplifier rules: in-mkbag-del: i ≤ # A, m < i, n < i, n ≠ m ⊦ A[m] ∈ mkbag(A, i) -- A[n];%bag-del-add: a ∈ bag ⊦ (bag -- a) ++ a = bag;% ⊦ m ≤ m; (s)% ⊦ m = m + n ↔ n = 0; (s)%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic%c: ⊦ m + n = n + m; from specification nat-basic Used terms: A[m + 2], A[m], mkbag(A, # A)