# Primary decomposition (IMA2011)

### Goal

(Re?)implement the GTZ primary decomposition algorithm in Macaulay2, so that Macaulay2 is roughly the same speed as Singular.

All code is found in the repository for this workshop, in the PrimaryDecomposition directory.

### To Do List

• Use reduction modulo an ideal instead of passing to a quotient ring in the zero dimensional case.
• Make sure we only change coordinates after a failed check of zero dimensional general position.
• Put back in the change of coordinates if ideal is not in general position.
• Minimize number of eliminates done, potentially by rewriting how one computes the 'minimal polynomial' in the zero dimensional case.
• Mike: Implement factorizing Grobner bases. (in the engine?) In particular, make Franzi's example work!
• Method for quickly computing gb in lex order using hilbert hint. Steps include:
• gb in grevlex
• homogenize gb
• poincare
• gb of homogenized ideal in lex with hilbert hint
• dehomogenize
• forceGB
• New isPrimary command using isPrimaryZeroDim, and rename isPrimaryZeroDim to actually describe the behavior.
• Generalized quick GB command
• Carry around the independent set after splitting the ideal?
• Look at the saturation code to see if that may be improved.
• Look at the code that finds the separators to see if that may be improved.
• Trace through an example in M2 and Singular in parallel to see where optimizations can be made. (factorizable gb might be one option)
• Find a way around computing a GB or independent sets at the beginning so that we can handle Franzi's example in M2
• Construct reasonable examples (in the minute range) for testing

I (Franzi) would like to implement Primary Decomposition via GTZ.

Frank et al have implemented GTZ and GTZ with GenPos (trunk/Macaulay2/packages/PrimaryDecomposition), it's working but slow.