| (mkbag(A, # A) -- A[m + 1]) ++ a = mkbag(A0, # A0), m + 1 < # A, m < # A ⊦ (mkbag(A[m, a], # A) -- A[m + 1]) ++ A[m] = (mkbag(A, # A) -- A[m + 1]) ++ a |
(mkbag(A, # A) -- A[m + 1]) ++ a = mkbag(A0, # A0), m < # A, m + 1 < # A ⊦ (a = A[m + 1] ⊃ mkbag(A, # A) -- A[m];(mkbag(A, # A) -- A[m] -- A[m + 1]) ++ a) ++ A[m] = (mkbag(A, # A) -- A[m + 1]) ++ a
Used simplifier rules: mkbag-update: m < # A ⊦ m < n → mkbag(A[m, a], n) = (mkbag(A, n) -- A[m]) ++ a;% ⊦ (bag ++ a) -- b = (a = b ⊃ bag;(bag -- b) ++ a); (s)% ⊦ m < n → (n ≤ m ↔ false); (s)% ⊦ m < n ↔ ¬ n ≤ m; (ss)