Let strat be the output of stratifyByRank applied to a module $L$ of vector fields. When $L$ is a Lie algebra, strat contains information about the integral submanifolds of $L$; under the assumption that $L$ is a Lie algebra, this function checks whether there are a finite number of connected integral submanifolds.
The algorithm used, and perhaps even the term integral submanifold, is only valid in real or complex geometry. This routine checks that, for all $j$, each component of strat#j has dimension $<j$. It is up to the user to check that the answers obtained by Macaulay2 (e.g., in QQ[x,y,z]) would not change if the calculation was done over the real or complex numbers.
The algorithm is motivated by the results of 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, make debugLevel$>1$.
i1 : R=QQ[a,b,c]; |
i2 : f=a*b*(a-b)*(a-c*b) 2 2 3 3 2 2 o2 = - a b c + a*b c + a b - a b o2 : R |
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 : S=stratifyByRank(D); |
Since D has rank 0 on $a=b=0$, that is, the vector fields all vanish:
i5 : S#1 o5 = ideal (a, b) o5 : Ideal of R |
the stratification cannot be finite (every point on $a=b=0$ is its own stratum):
i6 : isFiniteStratification(S) isFiniteStratification: Component ideal(b,a) has dim 1 but should be of dim <1 to have a finite stratification. o6 = false |
This stratification is finite:
i7 : D=derlog(ideal (a*b*c)) o7 = image | a 0 0 | | 0 b 0 | | 0 0 c | 3 o7 : R-module, submodule of R |
i8 : isFiniteStratification(stratifyByRank(D)) o8 = true |
The assumption that $L$ is a Lie algebra is not checked.
The object isFiniteStratification is a method function.