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 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 | 3 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 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 = 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.
The object isHolonomic is a method function.