# trim -- minimize generators and relations

## Description

There are two ways to present an $R$-module $M$. One way is to take a free module $F$ (whose generators are called the generators) and form the quotient $M = F/H$ by a submodule $H\subset F$ (whose generators are called the relations).

Another way is take a free module $F$, a submodule $G\subset F$ (whose generators are called the generators), a submodule $H\subset F$ (whose generators are called the relations), and form the subquotient module $M = (G+H)/H$, obtained also as the image of $G$ in $F/H$.

The purpose of trim is to minimize presentations of the latter type. This applies also to rings and ideals.

 i1 : R = ZZ/101[x,y,z,u,w] o1 = R o1 : PolynomialRing i2 : I = ideal(x^2-x^2-y^2, z^2+x*y, w^2-u^2, x^2-y^2) 2 2 2 2 2 2 o2 = ideal (-y , x*y + z , - u + w , x - y ) o2 : Ideal of R i3 : trim I 2 2 2 2 2 o3 = ideal (u - w , y , x*y + z , x ) o3 : Ideal of R i4 : trim (R^1/I) o4 = cokernel | u2-w2 y2 xy+z2 x2 | 1 o4 : R-module, quotient of R
 i5 : R = ZZ/32003[a..d] o5 = R o5 : PolynomialRing i6 : M = coker matrix {{a,1,b},{c,3,b+d}} o6 = cokernel | a 1 b | | c 3 b+d | 2 o6 : R-module, quotient of R i7 : trim M o7 = subquotient (| 1 |, | 10668 b+16001d a-10668c |) | 0 | | 1 0 0 | 2 o7 : R-module, subquotient of R i8 : prune M o8 = cokernel | b+16001d a-10668c | 1 o8 : R-module, quotient of R

## Ways to use trim :

• "trim(Ideal)"
• "trim(Module)"
• "trim(MonomialIdeal)"
• "trim(QuotientRing)"
• "trim(Ring)"

## For the programmer

The object trim is .