Dear Bill, Ralf, * I'm currently out of time. But I'm a little afraid of the direction the discussion takes currently.
I believe that the intension of a constructor like DMP is to cover *polynomials*. If we allow (2*x+1/x)::DMP([x], EXPR INT), i.e., allowing 1/x as a coefficient, then it must be clear that the "x" in 1/x is something different than the "x" in 2*x. Otherwise we don't get a polynomial, obviously. So, I think that > > P := DMP([x,y], EXPR INT) > > a :P := x > > b := a/x > > > > differentiate(b,x) -- 1/x > > (4) -> differentiate(b,x) > > 1 > (4) - > x > Type: DistributedMultivariatePolynomial([x,y],Expression Integer) > > I think this result should be classed a bug. The 'differentiate' > operation apparently makes some incorrect assumptions about the > coefficient domain. I think the result should be the same as: is not a bug. If you want to have axiom output 0, then I imagine that you will get into trouble with writing packages, variable capture might well occur. I'd rather say that b::EXPR INT giving one is troublesome. I wouldn't really classify it as a bug though, given the nature of EXPR INT. Note that b::UP([x], INT) or b::POLY INT give errors! PLEASE don't change the behaviour of DMP and company. What should be documented (and I think Ralf did, but I hadn't time) is that domains like POLY EXPR INT and friends can lead to "surprising" results. This should go into the section "types" of the axiom book. Martin _______________________________________________ Axiom-developer mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/axiom-developer
