Macaulay2 » Documentation
Packages » VectorFields :: isHolonomic
next | previous | forward | backward | up | index | toc

isHolonomic -- test whether an algebraic set is holonomic



Test if $X$, the algebraic set defined by I or f, is holonomic. Let $D$ be the module of logarithmic vector fields for I. Then $X$ is called holonomic if at any point $p$ in $X$, the generators of $D$ evaluated at $p$ span the tangent space of the stratum containing $p$ of the canonical Whitney stratification of $X$; equivalently, the maximal integral submanifolds of $D$ equal the the canonical Whitney stratification of $X$ (except that the complement of $X$ forms additional integral submanifold(s)).

The algorithm used amounts to computing isFiniteStratification(stratifyByRank(derlog(I))) (see isFiniteStratification, stratifyByRank, derlog). Details may be found in section 4.3 of ``James Damon and Brian Pike. Solvable groups, free divisors and nonisolated matrix singularities II: Vanishing topology. Geom. Topol., 18(2):911-962, 2014'', available at or The basic idea, however, is present in (3.13) of ``Kyoji Saito. Theory of logarithmic differential forms and logarithmic vector fields. J. Fac. Sci. Univ. Tokyo Sect. IA Math., 27: 265-291, 1980''.

i1 : R=QQ[a,b,c];

This hypersurface is not holonomic, since gens(D) has rank 0 on the $1$-dimensional space $a=b=0$:

i2 : f=a*b*(a-b)*(a-c*b);
i3 : D=derlog(ideal (f))

o3 = image | a 0    0     |
           | b 0    ab-b2 |
           | 0 bc-a -ac+a |

o3 : R-module, submodule of R
i4 : isHolonomic(f)
isFiniteStratification: Component ideal(b,a) has dim 1 but should be of dim <1 to have a finite stratification.

o4 = false

This is holonomic; the stratification consists of the origin, and the rest of the surface $ac-b^2=0$:

i5 : f=a*c-b^2;
i6 : D=derlog(ideal (f))

o6 = image | 2b a  0  0  |
           | c  0  b  a  |
           | 0  -c 2c 2b |

o6 : R-module, submodule of R
i7 : isHolonomic(f)

o7 = true
i8 : S=stratifyByRank(D);
i9 : S#1

o9 = ideal (a, b, c)

o9 : Ideal of R
i10 : S#2

o10 = ideal (a, b, c)

o10 : Ideal of R
i11 : S#3

o11 = ideal(b  - a*c)

o11 : Ideal of R

The Whitney Umbrella is also holonomic; the stratification consists of the origin, the rest of the line $a=b=0$, and the rest of the surface:

i12 : f=a^2-b^2*c;
i13 : D=derlog(ideal (f));
i14 : isHolonomic(f)

o14 = true
i15 : S=stratifyByRank(D);
i16 : S#1

o16 = ideal (a, b, c)

o16 : Ideal of R
i17 : S#2

o17 = ideal (a, b)

o17 : Ideal of R
i18 : S#3

             2     2
o18 = ideal(b c - a )

o18 : Ideal of R


See the warnings in isFiniteStratification.

Also, this usage of holonomic originates with Kyoji Saito and may vary from other meanings of the word, particularly in D-module theory.

See also

Ways to use isHolonomic :

For the programmer

The object isHolonomic is a method function.