In Asir algebraic number fields are not defined as independent objects. Instead, individual algebraic numbers are defined by some means. In Asir an algebraic number field is defined virtually as a number field obtained by adjoining a finite number of algebraic numbers to the rational number field. A new algebraic number is introduced in Asir in such a way where it is defined as a root of an uni-variate polynomial whose coefficients include already defined algebraic numbers as well as rational numbers. We shall call such a newly defined algebraic number a root. Also, we call such an uni-variate polynomial the defining polynomial of that root.
 A0=newalg(x^2+1); (#0)  A1=newalg(x^3+A0*x+A0); (#1)  [type(A0),ntype(A0)]; [1,2]
In this example, the algebraic number assigned to
A0 is defined
as a root of a polynomial
A1 is defined as a root of a polynomial
x^3+A0*x+A0, which you see contains the previously defined
A0) in its coefficients.
The argument to
newalg(), i.e., the defining polynomial,
must satisfy the following conditions.
srem(), where the defining polynomial is used for the second argument, the divisor. By this reason, the leading coefficient of the defining polynomial must be a rational number (must not be an algebraic number.)
Only the first two conditions (1 and 2) are checked
Among all, it should be emphasized that no check is done for the
irreducibility at all.
The reason is that the irreducibility test requires enormously much
computation time. You are trusted whether to check it at your own risk.
Once a root has been defined by
it is given the type identifier for a number, and furthermore,
the sub-type identifier for an algebraic number.
Also, any rational combination of rational numbers and root's
is an algebraic number.
 N=(A0^2+A1)/(A1^2-A0-1); ((#1+#0^2)/(#1^2-#0-1))  [type(N),ntype(N)]; [1,2]
As you see it in the example, a root is displayed as
#n. But, you cannot input that root in
its immediate output form.
You have to refer to a root by a program variable assigned
to the root, or to get it by
alg(n) function, or by
several other indirect means.
A strange use of
newalg(), with a same argument polynomial
(except for the name of its main variable), will yield the old
root instead of a new root though it is apparently inefficient.
 alg(0); (#0)  newalg(t^2+1); (#0)
The defining polynomial of a root can be obtained by
 defpoly(A0); t#0^2+1  defpoly(A1); t#1^3+t#0*t#1+t#0
Here, you see a strange expression,
They are a specially indeterminates generated and maintained
by Asir internally. Indeterminate
t#0 corresponds to
#1. These indeterminates
also cannot be input directly by a user in their immediate forms.
You can get them by several ways: by
 var(@); t#1  algv(0); t#0 
Go to the first, previous, next, last section, table of contents.