Normal  normalization over algebraic extension fields

Calling Sequence


evala(Normal(a))
evala(Normal(a), opts)


Parameters


a



expression involving algebraic numbers or algebraic functions.

opts



(optional) an option name or a set of option names.




Options currently supported: 'expanded'.





Description


•

This function computes factored normal forms for rational functions over algebraic function fields or algebraic number fields. In particular, the result will be zero only if the input is mathematically equal to zero.

•

To give a precise description of this functionality, a few notations are necessary:


Names occurring inside a RootOf defining an algebraic function or inside a radical are called algebraic indeterminates. Let x be the set {x[1],...,x[r]} of such names.


Other names are called pure indeterminates. The set {(X[1],...X[t]} of pure indeterminates will be denoted by X.


Define A={a[1],...,a[s]} where the a[i]'s are the RootOfs and the radicals defining algebraic extensions. If expr^(m/n) is a radical, then only expr^(1/n) is considered as an element of A. The ordering chosen for the a[i]'s is such that a[i] does not contain a[j] as a subexpression if'j>i' (see has).


We shall also denote by Q and Z the field of rational numbers and the ring of integers.

•

The expression a is viewed as an element of the field Q(x)(A)(X).

•

Powers of the a[i]'s are reduced modulo the minimal polynomials. In other words, if the output contains the subexpression a[i]^j, then j must be positive and less than the degree of the minimal polynomial of a[i] over Q(a[1],...,a[i1]).

•

If a is an algebraic number (that is, if x and X are empty), then the output is an expanded element of the polynomial algebra Q[A]. In particular, denominators are rationalized.

•

If a is an algebraic function with no pure indeterminate (that is, if X is empty), then the result has the form c * N / D, where D is a polynomial in Z[x], N is a polynomial in Z[x][A], and c is a rational number. Both N and D have an integer content (see icontent) equal to 1, except in the exceptional case below. The polynomials N and D are expanded, except for powers of the x[i]'s or of the a[i]'s that may be factored out. Note that denominators are rationalized.

•

If a is a polynomial in X, x, and A, then we shall (abusively) say that a is unit normal if the leading coefficient lc of a in the variables X is in Q[x], and if the leading coefficient of lc in the variables x is a positive integer.

•

In the general case and if option 'expanded' is not in opts, then this function computes a factored normal form. The output has the form c * N / D, where c is a normalized algebraic function or number (see above), N and D are unit normal polynomials in Z[x][A][X], except in the exceptional case below.


Both N and D have positive degree in X. Moreover, they are relatively prime, considered as polynomials in Q(x)(A)[X] as well as formal polynomials in Z[x][A][X]. Both N and D have an integer content (see icontent) equal to 1, except in the exceptional case below.


Both N and D may be partially factored; that is, they may be products of expanded polynomials. In this case, each factor has positive degree in X.


Note that the rationalization of the leading coefficients may factor out a nontrivial term, even when the input is expanded. See the examples that follow.

•

If the option 'expanded' is present, then the output has the form N/D, where D and N are expanded elements of Z[x][A][X].


The polynomials N and D are relatively prime, viewed as polynomials in Q(x)(A)[X] as well as formal polynomials in Z[x][A][X]. Moreover, D is unit normal.


This expanded normal form is actually a canonical form.

•

Exceptional case: Maple automatically expands products of the form (rational number) * (expanded polynomial). Therefore, in this particular case, the above description of the normal forms is not perfectly accurate, because a rational factor will always be distributed over a sum.

•

If a polynomial defining a RootOf is reducible, the RootOf does not generate a welldefined field. The normalization proceeds pretending that all the algebraic quantities are independent. If a zerodivisor is hit when computing the gcd of N and D (to make them coprime), a case discussion of the gcd is computed over the direct product of rings defined by the towers of algebraic extensions. If the gcd values over all the branches can be combined into one, it will be used as the gcd result and the computation continues. If the gcd values can not be merged into one, an error will be reported (see evala/Gcd). If a zerodivisor is hit while rationalizing the leading coefficients or the denominators, an error will be reported.

•

If the expression contains only algebraic numbers in radical notation (2^(1/2), 3^(1/2), 6^(1/2)), the algebraic quantities are not necessarily independent. A basis over Q for the radicals can be computed by Maple in this case.

•

If a contains functions, their arguments are normalized recursively and the functions are frozen before the computation proceeds.

•

Other objects are frozen and considered as variables, except in the cases below.

•

Since the ordering of objects may vary from a session to another, the normal form may change accordingly.



Examples


>


 (1) 
>


 (2) 
>


 (3) 
>


 (4) 
>


>


 (5) 
>


 (6) 
>


 (7) 
Below, the arguments of the sin function in s4 are normalized recursively.
>


 (8) 
>


 (9) 
In the following expressions, s5, s6, s7 and s8, the polynomial defining the RootOf is reducible. The normalization procedure may fail.
Normalization of s5 succeeds pretending that the RootOf is irreducible.
>


 (10) 
>


 (11) 
In the normalization of s6, a gcd computation invokes a case discussion due to the reducible RootOf, which can be shown by setting the infolevel of Gcd to be 1. Because the two gcd values in the two branches are all equal to 1, we can conclude that the gcd is 1 and the normalization process can continue.
>


 (12) 
>


>


 (13) 
>


evala/Gcd/GcdDoItSplit: A case discussion of the gcd: Array(1..2, {1 = [[1, x^2*y^2+1, x^2*y^2+2], [RootOf(_Z*(_Za)) = 0]], 2 = [[1, x^2*y^2+a*x*y+1, x^2*y^2+2], [RootOf(_Z*(_Za)) = a]]})
MergeGcds: All the gcd values at all the branches are the same: 1
 
 (14) 
When normalizing s7, a case discussion of a gcd computation is also attempted, however, the results are not combinable legitimately (see evala/Gcd) and an error is reported.
>


 (15) 
>


evala/Gcd/GcdDoItSplit: A case discussion of the gcd: Array(1..2, {1 = [[z, x+1, 2+y], [RootOf(_Z*(_Za)) = 0]], 2 = [[1, a*y*z+a*x+x*z+a+z, a*y+y*z+2*a+2*z], [RootOf(_Z*(_Za)) = a]]})
MergeGcds: Merge result: #cases: 2; gcd(s): [[1, [a]], [z, [0]]]
Error, (in evala/Normal/preproc) reducible RootOf detected. Substitutions are {RootOf(_Z*(_Za)) = 0, RootOf(_Z*(_Za)) = a}.
 
For s8, the procedure reports an error when hitting a zerodivisor while rationalizing the leading coefficients, even though in the underlying gcd computation, the gcd values from a case discussion can be merged into one.
>


 (16) 
>


evala/Gcd/GcdDoItSplit: A case discussion of the gcd: Array(1..2, {1 = [[1, x^2*y^2+1, 2], [RootOf(_Z*(_Za)) = 0]], 2 = [[1, x^2*y^2+a*x*y+1, a*x^2*y^2+2], [RootOf(_Z*(_Za)) = a]]})
MergeGcds: All the gcd values at all the branches are the same: 1
Error, (in evala/Normal/preproc) reducible RootOf detected. Substitutions are {RootOf(_Z*(_Za)) = 0, RootOf(_Z*(_Za)) = a}
 
>


evala/Gcd/preproc0: a case discussion result: Array(1..2, {1 = [[1], [RootOf(_Z*(_Za)) = 0]], 2 = [[1], [RootOf(_Z*(_Za)) = a]]})
MergeGcds: All the gcd values at all the branches are the same: 1
 
 (17) 
>



