[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
## [Axiom-developer] [DistributedMultivariatePolynomial] substitution?

**From**: |
Bill Page |

**Subject**: |
[Axiom-developer] [DistributedMultivariatePolynomial] substitution? |

**Date**: |
Mon, 27 Feb 2006 14:08:29 -0600 |

Changes http://wiki.axiom-developer.org/DistributedMultivariatePolynomial/diff
--
Wiliam Sit wrote::
S:=FRAC POLY INT
Q:=DMP([x], S)
a:Q:=x
b:Q:=a/a
...
signature:
((DMP([x],POLY INT) -> POLY INT),FRAC DMP([x],POLY INT)) -> FRAC POLY INT
... shows clearly that the coercion from 'DMP(['x'], FRAC POLY INT)'
to 'FRAC POLY INT' for the denominator a is really a substitution,
implemented using the map function from FRAC2 package, taking '1/x_Q'
to '1/x_S' via the substitution 'x_Q' to 'x_S'.
I do not understand why you call this a "substitution". Reading the
source code for FRAC2 we see that 'map' just applies the coercion::
(DMP([x],POLY INT) -> POLY INT)
to both the numerator and the denominator of some 'Fraction' to produce
another 'Fraction' over a different domain.
The critical thing here is the coercion. This coercion maps the members
and functions of 'DMP([x],POLY INT)' into members and functions of
'POLY INT'. In particular it maps '*' in DMP to '*' in POLY INT. As a
result the symbol 'x' used as both the polynomial variable and in the
coefficient domain 'DMP' are treated the same way as a polynomial
variable of 'POLY'.
For example:
\begin{axiom}
A1:=monomial(x,0)$DMP([x],POLY INT)
degree A1
B1:=monomial(1,1)$DMP([x],POLY INT)
degree B1
(A1=B1)::Boolean
A2:=A1::POLY INT
B2:=B1::POLY INT
(A2=B2)::Boolean
\end{axiom}
This is just the same sort of thing that happens all the
time when we use a coercion to move from say, 'POLY INT' to
'EXPR INT'. There is no substitution going on here.
--
forwarded from http://wiki.axiom-developer.org/address@hidden

[Prev in Thread] |
**Current Thread** |
[Next in Thread] |

**[Axiom-developer] [DistributedMultivariatePolynomial] substitution?**,
*Bill Page* **<=**