Ring homomorphisms

A ring homomorphism is a linear function f: R \to S that maps between two rings R and S and which preserves the operations of multiplication and addition: \begin{align*} f(a + b) &= f(a) + f(b) \\ f(ab) &= f(a)f(b) \\ f(1) &= 1 \end{align*} f(a + b) = f(a) + f(b) f(ab) = f(a)f(b) f(1) = 1

The HAPRingHomomorphism datatype

The HAPRingHomomorphism datatype represents a particular class of ring homomorphisms (in fact usually ring isomorphisms), namely those between rings presented as quotient rings of polynomial rings, where the source and target rings have the same coefficient ring. They represent the mapping \frac{R}{I} \to \frac{S}{J} R/I -> S/J where R = k[x_1, \ldots, x_n] and S = k[y_1, \ldots, x_m] and I and J are ideals in R and S respectively.

Such a ring homomorphism may be specified by the following information a polynomial ring R a list of polynomials in R that generate the ideal I a list Q = [q_1, ..., q_n] where each q_i \in S/J is the image of the indeterminate x_i in R under the homomorphism. The target ideal J is assumed to be the image of I under the homomorphism.

Implementation details

Various different internal representations are used for ring homomorphisms in &HAPprime;, depending on the source and target ring. The user need not be concerned with the different representations, which correspond to the five constructors , , , and , and which are hopefully largely self-explanatory.

Most of the provided representations of ring homomorphisms use Gröbner bases and polynomial reduction to perform the mapping. This uses the `singular` package which gives good speed and access to improved monomial orderings. This datatype cannot be used without the `singular` package.
Elimination orderings
Using Gröbner bases to map from one polynomial ring R to another polynomial ring S relies on applying a global ordering to the joint ring R \cup S. For all polynomials p \in R and q \in S, this ordering must give p > q, so that terms involving elements of R will be replaced by those in S. A straightforward solution is to use a lexicographic term ordering which orders the indeterminates of R before those of S. However, computing Gröbner bases using a lexicographic ordering can be much more expensive that with other orderings, or sometimes even a change of the order of indeterminates is enough change the order of the computation. A range of different ordering can be requested by using the &GAP; options stack , and setting the options EliminationIndexOrder and EliminationBlockOrdering as described below.

The option EliminationIndexOrder determines the indeterminate ordering to use. Possible values are the following strings: "Forward" (default) Indeterminates are ordered as in the definition of R and S: p_1 > p_2 > \ldots > p_n > q_1 > q_2 > \ldots > q_m. "Reverse" Lexicographic ordering in reverse order to that in the definition of R and S: p_n > p_{n-1} > \ldots > p_1 > q_m > q_{m-1} > \ldots > q_1. "Shuffle" Lexicographic ordering using a random shuffle of the indeterminates in R and S. "ShuffleNN" where NN is some non-negative integer. This is the same as Shuffle, but using the value of NN as the random seed (and hence is deterministic).

When comparing two monomials, the elimination ordering ensures that the parts of the two monomials involving the indeterminates from R are compared first, and then in the event of a tie, the part involving those from S are compared. The option EliminationBlockOrdering determines the monomial ordering to use for each of these two comparisons. This is given as a string which is the concatenation of the two required orderings. For example, the default ordering is "LexGrlex" which means lexicographic ordering over the indeterminates of R, and graded lexicographic over the indeterminates of S. "Lex" Lexicographic ordering, the equivalent of the &GAP; ordering ). "Grlex" Graded lexicographic ordering, the equivalent of . "Grevlex" Graded reverse lexicographic ordering, the equivalent of .
Construction functions
Data access functions
General functions
Example: Constructing and using a HAPRingHomomorphism

