Hi Waldek,
Concerning the new domain SmallOrdinal that you've just committed.
N ==> NonNegativeInteger
PR ==> PolynomialRing(N, %)
Rep := PR
p1 + p2 == p1::Rep +$Rep p2::Rep
I am a bit worried about this line.
What is the compiler doing here? With full types, is it
[A] (p1: %) + (p2: %): % == ...
or
[B] (p1: %) + (p2: %): Rep == ...
I hope it is the [B]. Otherwise, I miss somehing like an application of
per. But then I don't see an implementation for the ring +, i.e. for [A].
Addition on ordinals is non-commutative. Your implementation of +
doesn't look like that. Instead you've introduced ordinalAdd.
I think your implementation is not in the spirit of PanAxiom. One
usually would like to write + even when dealing with ordinals. What
exactly is the semantics of your +? It's a commutative one, which
doesn't exist in the ordinals.
With your implementation you currently allow.
om := omega()
x := 1 + om
y := om + 1
And I bet, if I compare the two they will be equal, but actually shouldn't.
I'd rather want that + is the same as ordinalAdd. Otherwise it can get
confusing for the user of that domain. In fact, I wouldn't export
ordinalAdd, but immediately overload +.
Just my 2 cents.
Ralf
--
You received this message because you are subscribed to the Google Groups "FriCAS -
computer algebra system" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/fricas-devel?hl=en.