| (mkbag(A, # A) -- A[m + 1] -- A[m + 2]) ++ a ++ b = mkbag(A0, # A0), m + 1 < # A, m + 2 < # A, m < # A ⊦ (mkbag(A, # A) -- A[m + 1] -- A[m] -- A[m + 2]) ++ A[m] = mkbag(A, # A) -- A[m + 1] -- A[m + 2], a = A[m + 1], a = A[m + 2], b = A[m + 2] |
⊦ bag -- a -- b = bag -- b -- a
Used simplifier rules: in-mkbag-del-two: i ≤ # A, m < i, n < i, n0 < i, n0 ≠ m, n ≠ m, n ≠ n0 ⊦ A[m] ∈ mkbag(A, i) -- A[n] -- A[n0];%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% ⊦ m + n = m + n0 ↔ n = n0; (s) Used terms: A[m + 2], A[m], mkbag(A, # A) -- A[m + 1]