| (A[m + 1] = A[m + 2] ⊃ mkbag(A, # A) -- A[m + 1];(mkbag(A, # A) -- A[m + 1] -- A[m + 2]) ++ A[m + 1]) ++ A[m + 2] = mkbag(A0, # A0), m < # A, m + 2 < # A, m + 1 < # A ⊦ mkbag(A, # A) = (A[m + 1] = A[m + 2] ⊃ mkbag(A, # A) -- A[m + 1];(mkbag(A, # A) -- A[m + 1] -- A[m + 2]) ++ A[m + 1]) ++ A[m + 2] |
Used simplifier rules: mkbag-del-add-content: m < i, i ≤ # A ⊦ (mkbag(A, i) -- A[m]) ++ A[m] = mkbag(A, i);%mkbag-del-add-content-two: m < i, n < i, n ≠ m, i ≤ # A ⊦ (mkbag(A, i) -- A[m] -- A[n]) ++ A[m] ++ A[n] = mkbag(A, i);% ⊦ 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% ⊦ m ≤ m; (s)