Test if $X$, the algebraic set defined by H, is H-holonomic. Let $D$ be the module of vector fields annihilating $H$ (see derlogH), a submodule of the module of logarithmic vector fields for $H$. Then $X$ is called H-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 collection of maximal integral submanifolds of $D$ that are contained in $X$ will equal the canonical Whitney stratification of $X$. The ``H'' in H-holonomic refers to the name of the function.
The algorithm used essentially checks the dimensions of the components of the sets given by stratifyByRank(derlog(ideal (H))) (see isHolonomic and isFiniteStratification) and then compares these sets with those given by stratifyByRank(derlogH(H)). 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.
To display progress reports, set debugLevel>0.
i1 : R=QQ[a,b,c]; |
This hypersurface is not even holonomic, as the logarithmic vector fields have rank 0 on $a=b=0$:
i2 : f=a*b*(a-b)*(a-c*b); |
i3 : 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 : derlogH(f) o4 = image | ab a2 | | b2 -3ab+4b2 | | -4bc+4a 4ac-12bc+8a | 3 o4 : R-module, submodule of R |
i5 : isHHolonomic(f) isFiniteStratification: Component ideal(b,a) has dim 1 but should be of dim <1 to have a finite stratification. o5 = false |
i6 : isHolonomic(f) isFiniteStratification: Component ideal(b,a) has dim 1 but should be of dim <1 to have a finite stratification. o6 = false |
This hypersurface is H-Holonomic, although the generators of D are linearly dependent everywhere:
i7 : f=a*c-b^2; |
i8 : D=gens derlogH(f) o8 = | 2b a 0 | | c 0 a | | 0 -c 2b | 3 3 o8 : Matrix R <--- R |
i9 : det(D) o9 = 0 o9 : R |
i10 : isHHolonomic(f) o10 = true |
i11 : S=stratifyByRank(D) o11 = StratificationByRank{1 => ideal (a, b, c)} 2 => ideal (a, b, c) 3 => ideal () o11 : StratificationByRank |
i12 : S#1 o12 = ideal (a, b, c) o12 : Ideal of R |
i13 : S#2 o13 = ideal (a, b, c) o13 : Ideal of R |
i14 : S#3 o14 = ideal () o14 : Ideal of R |
The Whitney Umbrella is also H-Holonomic:
i15 : f=a^2-b^2*c; |
i16 : isHHolonomic(f) o16 = true |
See the warnings in isFiniteStratification.
The object isHHolonomic is a method function.