| bag0 = ∅ ++ bag0.max ∨ bag0.max = (bag0 -- bag0.max).max ∨ count(bag0.max, bag0) = 1 ⊦ (m < bag0.max ⊃ bag0.max;m) = (m = (m < bag0.max ⊃ bag0.max;m) ⊃ bag0;(bag0 -- bag0.max) ++ m).max, (m = (m < bag0.max ⊃ bag0.max;m) ⊃ bag0;(bag0 -- bag0.max) ++ m) = ∅, bag0 = ∅, count(m, bag0 ++ m) = 1, m < bag0.max |
bag0.max < m, bag0 = ∅ ++ bag0.max ∨ bag0.max = (bag0 -- bag0.max).max ∨ count(bag0.max, bag0) = 1 ⊦ bag0 = ∅, count(m, bag0) = 0, m = bag0.max
Used simplifier rules: ⊦ m < n → n ≠ 0; (s)%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic% ⊦ m ≠ n → (m < n ↔ ¬ n < m); (ss)%c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic% ⊦ m + n = 1 ↔ m = 0 ∧ n = 1 ∨ n = 0 ∧ m = 1; (ws)% ⊦ count(n, bag0 ++ n) = count(n, bag0) + 1; (s)