
Sjoerd,
[3] defines the union as h(u) = max(f(u), g(u)) where f, g and h are multiplicity functions.
Which is the same, as [3] is about multisets, not signed multisets.
Chapter 3 of [3] is about Hybrid Sets.
And there the union is defined by taking the *minimum* of multiplicities, which is even more strange.
[...] and this is also what your implementation does. (Map.unionWith max does not do a max if the key is not in one of the maps, i.e. if one of the multiplicities is 0.)
I am aware of that. Why are you explaining this?
Because we can't seem to get to an agreement. Usually this is because of a misunderstanding, so I try be as clear as possible, so you can understand my position, or point out my mistake.
I don't think you are mistaken. I think that 1. you're happy with the monoid over additiveUnion; 2. you're not happy with the definition of union. I'm not a mathematician, but I can see value in how union is defined now: it nicely generalises familiar concepts and associated properties (!) from sets and bags, and there seems to be support for it in literature.
Let's agree to disagree. This is not constructive and, moreover, going nowhere.
I'd prefer to keep arguing actually. ;-) But if you have something better to do, I won't bother you anymore.
I do enjoy this kind of discussion, but I think neither one of us will be able to convince the other. I am totally okay with that. That is not to say that I cannot be convinced by new, more compelling arguments. Cheers, Stefan