next | previous | forward | backward | up | top | index | toc | Macaulay2 website
WhitneyStratifications :: whitneyStratify

whitneyStratify -- Computes a Whitney stratification of the real and complex varieties.

Synopsis

Description

For a variety $X$ this command computes a Whitney stratification WS where WS#i is a list of strata closures in (complex) dimension $i$; for a prime ideal $P$ in WS#i the associated open (connected) strata is given by the connected components of $V(P)-Z$ where $Z$ is the union of the varieties defined by the entries of WS#(i-1). We demonstrate the method for the Whitney umbrella below.

i1 : R=QQ[x..z]

o1 = R

o1 : PolynomialRing
i2 : I=ideal(y^2*z-x^2)

            2     2
o2 = ideal(y z - x )

o2 : Ideal of R
i3 : WS=whitneyStratify I

o3 = MutableHashTable{...3...}

o3 : MutableHashTable
i4 : peek WS

o4 = MutableHashTable{0 => {ideal (z, y, x)}}
                      1 => {ideal (y, x)}
                                   2     2
                      2 => {ideal(y z - x )}

Now the projective version; using the option Projective=>true will treat the input as a projective vareity. If this option is omitted the input is treated as an affine cone over the projective vareity.

i5 : S=QQ[x..z,w]

o5 = S

o5 : PolynomialRing
i6 : I=ideal(y^2*z-x^2*w)

            2     2
o6 = ideal(y z - x w)

o6 : Ideal of S
i7 : WS=whitneyStratify(I,Projective=>true)

o7 = MutableHashTable{...3...}

o7 : MutableHashTable
i8 : peek WS

o8 = MutableHashTable{0 => {ideal (z, y, x), ideal (w, y, x)}}
                      1 => {ideal (y, x)}
                                   2     2
                      2 => {ideal(y z - x w)}

Another projective example.

i9 : R=QQ[a_0..a_4]

o9 = R

o9 : PolynomialRing
i10 : I=ideal(a_0^2*a_4-a_1*a_2^2+a_3^3-a_3*a_0^2-a_4^2*a_3)

                 2    2      3    2        2
o10 = ideal(- a a  - a a  + a  + a a  - a a )
               1 2    0 3    3    0 4    3 4

o10 : Ideal of R
i11 : V=whitneyStratify(I,Projective=>true)

o11 = MutableHashTable{...4...}

o11 : MutableHashTable
i12 : peek V

o12 = MutableHashTable{2 => {}                                                         }
                                                      2     2
                       0 => {ideal (a  - a , a , a , a  - 2a ), ideal (a , a , a , a )}
                                     3    4   2   1   0     4           4   3   2   0
                                                  2     2
                       1 => {ideal (a  - a , a , a  - 2a )}
                                     3    4   2   0     4
                                      2    2      3    2        2
                       3 => {ideal(a a  + a a  - a  - a a  + a a )}
                                    1 2    0 3    3    0 4    3 4

Note that as with the Whitney umbrella simply taking successive singular loci will not yield the correct stratification, in particular one would miss the two points defined by the second entry of V#0.

i13 : J=radical (I+minors(codim I, jacobian I))

                           2     2
o13 = ideal (a  - a , a , a  - 2a )
              3    4   2   0     4

o13 : Ideal of R
i14 : J2=radical (J+minors(codim J, jacobian J))

o14 = ideal (a , a , a , a )
              4   3   2   0

o14 : Ideal of R

Ways to use whitneyStratify :

For the programmer

The object whitneyStratify is a method function.