This page demonstrates some features of FriCAS.
Let's begin with the construction of a polynomial ring in the indeterminate
with coefficients from the ring of square matrices with entries that are
polynomials where is the Galois field with 3 elements.
fricas
(1) -> F := PrimeField 3
Type: Type
fricas
P := UnivariatePolynomial(x, F)
Type: Type
fricas
S := SquareMatrix(2, P)
Type: Type
fricas
R := UnivariatePolynomial(z, S)
Type: Type
OK, now we have the type . Let's construct an element.
We start with constructing some coefficients first.
fricas
s1:S := matrix[[2*x +1 ,x^2-1],[0,x-1]]
fricas
s2 := transpose s1
And now we build the polynomial.
fricas
r: R := z^2 + s1*z + s2
Of course, since we work in characteristic 3, the following sum must be zero.
fricas
r+ 2*r
Note that this is not the integer 0, but it is still a polynomial of type .
Asking for the degree of is no problem, because is a univariate polynomial ring.
fricas
degree r
Let us add 1 to .
fricas
r+1
Oh, interesting, FriCAS figured out that by 1 we actually meant the polynomial 1 in .
fricas
one: R := 1
No no, it is not the unit square matrix. It is the unit square matrix multiplied
by . Look at the type.
So let's see what happens if we multiply by itself.
fricas
r2 := r*r
Well, of course there is a common factor of an . Can FriCAS find it?
fricas
gcd(r2, r)
There are 4 exposed and 3 unexposed library operations named gcd
having 2 argument(s) but none was determined to be applicable.
Use HyperDoc Browse, or issue
)display op gcd
to learn more about the available operations. Perhaps
package-calling the operation or using coercions on the arguments
will allow you to apply the operation.
Cannot find a definition or applicable library operation named gcd
with argument type(s)
UnivariatePolynomial(z,SquareMatrix(2,UnivariatePolynomial(x,PrimeField(3))))
UnivariatePolynomial(z,SquareMatrix(2,UnivariatePolynomial(x,PrimeField(3))))
Perhaps you should use "@" to indicate the required return type,
or "$" to specify which version of the function you need.
Ooops. What does that say?:
Cannot find a definition or applicable library operation named gcd.
Ah, of course, the coefficient ring of is the matrix ring and this is
unfortunately not a field (not even an integral domain), so we cannot simply
apply Euclid's algorithm. FriCAS simply stops by telling you that
there is no applicable operation.
Of course, FriCAS can compute a gcd of univariate polynomials.
fricas
p1:=s1(1,1)
fricas
p2:=s1(1,2)
fricas
gcd(p1,p2)
OK, let us do that again.
fricas
q1: UP(x, INT) := 2*x+1
fricas
q2: UP(x, INT) := x^2+2
fricas
gcd(q1,q2)
Nice! Depending on where I compute these polynomials either
have a common factor or are coprime.
Well, all depends on the underlying ring, of course.