This file offers some functions for working with homomorphisms between (quotients of) polynomial algebras.
Let phi
be a RingHom
from R
to S
where both rings are
either polynomial rings or quotients of polynomial rings.
IsInjective(phi)
-- true
iff phi
is injective
IsSurjective(phi)
-- true
iff phi
is surjective
IsInImage(phi,y)
-- true
iff y
is in the image of phi
Let phi
be a RingHom
from R
to S
where both rings are
either polynomial rings or quotients of polynomial rings.
ker(phi)
-- computes the kernel of phi
as an ideal in R
preimage(phi,y)
-- computes an element x
of R
such that phi(x) = y
; throws an exception if y
is not in the image of phi
preimage0(phi,y)
-- computes an element x
of R
such that phi(x) = y
; returns zero(domain(phi))
if y
is not in the image of phi
The centrepiece is the structure RichRingHom
which contains several
components useful for actually doing the computation. In particular,
all operations require computation in a new ring RS
which contains "orthogonal"
copies of the polynomial rings in R
and S
There are natutal homomorphisms
from RS
to R
and from S
into RS
.
The hope is that this structure will be memorized inside the RingHom
object so that it does not need to be recomputed.
Maintainer doc is very incomplete. The algorithms are not especially hard, but they are also not so simple. Reference to K+R book?
2017