[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Axiom-developer] [DistributedMultivariatePolynomial]

From: wyscc
Subject: [Axiom-developer] [DistributedMultivariatePolynomial]
Date: Tue, 28 Feb 2006 03:33:41 -0600

Bill Page wrote:

> I find your notation a little confusing. In Axiom notation I think you mean, 
> for example:

There is nothing confusing about my notation in $R[x]$ where $R$ can be any 
integral domain (or even ring). The $x$ is transcendental over $R$ by the 
definition of polynomial ring. $R$ can be INT, or EXPR INT, POLY INT or what 
have you. $x$ is NEVER going to be in the ground coefficient ring if you are 
talking about polynomials in x (see PS below for a proof). You are confused 
because you refuse to accept the definition of polynomial ring. You, confused 
by the Interpreter, keep saying that an indeterminate $x$ can be an element of 
the coefficient ring. That is a violation of a universally accepted 
mathematical definition. On the opther hand, the Interpreter only errs in not 
catching your mistake. It did NOT coerce something from $R[x]$ that involves 
$x$ into $R$. There is simply no such coerce map in Axiom!

$Q(R[x])$ is the quotient field of the polynomial ring. It is the field of 
rational functions in one indeterminate $x$ with coefficients in $R$. $R$ can 
be any integral domain, including a field. That is why $Q(R[x]) = Q(Q(R)[x])$ 
(more precisely, isomorphic). In Axiom, this would be 'FRAC DMP([x], R)' is 
isomorphic to 'FRAC (DMP([x], FRAC R)' (and Axiom provides facilities to 
convert one into the other; I believe Aldor's compiler even knows about these 
"tower rearrangements"). In the examples under discussion, $R$ would be 'POLY 
INT', or 'FRAC POLY INT', but not 'INT'. But it is still true that the main 
variable of 'DMP([x], R)' cannot belong to 'R = POLY INT'.

>It is only when we coerce $Q(R[x])[x]$ ...

Your notation $Q(R[x])[x]$ is either meaningless (in case you think of the last 
$x$ as transcendental over the field $Q(R[x])$) or it is identical to $Q(R[x])$ 
 as a mathematical object (in case you adjoin the *same* $x$ to the field of 
rational functions over $R$.)  It cannot mean both and in any case, this is the 
wrong way to notate what you meant. You should have used $Q(R[x])[y]$ where $y$ 
is another indeterminate independent over $Q(R[x])$.  We cannot *coerce* 
$Q(R[x])[y]$ into $Q(R[x])$ no matter what $R$ is since $y$ is transcendental 
over $Q(R[x])$. We can only *substitute* $x$ for $y$ so that any $f(x,y)$ 
evaluates to $f(x,x)$.  This is the substitution I was talking about and what 
FRAC2 implements. Unfortunately, looking at the code will only give you a more 
general "lifting" map. The substitution is actually given by the input 'A->B' 
in 'map' and supplied by the Interpreter in its automatic "coercion" magic.  
The function 'map(f:A->B, A, B)' in the example of $A =!
 R[x,y]$, $B = R[x]$ and $f(x)=x, f(y)=y$ will map $\frac{1}{y} \times x$ to 
$1$. This is what you see done by the Interpreter. Unfortunately, the user 
insists using $x$ instead of $y$ as in
'monomial(x,0)$DMP([x], POLY INT)'. The correct way this:

f:=monomial(y,0)$DMP([x], POLY INT)
subst(1/f*x, y=x)


PS. Let me define a univariate polynomial over a unitary ring $R$ where $0 \neq 
1$, as an infinite sequence (function with finite support) from $N$ (the 
natural numbers) to $R$ and the polynomial ring as the totality of all 
polynomials. Then the indeterminate, let us call it $x$, will be the sequence 
represented by the function $f_x: N \rightarrow R$ where $f_x(1) = 1$ and 
$f_x(n) = 0$ for $n \neq 1$. An element $a \in R$ is identified as the function 
$f_a$ where $f_a(0)= a$ and $f_a(n)=0$ for $n \neq 0$. From this we see that 
$f_x \neq f_a$ for any $a \in R$ since $f_a(1) \neq f_x(1)$. So, there is no 
way one can *coerce* $f_x$ to $R$, no matter what $R$ is. We don't even need to 
know that $f_x$ is transcendental over $R$. We can only make a substitution to 
replace $f_x$ by some $f_a$ (or evaluation at $a$).

forwarded from

reply via email to

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