axiom-developer
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]