Ring ids are assigned by Sym.Arith.classify?, which tries CommRing, Ring,
CommSemiring, and Semiring in this order and caches the result for the whole run.
The functions below select one class of the result; a type has at most one.
Ring ids are assigned by Sym.Arith.classify?, which tries CommRing, Ring,
CommSemiring, and Semiring in this order and caches the result for the whole run.
The functions below select one class of the result; a type has at most one.