| ⊦ count(a, bag0 \ bag1) = (count(a, bag1) ≤ count(a, bag0) ⊃ count(a, bag0) - count(a, bag1);0) |
count(a, bag0 \ bag1) ≠ (count(a, bag1) ≤ count(a, bag0) ⊃ count(a, bag0) - count(a, bag1);0) ⊦
| count(a, bag0 \ bag1) ≠ (count(a, bag1) ≤ count(a, bag0) ⊃ count(a, bag0) - count(a, bag1);0) ⊦ |
count(a, bag0 \ bag1) = (count(a, bag1) < count(a, bag0) ⊃ count(a, bag0) - count(a, bag1);0), count(a, bag0 \ bag1) ≠ (count(a, bag1) ≤ count(a, bag0) ⊃ count(a, bag0) - count(a, bag1);0) ⊦
count(a, bag0 \ bag1) ≠ (count(a, bag1) < count(a, bag0) ⊃ count(a, bag0) - count(a, bag1);0), count(a, bag0 \ bag1) ≠ (count(a, bag1) ≤ count(a, bag0) ⊃ count(a, bag0) - count(a, bag1);0) ⊦
Used formulas: count(a, bag0 \ bag1) = (count(a, bag1) < count(a, bag0) ⊃ count(a, bag0) - count(a, bag1);0)
| count(a, bag0 \ bag1) = (count(a, bag1) < count(a, bag0) ⊃ count(a, bag0) - count(a, bag1);0), count(a, bag0 \ bag1) ≠ (count(a, bag1) ≤ count(a, bag0) ⊃ count(a, bag0) - count(a, bag1);0) ⊦ |
Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ m ≤ n → (n ≤ m ↔ m = n); (s) ⊦ m - m = 0; (s) ⊦ m < n → m ≤ n; (s)
| count(a, bag0 \ bag1) ≠ (count(a, bag1) < count(a, bag0) ⊃ count(a, bag0) - count(a, bag1);0), count(a, bag0 \ bag1) ≠ (count(a, bag1) ≤ count(a, bag0) ⊃ count(a, bag0) - count(a, bag1);0) ⊦ |
count(a, bag0 \ ∅) ≠ (count(a, ∅) < count(a, bag0) ⊃ count(a, bag0) - count(a, ∅);0), count(a, bag0 \ ∅) ≠ (count(a, ∅) ≤ count(a, bag0) ⊃ count(a, bag0) - count(a, ∅);0) ⊦
count(a, bag0 \ (bag ++ a0)) ≠ (count(a, bag ++ a0) < count(a, bag0) ⊃ count(a, bag0) - count(a, bag ++ a0);0), count(a, bag0 \ (bag ++ a0)) ≠ (count(a, bag ++ a0) ≤ count(a, bag0) ⊃ count(a, bag0) - count(a, bag ++ a0);0), ∀ a, bag0. ¬ ( count(a, bag0 \ bag) ≠ (count(a, bag) < count(a, bag0) ⊃ count(a, bag0) - count(a, bag);0) ∧ count(a, bag0 \ bag) ≠ (count(a, bag) ≤ count(a, bag0) ⊃ count(a, bag0) - count(a, bag);0)) ⊦
Used simplifier rules: bag('a) generated by ∅, ++;;
| count(a, bag0 \ ∅) ≠ (count(a, ∅) < count(a, bag0) ⊃ count(a, bag0) - count(a, ∅);0), count(a, bag0 \ ∅) ≠ (count(a, ∅) ≤ count(a, bag0) ⊃ count(a, bag0) - count(a, ∅);0) ⊦ |
count(a, bag0) ≠ (count(a, bag0) ≠ 0 ⊃ count(a, bag0);0), count(a, bag0) ≠ (0 ≤ count(a, bag0) ⊃ count(a, bag0);0) ⊦
Used simplifier rules: diff-empty: ⊦ bag0 \ ∅ = bag0; ⊦ m - 0 = m; (s) ⊦ count(a, ∅) = 0; (s) ⊦ 0 < m ↔ m ≠ 0; (s)
| count(a, bag0) ≠ (count(a, bag0) ≠ 0 ⊃ count(a, bag0);0), count(a, bag0) ≠ (0 ≤ count(a, bag0) ⊃ count(a, bag0);0) ⊦ |
| count(a, bag0 \ (bag ++ a0)) ≠ (count(a, bag ++ a0) < count(a, bag0) ⊃ count(a, bag0) - count(a, bag ++ a0);0), count(a, bag0 \ (bag ++ a0)) ≠ (count(a, bag ++ a0) ≤ count(a, bag0) ⊃ count(a, bag0) - count(a, bag ++ a0);0), ∀ a, bag0. ¬ ( count(a, bag0 \ bag) ≠ (count(a, bag) < count(a, bag0) ⊃ count(a, bag0) - count(a, bag);0) ∧ count(a, bag0 \ bag) ≠ (count(a, bag) ≤ count(a, bag0) ⊃ count(a, bag0) - count(a, bag);0)) ⊦ |
count(a, (bag0 -- a0) \ bag) ≠ (count(a, bag ++ a0) < count(a, bag0) ⊃ count(a, bag0) - count(a, bag ++ a0);0), count(a, (bag0 -- a0) \ bag) ≠ (count(a, bag ++ a0) ≤ count(a, bag0) ⊃ count(a, bag0) - count(a, bag ++ a0);0), ∀ a1, bag1. count(a1, bag1 \ bag) = (count(a1, bag) < count(a1, bag1) ⊃ count(a1, bag1) - count(a1, bag);0) ∨ count(a1, bag1 \ bag) = (count(a1, bag) ≤ count(a1, bag1) ⊃ count(a1, bag1) - count(a1, bag);0) ⊦
Used simplifier rules: diff-rec: ⊦ bag0 \ (bag1 ++ a) = (bag0 -- a) \ bag1;
| count(a, (bag0 -- a0) \ bag) ≠ (count(a, bag ++ a0) < count(a, bag0) ⊃ count(a, bag0) - count(a, bag ++ a0);0), count(a, (bag0 -- a0) \ bag) ≠ (count(a, bag ++ a0) ≤ count(a, bag0) ⊃ count(a, bag0) - count(a, bag ++ a0);0), ∀ a1, bag1. count(a1, bag1 \ bag) = (count(a1, bag) < count(a1, bag1) ⊃ count(a1, bag1) - count(a1, bag);0) ∨ count(a1, bag1 \ bag) = (count(a1, bag) ≤ count(a1, bag1) ⊃ count(a1, bag1) - count(a1, bag);0) ⊦ |
count(a, (bag0 -- a0) \ bag) ≠ (count(a, bag ++ a0) < count(a, bag0) ⊃ count(a, bag0) - count(a, bag ++ a0);0), count(a, (bag0 -- a0) \ bag) ≠ (count(a, bag ++ a0) ≤ count(a, bag0) ⊃ count(a, bag0) - count(a, bag ++ a0);0), count(a, (bag0 -- a0) \ bag) = (count(a, bag) < count(a, bag0 -- a0) ⊃ count(a, bag0 -- a0) - count(a, bag);0) ∨ count(a, (bag0 -- a0) \ bag) = (count(a, bag) ≤ count(a, bag0 -- a0) ⊃ count(a, bag0 -- a0) - count(a, bag);0) ⊦
Used terms: a, bag0 -- a0
| count(a, (bag0 -- a0) \ bag) ≠ (count(a, bag ++ a0) < count(a, bag0) ⊃ count(a, bag0) - count(a, bag ++ a0);0), count(a, (bag0 -- a0) \ bag) ≠ (count(a, bag ++ a0) ≤ count(a, bag0) ⊃ count(a, bag0) - count(a, bag ++ a0);0), count(a, (bag0 -- a0) \ bag) = (count(a, bag) < count(a, bag0 -- a0) ⊃ count(a, bag0 -- a0) - count(a, bag);0) ∨ count(a, (bag0 -- a0) \ bag) = (count(a, bag) ≤ count(a, bag0 -- a0) ⊃ count(a, bag0 -- a0) - count(a, bag);0) ⊦ |
count(a, (bag0 -- a0) \ bag) ≠ (count(a, bag ++ a0) < count(a, bag0) ⊃ count(a, bag0) - count(a, bag ++ a0);0), count(a, (bag0 -- a0) \ bag) ≠ (count(a, bag ++ a0) ≤ count(a, bag0) ⊃ count(a, bag0) - count(a, bag ++ a0);0), count(a, (bag0 -- a0) \ bag) = (count(a, bag) < count(a, bag0) - (a = a0 ∧ count(a0, bag0) ≠ 0 ⊃ 1;0) ⊃ count(a, bag0) - (a = a0 ∧ count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a, bag) ;0 ) ∨ count(a, (bag0 -- a0) \ bag) = (count(a, bag) ≤ count(a, bag0) - (a = a0 ∧ count(a0, bag0) ≠ 0 ⊃ 1;0) ⊃ count(a, bag0) - (a = a0 ∧ count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a, bag);0) ⊦
Used simplifier rules: count-del: ⊦ count(a, bag -- b) = count(a, bag) - (a = b ∧ count(a, bag) ≠ 0 ⊃ 1;0);
| count(a, (bag0 -- a0) \ bag) ≠ (count(a, bag ++ a0) < count(a, bag0) ⊃ count(a, bag0) - count(a, bag ++ a0);0), count(a, (bag0 -- a0) \ bag) ≠ (count(a, bag ++ a0) ≤ count(a, bag0) ⊃ count(a, bag0) - count(a, bag ++ a0);0), count(a, (bag0 -- a0) \ bag) = (count(a, bag) < count(a, bag0) - (a = a0 ∧ count(a0, bag0) ≠ 0 ⊃ 1;0) ⊃ count(a, bag0) - (a = a0 ∧ count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a, bag) ;0 ) ∨ count(a, (bag0 -- a0) \ bag) = (count(a, bag) ≤ count(a, bag0) - (a = a0 ∧ count(a0, bag0) ≠ 0 ⊃ 1;0) ⊃ count(a, bag0) - (a = a0 ∧ count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a, bag);0) ⊦ |
⊦ a ≠ b → count(a, bag ++ b) = count(a, bag)
a = a0, count(a, (bag0 -- a0) \ bag) ≠ (count(a, bag ++ a0) < count(a, bag0) ⊃ count(a, bag0) - count(a, bag ++ a0);0), count(a, (bag0 -- a0) \ bag) ≠ (count(a, bag ++ a0) ≤ count(a, bag0) ⊃ count(a, bag0) - count(a, bag ++ a0);0), count(a, (bag0 -- a0) \ bag) = (count(a, bag) < count(a, bag0) - (a = a0 ∧ count(a0, bag0) ≠ 0 ⊃ 1;0) ⊃ count(a, bag0) - (a = a0 ∧ count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a, bag) ;0 ) ∨ count(a, (bag0 -- a0) \ bag) = (count(a, bag) ≤ count(a, bag0) - (a = a0 ∧ count(a0, bag0) ≠ 0 ⊃ 1;0) ⊃ count(a, bag0) - (a = a0 ∧ count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a, bag);0) ⊦
Used simplifier rules: ⊦ m - 0 = m; (s) Used terms: a0, bag, a
| ⊦ a ≠ b → count(a, bag ++ b) = count(a, bag) |
| a = a0, count(a, (bag0 -- a0) \ bag) ≠ (count(a, bag ++ a0) < count(a, bag0) ⊃ count(a, bag0) - count(a, bag ++ a0);0), count(a, (bag0 -- a0) \ bag) ≠ (count(a, bag ++ a0) ≤ count(a, bag0) ⊃ count(a, bag0) - count(a, bag ++ a0);0), count(a, (bag0 -- a0) \ bag) = (count(a, bag) < count(a, bag0) - (a = a0 ∧ count(a0, bag0) ≠ 0 ⊃ 1;0) ⊃ count(a, bag0) - (a = a0 ∧ count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a, bag) ;0 ) ∨ count(a, (bag0 -- a0) \ bag) = (count(a, bag) ≤ count(a, bag0) - (a = a0 ∧ count(a0, bag0) ≠ 0 ⊃ 1;0) ⊃ count(a, bag0) - (a = a0 ∧ count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a, bag);0) ⊦ |
count(a0, (bag0 -- a0) \ bag) ≠ (count(a0, bag) + 1 < count(a0, bag0) ⊃ count(a0, bag0) - count(a0, bag) + 1;0), count(a0, (bag0 -- a0) \ bag) ≠ (count(a0, bag) + 1 ≤ count(a0, bag0) ⊃ count(a0, bag0) - count(a0, bag) + 1;0), count(a0, (bag0 -- a0) \ bag) = (count(a0, bag) < count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) ⊃ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a0, bag);0) ∨ count(a0, (bag0 -- a0) \ bag) = (count(a0, bag) ≤ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) ⊃ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a0, bag);0) ⊦
Used simplifier rules: ⊦ count(a, bag ++ a) = count(a, bag) + 1; (s)
| count(a0, (bag0 -- a0) \ bag) ≠ (count(a0, bag) + 1 < count(a0, bag0) ⊃ count(a0, bag0) - count(a0, bag) + 1;0), count(a0, (bag0 -- a0) \ bag) ≠ (count(a0, bag) + 1 ≤ count(a0, bag0) ⊃ count(a0, bag0) - count(a0, bag) + 1;0), count(a0, (bag0 -- a0) \ bag) = (count(a0, bag) < count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) ⊃ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a0, bag);0) ∨ count(a0, (bag0 -- a0) \ bag) = (count(a0, bag) ≤ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) ⊃ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a0, bag);0) ⊦ |
count(a0, (bag0 -- a0) \ bag) ≠ count(a0, bag0) - count(a0, bag) + 1, count(a0, (bag0 -- a0) \ bag) ≠ (count(a0, bag) + 1 ≤ count(a0, bag0) ⊃ count(a0, bag0) - count(a0, bag) + 1;0), count(a0, bag) + 1 < count(a0, bag0), count(a0, (bag0 -- a0) \ bag) = (count(a0, bag) < count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) ⊃ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a0, bag);0) ∨ count(a0, (bag0 -- a0) \ bag) = (count(a0, bag) ≤ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) ⊃ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a0, bag);0) ⊦
count(a0, (bag0 -- a0) \ bag) ≠ 0, count(a0, (bag0 -- a0) \ bag) ≠ (count(a0, bag) + 1 ≤ count(a0, bag0) ⊃ count(a0, bag0) - count(a0, bag) + 1;0), ¬ count(a0, bag) + 1 < count(a0, bag0), count(a0, (bag0 -- a0) \ bag) = (count(a0, bag) < count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) ⊃ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a0, bag);0) ∨ count(a0, (bag0 -- a0) \ bag) = (count(a0, bag) ≤ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) ⊃ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a0, bag);0) ⊦
| count(a0, (bag0 -- a0) \ bag) ≠ count(a0, bag0) - count(a0, bag) + 1, count(a0, (bag0 -- a0) \ bag) ≠ (count(a0, bag) + 1 ≤ count(a0, bag0) ⊃ count(a0, bag0) - count(a0, bag) + 1;0), count(a0, bag) + 1 < count(a0, bag0), count(a0, (bag0 -- a0) \ bag) = (count(a0, bag) < count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) ⊃ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a0, bag);0) ∨ count(a0, (bag0 -- a0) \ bag) = (count(a0, bag) ≤ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) ⊃ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a0, bag);0) ⊦ |
count(a0, (bag0 -- a0) \ bag) ≠ (count(a0, bag) + 1 ≤ count(a0, bag0) ⊃ count(a0, bag0) - count(a0, bag) + 1;0), count(a0, (bag0 -- a0) \ bag) ≠ count(a0, bag0) - count(a0, bag) + 1, count(a0, bag) + 1 < count(a0, bag0), count(a0, (bag0 -- a0) \ bag) = count(a0, bag0) - 1 - count(a0, bag) ∨ count(a0, (bag0 -- a0) \ bag) = (count(a0, bag) ≤ count(a0, bag0) - 1 ⊃ count(a0, bag0) - 1 - count(a0, bag);0) ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic n0 ≤ n ⊦ m < n - n0 ↔ m + n0 < n; (s) ⊦ m < 1 ↔ m = 0; (s) ⊦ m ≤ n ↔ ¬ n < m; (ss)
| count(a0, (bag0 -- a0) \ bag) ≠ (count(a0, bag) + 1 ≤ count(a0, bag0) ⊃ count(a0, bag0) - count(a0, bag) + 1;0), count(a0, (bag0 -- a0) \ bag) ≠ count(a0, bag0) - count(a0, bag) + 1, count(a0, bag) + 1 < count(a0, bag0), count(a0, (bag0 -- a0) \ bag) = count(a0, bag0) - 1 - count(a0, bag) ∨ count(a0, (bag0 -- a0) \ bag) = (count(a0, bag) ≤ count(a0, bag0) - 1 ⊃ count(a0, bag0) - 1 - count(a0, bag);0) ⊦ |
count(a0, bag0) = n0 + 1, count(a0, bag0) ≠ 0, count(a0, (bag0 -- a0) \ bag) ≠ (count(a0, bag) + 1 ≤ count(a0, bag0) ⊃ count(a0, bag0) - count(a0, bag) + 1;0), count(a0, (bag0 -- a0) \ bag) ≠ count(a0, bag0) - count(a0, bag) + 1, count(a0, bag) + 1 < count(a0, bag0), count(a0, (bag0 -- a0) \ bag) = n0 - count(a0, bag) ∨ count(a0, (bag0 -- a0) \ bag) = (count(a0, bag) ≤ n0 ⊃ n0 - count(a0, bag);0) ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) n ≠ 0 ⊦ m = n - 1 ↔ n = m + 1; (elim) Used terms: count(a0, bag0), m
| count(a0, bag0) = n0 + 1, count(a0, bag0) ≠ 0, count(a0, (bag0 -- a0) \ bag) ≠ (count(a0, bag) + 1 ≤ count(a0, bag0) ⊃ count(a0, bag0) - count(a0, bag) + 1;0), count(a0, (bag0 -- a0) \ bag) ≠ count(a0, bag0) - count(a0, bag) + 1, count(a0, bag) + 1 < count(a0, bag0), count(a0, (bag0 -- a0) \ bag) = n0 - count(a0, bag) ∨ count(a0, (bag0 -- a0) \ bag) = (count(a0, bag) ≤ n0 ⊃ n0 - count(a0, bag);0) ⊦ |
count(a0, bag0) = n0 + 1, count(a0, (bag0 -- a0) \ bag) = 0, (count(a0, bag) ≤ n0 ⊃ n0 - count(a0, bag);0) ≠ n0 - count(a0, bag), 0 ≠ n0 - count(a0, bag), count(a0, bag) + 1 < n0 + 1, count(a0, bag) + 1 ≤ n0 + 1 ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m + n - n + n1 = m - n1; (s) ⊦ m + 1 ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m < n → n ≠ 0; (s)
| count(a0, bag0) = n0 + 1, count(a0, (bag0 -- a0) \ bag) = 0, (count(a0, bag) ≤ n0 ⊃ n0 - count(a0, bag);0) ≠ n0 - count(a0, bag), 0 ≠ n0 - count(a0, bag), count(a0, bag) + 1 < n0 + 1, count(a0, bag) + 1 ≤ n0 + 1 ⊦ |
Used simplifier rules: ⊦ 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
| count(a0, (bag0 -- a0) \ bag) ≠ 0, count(a0, (bag0 -- a0) \ bag) ≠ (count(a0, bag) + 1 ≤ count(a0, bag0) ⊃ count(a0, bag0) - count(a0, bag) + 1;0), ¬ count(a0, bag) + 1 < count(a0, bag0), count(a0, (bag0 -- a0) \ bag) = (count(a0, bag) < count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) ⊃ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a0, bag);0) ∨ count(a0, (bag0 -- a0) \ bag) = (count(a0, bag) ≤ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) ⊃ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a0, bag);0) ⊦ |
count(a0, (bag0 -- a0) \ bag) ≠ 0, count(a0, (bag0 -- a0) \ bag) ≠ (count(a0, bag) + 1 ≤ count(a0, bag0) ⊃ count(a0, bag0) - count(a0, bag) + 1;0), count(a0, bag0) ≤ count(a0, bag) + 1, count(a0, (bag0 -- a0) \ bag) = (count(a0, bag) < count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) ⊃ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a0, bag);0) ∨ count(a0, (bag0 -- a0) \ bag) = (count(a0, bag) ≤ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) ⊃ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a0, bag);0) ⊦
Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss)
| count(a0, (bag0 -- a0) \ bag) ≠ 0, count(a0, (bag0 -- a0) \ bag) ≠ (count(a0, bag) + 1 ≤ count(a0, bag0) ⊃ count(a0, bag0) - count(a0, bag) + 1;0), count(a0, bag0) ≤ count(a0, bag) + 1, count(a0, (bag0 -- a0) \ bag) = (count(a0, bag) < count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) ⊃ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a0, bag);0) ∨ count(a0, (bag0 -- a0) \ bag) = (count(a0, bag) ≤ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) ⊃ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a0, bag);0) ⊦ |
count(a0, (bag0 -- a0) \ bag) ≠ count(a0, bag0) - count(a0, bag) + 1, count(a0, (bag0 -- a0) \ bag) ≠ 0, count(a0, bag0) ≤ count(a0, bag) + 1, count(a0, bag) + 1 ≤ count(a0, bag0), count(a0, (bag0 -- a0) \ bag) = (count(a0, bag) < count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) ⊃ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a0, bag);0) ∨ count(a0, (bag0 -- a0) \ bag) = (count(a0, bag) ≤ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) ⊃ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a0, bag);0) ⊦
count(a0, (bag0 -- a0) \ bag) ≠ 0, count(a0, bag0) ≤ count(a0, bag) + 1, ¬ count(a0, bag) + 1 ≤ count(a0, bag0), count(a0, (bag0 -- a0) \ bag) = (count(a0, bag) < count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) ⊃ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a0, bag);0) ∨ count(a0, (bag0 -- a0) \ bag) = (count(a0, bag) ≤ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) ⊃ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a0, bag);0) ⊦
| count(a0, (bag0 -- a0) \ bag) ≠ count(a0, bag0) - count(a0, bag) + 1, count(a0, (bag0 -- a0) \ bag) ≠ 0, count(a0, bag0) ≤ count(a0, bag) + 1, count(a0, bag) + 1 ≤ count(a0, bag0), count(a0, (bag0 -- a0) \ bag) = (count(a0, bag) < count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) ⊃ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a0, bag);0) ∨ count(a0, (bag0 -- a0) \ bag) = (count(a0, bag) ≤ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) ⊃ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a0, bag);0) ⊦ |
count(a0, bag0) = count(a0, bag) + 1, count(a0, (bag0 -- a0) \ bag) = count(a0, bag0) - 1 - count(a0, bag), count(a0, bag0) - 1 - count(a0, bag) ≠ 0, count(a0, bag) < count(a0, bag0) ⊦
Used simplifier rules: ⊦ ¬ n < n; (s) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m < n + 1 ↔ ¬ n < m; (s) ⊦ m ≤ m; (s) ⊦ m - m = 0; (s) ⊦ m < n → n ≠ 0; (s) lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic eqle-one: ⊦ m = n + 1 ∧ n < n0 → m ≤ n0; (forward) from specification nat ⊦ m + 1 ≤ n ↔ m < n; (s) n0 ≤ n ⊦ m ≤ n - n0 ↔ m + n0 ≤ n; (s) ⊦ m < 1 ↔ m = 0; (s) ⊦ m ≤ n ↔ ¬ n < m; (ss) n0 ≤ n ⊦ m < n - n0 ↔ m + n0 < n; (s) ⊦ m < n → (n ≤ m + 1 ↔ n = m + 1); (s)
| count(a0, bag0) = count(a0, bag) + 1, count(a0, (bag0 -- a0) \ bag) = count(a0, bag0) - 1 - count(a0, bag), count(a0, bag0) - 1 - count(a0, bag) ≠ 0, count(a0, bag) < count(a0, bag0) ⊦ |
Used simplifier rules: del-notin: ⊦ count(a, bag) = 0 → bag -- a = bag; ⊦ m < n → n ≠ 0; (s) eqle-one: ⊦ m = n + 1 ∧ n < n0 → m ≤ n0; (forward) from specification nat f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic ⊦ m + n = m + n0 ↔ n = n0; (s) ⊦ m + 1 ≠ 0; (s) ⊦ m + n ≤ m + n0 ↔ n ≤ n0; (s) ⊦ m < n + 1 ↔ ¬ n < m; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ m ≤ n → (n - m = 0 ↔ n = m); (s) n ≠ 0 ⊦ m = n - 1 ↔ n = m + 1; (elim) Used terms: count(a0, bag0), m
| count(a0, (bag0 -- a0) \ bag) ≠ 0, count(a0, bag0) ≤ count(a0, bag) + 1, ¬ count(a0, bag) + 1 ≤ count(a0, bag0), count(a0, (bag0 -- a0) \ bag) = (count(a0, bag) < count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) ⊃ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a0, bag);0) ∨ count(a0, (bag0 -- a0) \ bag) = (count(a0, bag) ≤ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) ⊃ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a0, bag);0) ⊦ |
count(a0, (bag0 -- a0) \ bag) ≠ 0, count(a0, bag0) ≤ count(a0, bag) + 1, count(a0, bag0) ≤ count(a0, bag), count(a0, (bag0 -- a0) \ bag) = (count(a0, bag) < count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) ⊃ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a0, bag);0) ∨ count(a0, (bag0 -- a0) \ bag) = (count(a0, bag) ≤ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) ⊃ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a0, bag);0) ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ m + 1 ≤ n ↔ m < n; (s)
| count(a0, (bag0 -- a0) \ bag) ≠ 0, count(a0, bag0) ≤ count(a0, bag) + 1, count(a0, bag0) ≤ count(a0, bag), count(a0, (bag0 -- a0) \ bag) = (count(a0, bag) < count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) ⊃ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a0, bag);0) ∨ count(a0, (bag0 -- a0) \ bag) = (count(a0, bag) ≤ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) ⊃ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a0, bag);0) ⊦ |
count(a0, (bag0 -- a0) \ bag) = (count(a0, bag) < count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) ⊃ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a0, bag);0), count(a0, (bag0 -- a0) \ bag) ≠ 0, count(a0, bag0) ≤ count(a0, bag), count(a0, bag0) ≤ count(a0, bag) + 1 ⊦
count(a0, (bag0 -- a0) \ bag) = (count(a0, bag) ≤ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) ⊃ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a0, bag);0), count(a0, (bag0 -- a0) \ bag) ≠ 0, count(a0, bag0) ≤ count(a0, bag), count(a0, bag0) ≤ count(a0, bag) + 1 ⊦
| count(a0, (bag0 -- a0) \ bag) = (count(a0, bag) < count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) ⊃ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a0, bag);0), count(a0, (bag0 -- a0) \ bag) ≠ 0, count(a0, bag0) ≤ count(a0, bag), count(a0, bag0) ≤ count(a0, bag) + 1 ⊦ |
count(a0, (bag0 -- a0) \ bag) = count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a0, bag), count(a0, (bag0 -- a0) \ bag) ≠ 0, count(a0, bag) < count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0), count(a0, bag0) ≤ count(a0, bag) + 1, count(a0, bag0) ≤ count(a0, bag) ⊦
| count(a0, (bag0 -- a0) \ bag) = count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a0, bag), count(a0, (bag0 -- a0) \ bag) ≠ 0, count(a0, bag) < count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0), count(a0, bag0) ≤ count(a0, bag) + 1, count(a0, bag0) ≤ count(a0, bag) ⊦ |
count(a0, (bag0 -- a0) \ bag) = count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a0, bag), count(a0, (bag0 -- a0) \ bag) ≠ 0, count(a0, bag0) < count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0), count(a0, bag) < count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0), count(a0, bag0) ≤ count(a0, bag) + 1, count(a0, bag0) ≤ count(a0, bag) ⊦
Used simplifier rules: ⊦ m < n → m ≤ n; (s) ⊦ m < n → n ≠ 0; (s) fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic le-one: ⊦ m ≤ n + 1 ∧ n < n0 → m ≤ n0; (forward) from specification nat f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| count(a0, (bag0 -- a0) \ bag) = count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a0, bag), count(a0, (bag0 -- a0) \ bag) ≠ 0, count(a0, bag0) < count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0), count(a0, bag) < count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0), count(a0, bag0) ≤ count(a0, bag) + 1, count(a0, bag0) ≤ count(a0, bag) ⊦ |
count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) = n0 + count(a0, bag), count(a0, (bag0 -- a0) \ bag) = n0, count(a0, (bag0 -- a0) \ bag) ≠ 0, count(a0, bag) < count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0), count(a0, bag0) < count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0), count(a0, bag0) ≤ count(a0, bag), count(a0, bag0) ≤ count(a0, bag) + 1, count(a0, bag) ≤ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) ⊦
Used simplifier rules: ⊦ m < n → m ≤ n; (s) n ≤ m ⊦ n0 = m - n ↔ m = n0 + n; (elim) Used terms: count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0), count(a0, bag), n0
| count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) = n0 + count(a0, bag), count(a0, (bag0 -- a0) \ bag) = n0, count(a0, (bag0 -- a0) \ bag) ≠ 0, count(a0, bag) < count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0), count(a0, bag0) < count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0), count(a0, bag0) ≤ count(a0, bag), count(a0, bag0) ≤ count(a0, bag) + 1, count(a0, bag) ≤ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) ⊦ |
count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) = count(a0, (bag0 -- a0) \ bag) + count(a0, bag), count(a0, (bag0 -- a0) \ bag) ≠ 0, count(a0, bag0) < count(a0, (bag0 -- a0) \ bag) + count(a0, bag), count(a0, bag0) ≤ count(a0, bag) + 1, count(a0, bag0) ≤ count(a0, bag) ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m < m + n ↔ n ≠ 0; (s) ⊦ m < n → m ≤ n; (s) ⊦ m < n → n ≠ 0; (s) le-one: ⊦ m ≤ n + 1 ∧ n < n0 → m ≤ n0; (forward) from specification nat fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) = count(a0, (bag0 -- a0) \ bag) + count(a0, bag), count(a0, (bag0 -- a0) \ bag) ≠ 0, count(a0, bag0) < count(a0, (bag0 -- a0) \ bag) + count(a0, bag), count(a0, bag0) ≤ count(a0, bag) + 1, count(a0, bag0) ≤ count(a0, bag) ⊦ |
Used simplifier rules: del-notin: ⊦ count(a, bag) = 0 → bag -- a = bag; ⊦ m - 0 = m; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat ⊦ m < n → n ≠ 0; (s) ⊦ m ≤ n ↔ ¬ n < m; (ss) ⊦ m < 1 ↔ m = 0; (s) n0 ≤ n ⊦ m < n - n0 ↔ m + n0 < n; (s) ⊦ ¬ m + n < m; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic
| count(a0, (bag0 -- a0) \ bag) = (count(a0, bag) ≤ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) ⊃ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a0, bag);0), count(a0, (bag0 -- a0) \ bag) ≠ 0, count(a0, bag0) ≤ count(a0, bag), count(a0, bag0) ≤ count(a0, bag) + 1 ⊦ |
count(a0, (bag0 -- a0) \ bag) = count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a0, bag), count(a0, (bag0 -- a0) \ bag) ≠ 0, count(a0, bag0) ≤ count(a0, bag) + 1, count(a0, bag0) ≤ count(a0, bag), count(a0, bag) ≤ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) ⊦
| count(a0, (bag0 -- a0) \ bag) = count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a0, bag), count(a0, (bag0 -- a0) \ bag) ≠ 0, count(a0, bag0) ≤ count(a0, bag) + 1, count(a0, bag0) ≤ count(a0, bag), count(a0, bag) ≤ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) ⊦ |
count(a0, (bag0 -- a0) \ bag) = count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a0, bag), count(a0, (bag0 -- a0) \ bag) ≠ 0, count(a0, bag) ≤ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0), count(a0, bag0) ≤ count(a0, bag), count(a0, bag0) ≤ count(a0, bag) + 1, count(a0, bag0) ≤ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) ⊦
Used simplifier rules: let: ⊦ n ≤ n0 ∧ n0 ≤ n1 → n ≤ n1; (forward) from specification nat
| count(a0, (bag0 -- a0) \ bag) = count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) - count(a0, bag), count(a0, (bag0 -- a0) \ bag) ≠ 0, count(a0, bag) ≤ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0), count(a0, bag0) ≤ count(a0, bag), count(a0, bag0) ≤ count(a0, bag) + 1, count(a0, bag0) ≤ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) ⊦ |
count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) = n0 + count(a0, bag), count(a0, (bag0 -- a0) \ bag) = n0, count(a0, (bag0 -- a0) \ bag) ≠ 0, count(a0, bag0) ≤ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0), count(a0, bag0) ≤ count(a0, bag) + 1, count(a0, bag0) ≤ count(a0, bag), count(a0, bag) ≤ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) ⊦
Used simplifier rules: n ≤ m ⊦ n0 = m - n ↔ m = n0 + n; (elim) Used terms: count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0), count(a0, bag), n0
| count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) = n0 + count(a0, bag), count(a0, (bag0 -- a0) \ bag) = n0, count(a0, (bag0 -- a0) \ bag) ≠ 0, count(a0, bag0) ≤ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0), count(a0, bag0) ≤ count(a0, bag) + 1, count(a0, bag0) ≤ count(a0, bag), count(a0, bag) ≤ count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) ⊦ |
count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) = count(a0, (bag0 -- a0) \ bag) + count(a0, bag), count(a0, (bag0 -- a0) \ bag) ≠ 0, count(a0, bag0) ≤ count(a0, (bag0 -- a0) \ bag) + count(a0, bag), count(a0, bag0) ≤ count(a0, bag) + 1, count(a0, bag0) ≤ count(a0, bag) ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m ≤ m + n; (s) let: ⊦ n ≤ n0 ∧ n0 ≤ n1 → n ≤ n1; (forward) from specification nat
| count(a0, bag0) - (count(a0, bag0) ≠ 0 ⊃ 1;0) = count(a0, (bag0 -- a0) \ bag) + count(a0, bag), count(a0, (bag0 -- a0) \ bag) ≠ 0, count(a0, bag0) ≤ count(a0, (bag0 -- a0) \ bag) + count(a0, bag), count(a0, bag0) ≤ count(a0, bag) + 1, count(a0, bag0) ≤ count(a0, bag) ⊦ |
Used simplifier rules: del-notin: ⊦ count(a, bag) = 0 → bag -- a = bag; ⊦ m - 0 = m; (s) let: ⊦ n ≤ n0 ∧ n0 ≤ n1 → n ≤ n1; (forward) from specification nat ⊦ m + n = 0 ↔ m = 0 ∧ n = 0; (ws) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic leprf: ⊦ m ≤ m - 1 → m = 0; (forward) from specification nat
The following image shows the proof tree of sequent calculus. The proved goal is at the bottom. You can click on the nodes to view additional rules. See here for details on colors in a proof tree.