| (mkbag(A, # A) -- A[m + 1] -- A[m + 2]) ++ A[m + 1] ++ b = mkbag(A0, # A0), m < # A, m + 2 < # A, m + 1 < # A ⊦ mkbag(A, # A) -- A[m + 2] = (mkbag(A, # A) -- A[m + 1] -- A[m + 2]) ++ A[m + 1], A[m + 1] = 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 + n = m + n0 ↔ n = n0; (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 + 1], mkbag(A, # A)