People,
I have a couple of questions about FiniteFieldExtensionByPolynomial.
Consider a program like
------------------------------------------------------- t.spad --
INT ==> Integer
PosInt ==> PositiveInteger
PF ==> PrimeField
SUP ==> SparseUnivariatePolynomial
UP ==> UnivariatePolynomial
FFP ==> FiniteFieldExtensionByPolynomial
)abbrev package FOO Foo
Foo(p : PosInt, d : SUP(PF p)) : Export == Implementation where
F ==> PF(p)
eF ==> FFP(F, d)
Export == with
g : () -> eF
Implementation == add
g() : eF == generator() $ eF
------------------------------------------------------------------
Here p is prime, F the prime field of p,
d an irreducible polynomial in F[?],
eF the extension of F by d
-- a certain finite field of dimension n = deg d over F.
I need to input elements of eF in some natural way.
In algebra, eF is, by definition, the field generated over F by the
roots of d (or -- by any root).
`Axiom' says that A := generator() $ eF is a certain fixed root of
d.
As I recall, it is known that the degrees [A^i i in 0..(n-1)]
form a linear basis of eF over F.
1. So, the elements of eF can be parsed as polynomials f : UP(t, F)
of degree less than n. Namely: parse f : UP(t, F) and substitute
A for t in f. This produces the element of eF.
(In DoCon, this polynomial representation for eF is open for the user:
the residue ring F[t]/(d) represented by polynomials).
But this needs computing A^i by new -- while these degrees are
actually fixed constants belonging to eF.
2. On the other hand, Axiom exports basis() $ eF
-- a fixed linear basis of eF over F.
If I knew that
basis() = [A^i, i in 0 .. (n-1)] (1),
then I could convert f -> eF without re-computing the degrees of A.
And this definition of basis() is correct.
3. Elements of eF can be input as vectors over F by
represents([a1,...,an]), and this uses basis().
Is there exported any connection between A and this representation
by basis() ?
If these choices are related as in (1), then the polynomial
represenation is converted fast to `represents'.
4. A minor related question:
for R : CommutativeRing being inside S : CommutativeRing,
f : UP(t, R), a : S,
what is in the Axiom library the simplest way to compute f(a)
(substitution of a for t in f) ?
Probably, eval(f, t, a) would not work,
one needs to map f, t, a to a same domain (UP(x, S) ?)
and then, retract the result ... Is there a simpler way?
Thanks,
------
Sergei
[email protected]
--
You received this message because you are subscribed to the Google Groups
"FriCAS - computer algebra system" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/fricas-devel?hl=en.