I think that was me. I know that _I_ haven't done anything on this.
As usual I was overly optimistic about how much time I had back then. :)
-Ivan
For information: in MuPAD, we had a category SemiRings, and Eric
Laugerotte had implemented a couple parents (called "domains"" in
MuPAD) in it (boolean semi ring, tropical semi ring), which were used
for calculations with weighted automatons. The implementation was
rather plain, but it was already organized using coercions,
categories, and so on. In:
http://mupad-combinat.svn.sourceforge.net/viewvc/mupad-combinat/trunk/MuPAD-Combinat/lib/DOMAINS/
Look for:
CATEGORY/SemiRing.mu
DOMAIN/BooleanSemiRing.mu
DOMAIN/MaxMinSemiRing.mu and friends MinMax, ...
DOMAINS/DOMAIN/SemiRing.mu
DOMAINS/DOMAIN/TEST/SemiRing.tst // tests and examples
The last one was the most handy: it's a generic tropical semi-ring
that was created by passing an existing parent, and what +,*,0,1 were
to be. In Sage, it could look like:
SemiRing(NonNegativeIntegers, plus = max, zero = 0, mult = operator.add, one = 0)
If you are interested, I'd happily add the SemiRing category to Sage
as soon as the category code is in (which should be very soon now;
finally!). There will be some technicalities, like how to make it easy
to add +infinity to an existing set, to disable all the preexisting
ring operations the set may already have (i.e. apply a forgetful
functor), ...
Eric: do you have references to suggest around this code, or some
design notes? Are you interested in joining on this project?
Best,
Nicolas
--
Nicolas M. Thiéry "Isil" <nth...@users.sf.net>
http://Nicolas.Thiery.name/