As an initial example, we shall construct a ring homomorphism \phi: k[x_1, x_2] \to k[x_3, x_4] (i.e. ideal) with the mapping x_1 \mapsto x_3 and x_2 \mapsto x_3 + x_4. In all these examples, we shall take k to be the field of two elements, GF(2). We demonstrate that this is an isomorphism by mapping a polynomial from the source ring to the target and back again. gap> R := PolynomialRing(GF(2), 2);; gap> S := PolynomialRing(GF(2), 2, IndeterminatesOfPolynomialRing(R));; gap> phi := HAPRingToSubringHomomorphism(R, [], [S.1, S.1+S.2]); <Ring homomorphism> gap> p := ImageOfRingHomomorphism(phi, R.1^3+R.1*R.2+R.2); x_3^3+x_3^2+x_3*x_4+x_3+x_4 gap> PreimageOfRingHomomorphism(phi, p); x_1^3+x_1*x_2+x_2

Some ring presentations are not in minimal form: there is an isomorphic ring in fewer indeterminates. The function can find and return an isomorphism that maps to this reduced ring. For example, the ring k[x_1, x_2, x_3]/(x_1^2 + x_2^3, x_2^2 + x_3) has an isomorphic presentation in only two indeterminates, as this computation shows: gap> R := PolynomialRing(GF(2), 3);; gap> I := [R.1^2+R.2^3, R.2^2+R.3]; [ x_2^3+x_1^2, x_2^2+x_3 ] gap> phi := HAPRingReductionHomomorphism(R, I); <Ring homomorphism> gap> ImagePolynomialRing(phi); GF(2)[x_4,x_5] gap> ImageRelations(phi); [ x_5^3+x_4^2 ]

The source and target of HAPRingHomomorphisms can be quotient rings, and any relations can be specified at the source of target. When mapping from a subring to a full ring, the source relations do not necessarily need to be specified in the source ring, but could instead be given in its containing ring. For example, consider the ring R/I where R = k[x_1, x_2, x_3] and I = x_1^3+x_3 and the subring generated by (x_1, x_2, x_3^2). If we wish to specify the homomorphism \phi: R/I \to S/J where S = k[x_4, x_5, x_6] with the natural map from the generators of R to those of S then we only need specify the original ideal I, even though it is not in the subring. The intersection between I and the subring is found to be x_1^4+x_3^2, and it is this ideal that is used in the homomorphism, as this example shows: gap> R := PolynomialRing(GF(2), 3);; gap> I := [R.1^2+R.3]; [ x_1^2+x_3 ] gap> S := PolynomialRing(GF(2), 3, IndeterminatesOfPolynomialRing(R));; gap> phi := HAPSubringToRingHomomorphism([R.1, R.2, R.3^2], I, S); <Ring homomorphism> gap> Display(phi); Ring homomorphism x_1 -> x_4 x_2 -> x_5 x_3^2 -> x_6 with relations [ x_1^2+x_3 ] and [ x_4^4+x_6 ] gap> Display(InverseRingHomomorphism(phi)); Ring homomorphism x_4 -> x_1 x_5 -> x_2 x_6 -> x_3^2 with relations [ x_4^4+x_6 ] and [ x_1^4+x_3^2 ]

Ring homomorphisms can also be composed with each other. For example, we can take the above and change the target indeterminates by composing this with a : gap> R := PolynomialRing(GF(2), 3);; gap> I := [R.1^2+R.3]; [ x_1^2+x_3 ] gap> S := PolynomialRing(GF(2), 3, IndeterminatesOfPolynomialRing(R));; gap> phi := HAPSubringToRingHomomorphism([R.1, R.2, R.3^2], I, S); <Ring homomorphism> gap> # gap> T := PolynomialRing(GF(2), 3, [R.1, R.2, R.3, S.1, S.2, S.3]);; gap> phi2 := HAPRingHomomorphismByIndeterminateMap( > ImagePolynomialRing(phi), ImageRelations(phi), T); <Ring homomorphism> gap> Display(CompositionRingHomomorphism(phi, phi2)); Ring homomorphism x_1 -> x_7 x_2 -> x_8 x_3^2 -> x_9 with relations [ x_1^2+x_3 ] and [ x_7^4+x_9 ]