# MorseGraph

* © 2013 Mario Albert*

GNU Free Documentation License, Version 1.2

CoCoALib Documentation Index
## Examples

## User documentation for Morse Graph

Via the Morse Graph we are able to compute a free resolution of a
polynomial ideal via the `JBMill`

if the polynomial ideal has some
special properties. The ideal must be in delta-regular coordinates
(*i.e.* it has a Pommaret basis) and the ordering must be
`degrevlex`

. If these conditions hold we can compute a free
resolution and, if the ideal is homogeneous, the minimal free resolution
and the graded Betti numbers of the ideal.

### Using the Morse Graph

In the following let `mill`

a `JBMill`

with `degrevlex`

order. Furthermore we assume that `JBIsPommaretBasis(mill) == true`

.
The following command computes a free resolution as `vector<matrix>`

`JBResolution(mill)`

Now we assume that `mill`

contains a homogeneous ideal
`JBMinimalResolution(mill)`

-- Returns the minimal free resolution of `mill`

as `vector<matrix>`

`JBBettiDiagramm(mill)`

-- Returns a matrix of `ZZ`

, which represents the graded Betti numbers in Macaulay-Style

## Maintainer documentation for TmpMorseGraph.C, TmpMorseElement.C, TmpMorsePaths.C, TmpResolutionMinimization.C

We only explain the basic structure because there is very much code.
The implementation is divided in four parts:

### TmpMorseElement.C

Here we define the MorseElements and the
StandardRepresentationContainer. The MorseGraph consists of
MorseElements. The StandardRepresentationContainer stores standard
representations, to avoid redundant computations.

### TmpMorsePaths.C

MorsePaths are maps between MorseElements.

### TmpMorseGraph.C

Stores and computes the MorseGraph. Also there are some easy interfaces to access the resolution. It still waits for a general free resolution object in CoCoALib.

### ResolutionMinimization.C

Takes a free resolution of an homogeneous ideal an computes the minimal free resolutions. But only works for free resolution which have already the correct length.

## Bugs, Shortcomings and other ideas

### ResolutionMinimization.C

Implementing a own specialized myAddRowMul function (skipping zeros...).

### TmpMorseGraph.C

Waiting for general free resolution object.