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 http://dx.doi.org/10.2140/gt.2014.18.911 or http://arxiv.org/abs/1201.1579. 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 | 3 o3 : R-module, submodule of R |
i4 : isHolonomic(f) isFiniteStratification: Component monomialIdeal(a,b) 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-b2=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 | 3 o6 : R-module, submodule of R |
i7 : isHolonomic(f) o7 = true |
i8 : S=stratifyByRank(D); |
i9 : S#1 o9 = monomialIdeal (a, b, c) o9 : MonomialIdeal of R |
i10 : S#2 o10 = monomialIdeal (a, b, c) o10 : MonomialIdeal of R |
i11 : S#3 2 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 = monomialIdeal (a, b, c) o16 : MonomialIdeal of R |
i17 : S#2 o17 = monomialIdeal (a, b) o17 : MonomialIdeal 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.