# Computation of the inverse system at a multiple point

## Description

The algorithm computes the structure of the local ring and the generators of the dual space of a multiple isolated point. It is described in
```@Article{MBmega96,
author =      "Mourrain, B.",
title =       "Isolated points, duality and residues",
journal =     "J. of Pure and Applied Algebra",
year =        "1996",
file =        "ftp://www.inria.fr/safir/9606-BM-mega.ps.gz",
volume =      "117 \& 118",
pages =       "469-493",
note =        "Special issue for the proc. of the 4th Int. Symp. on
Effective Methods in Algebraic Geometry (MEGA)"
}
```
An implementattion by B. Bertrand is available here.

## Example

```> read invsyst:
> f := [x[1]^2-x[1]+x[2]+x[3]+x[4]+x[5]-4, x[2]^2+x[1]-x[2]+x[3]+x[4]+x[5]-4,
x[3]^2+x[1]+x[2]-x[3]+x[4]+x[5]-4, x[4]^2+x[1]+x[2]+x[3]-x[4]+x[5]-4,
x[5]^2+x[1]+x[2]+x[3]+x[4]-x[5]-4]:
> F:=map(expand,subs(x[1]=u[1]+1,x[2]=u[2]+1,x[3]=u[3]+1,
x[4]=u[4]+1,x[5]=u[5]+1,f)):
> invsyst(F,[0,0,0,0,0]);
[[1],

[-d[1] + d[3], -d[1] + d[4], -d[1] + d[5], -d[1] + d[2]], [

2         2         2                                 2
-2 d[1]  - 2 d[2]  - 2 d[3]  + d[3] d[2] + d[4] d[3] - 2 d[4]

2
+ d[4] d[2] + 2 d[5] + 2 d[5] d[1] - 2 d[5] ,

2
d[4] d[1] - d[4] d[3] - d[5] d[1] + d[5] d[3], -2 d[1]

2         2                     2
+ d[2] d[1] - 2 d[2]  - 2 d[3]  + d[4] d[3] - 2 d[4]

2         2
+ d[4] d[2] + 2 d[5] + d[5] d[1] + d[5] d[3] - 2 d[5] , -2 d[1]

2                     2         2
- 2 d[2]  + d[3] d[1] - 2 d[3]  - 2 d[4]  + 2 d[4] d[2] + 2 d[5]

2        2         2         2
+ d[5] d[1] + d[5] d[3] - 2 d[5] , 2 d[1]  + 2 d[2]  + 2 d[3]

2
- d[4] d[3] + 2 d[4]  - 2 d[4] d[2] - 2 d[5] - 2 d[5] d[1]

2
- d[5] d[3] + d[5] d[4] + 2 d[5] ,

d[4] d[3] - d[4] d[2] - d[5] d[3] + d[5] d[2]], [-4 d[3] d[1]

2         3         2         2
- 4 d[5] + 4 d[1]  + 2 d[1]  + 4 d[4]  + 2 d[4]  d[1]

2                            2
+ 2 d[2]  d[1] - 2 d[5] d[1] + 4 d[5]  + 4 d[5] d[3] - 2 %6

2                   2              2              2
- 2 d[5]  d[4] - 2 d[5] d[1]  - 2 d[5] d[2]  - 2 d[5] d[3]

2                                     2
- 2 d[5] d[4]  - 6 d[5] d[2] + 2 d[5] d[4] + 4 d[3]

2              3         3         3
- 4 d[4] d[3] + 2 d[3]  d[1] + 2 d[2]  - 2 d[4]  - 2 d[5]

2         2              2
+ 4 d[2]  + 2 d[5]  d[2] + 2 d[3]  d[2] - %4 + d[5] d[4] d[2]

2                   2              2              2
+ 2 d[4]  d[2] - 2 d[4] d[1]  - 2 d[4] d[2]  - 2 d[4] d[3]

2                        2
+ 2 d[5]  d[1] - %3 + 2 d[2] d[1]  + %2 + 2 %1, -4 d[3] d[1]

2         3         2              2
- 4 d[5] + 4 d[1]  + 2 d[1]  + 4 d[4]  + %5 + 2 d[4]  d[1]

2                            2
+ 2 d[2]  d[1] - 2 d[5] d[1] + 4 d[5]  + 6 d[5] d[3] - %6

2              2              2              2
- 2 d[5] d[1]  - 2 d[5] d[2]  - 2 d[5] d[3]  - 2 d[5] d[4]

2                       2              3
- 6 d[5] d[2] + 4 d[3]  - 4 d[4] d[3] + 2 d[3]  d[1] + 2 d[2]

3         2         3         2                   2
- 2 d[5]  + 4 d[2]  - 2 d[3]  + 2 d[5]  d[2] - 2 d[3] d[1]

2         2                   2              2
- 2 d[3] d[2]  + 2 d[3]  d[2] - %4 - 2 d[4]  d[3] + 2 d[4]  d[2]

2              2                          2
+ 2 d[5]  d[1] - 2 d[5]  d[3] - 2 %3 + 2 d[2] d[1]  + 2 %1

2         2
+ d[5] d[3] d[2], 4 d[3] d[1] + 4 d[5] - 4 d[1]  - 4 d[4]  - %5

2                                 2              2
- 4 d[5]  - 4 d[5] d[3] + %6 + 2 d[5] d[1]  + 2 d[5] d[2]

2              2                       2
+ 2 d[5] d[3]  + 2 d[5] d[4]  + 6 d[5] d[2] - 4 d[3]

3         3         2         2
+ 4 d[4] d[3] - 2 d[2]  + 2 d[5]  - 4 d[2]  - 2 d[5]  d[2]

2              2                        2
- 2 d[3]  d[2] - 2 d[4]  d[2] + %3 - 2 d[2] d[1]  - %2 - %1

2         3
+ d[4] d[3] d[2], -4 d[3] d[1] - 4 d[5] + 4 d[1]  + 2 d[1]

2              2              2
+ 4 d[4]  + %5 + 2 d[4]  d[1] + 2 d[2]  d[1] - 2 d[5] d[1]

2                              2                   2
+ 4 d[5]  + 6 d[5] d[3] - 2 %6 - 2 d[5]  d[4] - 2 d[5] d[1]

2              2              2
- 2 d[5] d[2]  - 2 d[5] d[3]  - 2 d[5] d[4]  - 8 d[5] d[2]

2                       2              3
+ 2 d[5] d[4] + 4 d[3]  - 4 d[4] d[3] + 2 d[3]  d[1] + 4 d[2]

3         3         2         3         2
- 2 d[4]  - 2 d[5]  + 4 d[2]  - 2 d[3]  + 4 d[5]  d[2]

2              2         2
- 2 d[3] d[1]  - 2 d[3] d[2]  + 4 d[3]  d[2] - 2 %4

2              2                   2              2
- 2 d[4]  d[3] + 4 d[4]  d[2] - 2 d[4] d[1]  - 2 d[4] d[2]

2         2              2
- 2 d[4] d[3]  + 2 d[5]  d[1] - 2 d[5]  d[3] - 2 %3

2
+ 4 d[2] d[1]  + %2 + 3 %1 + d[4] d[3] d[1]], [-16 d[3] d[1]

2         3          2
- 16 d[5] + 16 d[1]  + 2 d[1]  + 16 d[4]

2
+ 9/2 d[5] d[4] d[3] d[2] - 3 d[5]  d[3] d[2]

2
+ 9/2 d[5] d[4] d[3] d[1] - 3 d[5] d[4]  d[1]

2                   2                        2
- 3 d[5] d[2]  d[1] - 3 d[5] d[4]  d[3] - 3 d[5] d[3] d[1]

2         3                   3
- 3 d[5] d[3] d[2]  - 3 d[5]  d[3] - 3 d[5] d[3]

2
- 3 d[5]  d[3] d[1] + 9/2 d[5] d[4] d[2] d[1]

2                   2                   2
- 3 d[5] d[2] d[1]  - 3 d[5] d[4] d[1]  - 3 d[5] d[4] d[2]

2              2                   2
- 3 d[5] d[4] d[3]  - 3 d[5] d[3]  d[2] - 3 d[5] d[4]  d[2]

2              3
+ 9/2 d[5] d[3] d[2] d[1] - 3 d[5] d[3]  d[1] - 3 d[5]  d[1]

3              3         3              3
- 3 d[5] d[2]  - 3 d[5] d[4]  - 3 d[5]  d[2] - 3 d[5]  d[4]

2     2          2     2          2     2
+ 12 d[5]  d[1]  + 12 d[5]  d[2]  + 12 d[5]  d[3]

2     2         2                   2
+ 12 d[5]  d[4]  - 3 d[5]  d[2] d[1] - 3 d[5]  d[4] d[2]

2                   2                        3
- 3 d[5]  d[4] d[1] - 3 d[5]  d[4] d[3] - 3 d[5] d[1]

2     2          2     2          4          4
+ 12 d[3]  d[1]  + 12 d[3]  d[2]  + 12 d[3]  + 12 d[1]

4              2                             2
+ 12 d[5]  - %5 - 3 d[4]  d[3] d[2] - 3 d[4] d[2] d[1]

2
+ 9/2 d[4] d[3] d[2] d[1] - 3 d[4] d[3] d[2]

2                   2                        2
- 3 d[4] d[3]  d[2] - 3 d[4] d[3]  d[1] - 3 d[4] d[3] d[1]

3              3               2     2          2     2
- 3 d[4]  d[3] - 3 d[4]  d[2] + 12 d[4]  d[1]  + 12 d[4]  d[2]

2     2         3                   3              3
+ 12 d[4]  d[3]  - 3 d[4]  d[1] - 3 d[4] d[2]  - 3 d[4] d[3]

2              2                   3
- 3 d[3] d[2] d[1]  - 3 d[3] d[2]  d[1] - 3 d[3] d[1]

3                   3         3              2
- 3 d[3]  d[1] - 3 d[3] d[2]  - 3 d[3]  d[2] - 3 d[3]  d[2] d[1]

4          4         2              2
+ 12 d[2]  + 12 d[4]  + 2 d[4]  d[1] + 2 d[2]  d[1]

2                        2
- 2 d[5] d[1] + 16 d[5]  + 4 d[5] d[3] - 12 d[5]  d[4]

2              2              2              2
+ 2 d[5] d[1]  + 2 d[5] d[2]  + 2 d[5] d[3]  + 2 d[5] d[4]

2         2
- 16 d[5] d[2] - 4 d[5] d[4] + 16 d[3]  + 2 d[3]  d[1]

3         3          2         3              2
- 12 d[4]  + 2 d[5]  + 16 d[2]  - 4 d[3]  - 4 d[3] d[1]

2                                   2
- 4 d[3] d[2]  - 3 %4 + 4 d[5] d[4] d[2] - 4 d[4]  d[3]

2               2               2         2
- 12 d[4] d[1]  - 12 d[4] d[2]  - 12 d[4] d[3]  + 2 d[5]  d[1]

2                                        3
- 4 d[5]  d[3] + 4 %3 + 3 %2 + 6 %1 - 3 d[4] d[1]

2                   2                        2
- 3 d[4]  d[2] d[1] - 3 d[4]  d[3] d[1] - 3 d[4] d[2]  d[1]

2     2              3         3
+ 12 d[2]  d[1]  - 3 d[2] d[1]  - 3 d[2]  d[1]

+ 7 d[4] d[3] d[2] + 6 d[4] d[3] d[1]]]

%1 := d[5] d[4] d[3]

%2 := d[5] d[4] d[1]

%3 := d[4] d[2] d[1]

%4 := d[5] d[2] d[1]

%5 := d[5] d[3] d[1]

%6 := d[3] d[2] d[1]

```