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
|
The object trim is a method function with options.