# makeS2 -- compute the S2ification of a reduced ring

## Synopsis

• Usage:
(F,G) = makeS2 R
• Inputs:
• R, a ring, an equidimensional reduced (or just unmixed and genericaly Gorenstein) affine ring
• Optional inputs:
• Variable => ..., -- Sets the name of the indexed variables introduced in computing the S2-ification.
• Verbosity => ... (missing documentation),
• Outputs:
• F, , R →S, where S is the so-called S2-ification of R
• G, , frac S →frac R, giving the corresponding fractions

## Description

A ring S satisfies Serre’s S2 condition if every codimension 1 ideal contains a nonzerodivisor and every principal ideal generated by a nonzerodivisor is equidimensional of codimension one. If R is an affine reduced ring, then there is a unique smallest extension R⊂S⊂frac(R) satisfying S2, and S is finite as an R-module.

There are several methods to compute S. Currently, only two of these methods is implemented in this package. Stay tuned, or help write the other methods!

One simple example is the rational quartic curve.

 `i1 : A = ZZ/101[a..d];` ```i2 : I = monomialCurveIdeal(A,{1,3,4}) 3 2 2 2 3 2 o2 = ideal (b*c - a*d, c - b*d , a*c - b d, b - a c) o2 : Ideal of A``` `i3 : R = A/I;` ```i4 : (F,G) = makeS2 R ZZ ---[w , a, b, c, d] 101 0,0 o4 = (map(------------------------------------------------------------------- 2 2 2 (b*c - a*d, w d - c , w c - b*d, w b - a*c, w a - b , w 0,0 0,0 0,0 0,0 0,0 ------------------------------------------------------------------------ ------,R,{a, b, c, d}), map(frac - a*d) ------------------------------------------------------------------------ / ZZ | ---[w , a, b, c, d] | 101 0,0 R,frac|----------------------------------------------------------------- | 2 2 2 |(b*c - a*d, w d - c , w c - b*d, w b - a*c, w a - b , w \ 0,0 0,0 0,0 0,0 0, ------------------------------------------------------------------------ \ | | b*d --------|,{---, a, b, c, d})) | c - a*d)| 0 / o4 : Sequence```

This function is probabilistic, and can fail if R is not a domain. If it fails and the characteristic is not too small, then simply rerun it. If the characteristic is small, then another method may be needed. This might mean that you need to either write it or ask us to do so!

## Caveat

The return value of this function is likely to change in the future