# endomorphismRingIdeal -- Find the relations of an endomorphism ring

## Synopsis

• Usage:
I = endomorphismRingIdeal(M,X)
• Inputs:
• M, ,
• X, , the base name for the indexed variables serving as generators for the output ring
• Outputs:
• I, an ideal, in a FreeAlgebra with variables with base name X

## Description

This method computes the multiplication table of the endomorphism ring of a module $M$ over a commutative ring $R$, and returns this information as an ideal. Since Groebner bases do not (yet!) work for a FreeAlgebra with coefficients in a commutative ring, minimizing these generators and relations must be performed by the user. This will be fixed in a future release.

 i1 : Q = QQ[a,b,c] o1 = Q o1 : PolynomialRing i2 : R = Q/ideal{a*b-c^2} o2 = R o2 : QuotientRing i3 : kRes = res(coker vars R, LengthLimit=>7) 1 3 4 4 4 4 4 4 o3 = R <-- R <-- R <-- R <-- R <-- R <-- R <-- R 0 1 2 3 4 5 6 7 o3 : ChainComplex i4 : M = coker kRes.dd_5 o4 = cokernel {4} | 0 -a 0 -c | {4} | -b 0 -c 0 | {4} | c 0 a 0 | {4} | 0 c 0 b | 4 o4 : R-module, quotient of R i5 : I = endomorphismRingIdeal(M,X) Using numthreads = 0 Using GC ring in VectorArithmetic. Using numthreads = 0 Using GC ring in VectorArithmetic. Using numthreads = 0 Using GC ring in VectorArithmetic. 2 2 o5 = ideal (X , X X - X , X X - X , X X , X X , X - X , X X - X , X X , 0 0 1 0 0 2 3 0 3 1 0 1 1 1 2 2 1 3 ------------------------------------------------------------------------ 2 2 X X - X , X X , X , X X - X , X X - X , X X , X X , X - X , - X - 2 0 1 2 1 2 2 3 2 3 0 0 3 1 3 2 3 3 1 ------------------------------------------------------------------------ X + 1) 3 o5 : Ideal of R <|X , X , X , X |> 0 1 2 3

The endomorphisms corresponding to the variables chosen are cached in the ideal returned by this method, and can be accessed using the key "EndomorphismRingIdealGens".

 i6 : maps = I.cache#"EndomorphismRingIdealGens" o6 = {{4} | 0 0 1 0 |, {4} | 0 0 0 0 |, {4} | 0 0 0 0 |, {4} | 1 0 0 0 |} {4} | 0 0 0 0 | {4} | 0 1 0 0 | {4} | 0 0 0 1 | {4} | 0 0 0 0 | {4} | 0 0 0 0 | {4} | 0 0 1 0 | {4} | 1 0 0 0 | {4} | 0 0 0 0 | {4} | 0 1 0 0 | {4} | 0 0 0 0 | {4} | 0 0 0 0 | {4} | 0 0 0 1 | o6 : List i7 : assert(maps_0*maps_2 == maps_3)

## Ways to use endomorphismRingIdeal :

• "endomorphismRingIdeal(Module,Symbol)"

## For the programmer

The object endomorphismRingIdeal is .