Macaulay2 » Documentation
Packages » WhitneyStratifications :: mapStratifyPol
next | previous | forward | backward | up | index | toc

mapStratifyPol -- Computes a Whitney stratification of a polynomial map $f:X\to Y$ between real or complex varieties.

Description

For a polynomial map $f:X\to Y$ this command computes a Whitney stratification of $f$, that is a Whitney stratification of $X$ and of $Y$ (in the same output format as the whitneyStatify command), such that for each (open, connected) strata $M$ of $X$ there is an (open, connected) strata $N$ of $Y$ such that $f(M) \subset N$ and such that the restriction of $f$ to $M$ is a submersion. When $f$ is a proper map this stratification turns $f$ into a locally trivial fiber bundle by Thom's isotopy lemma. More generally when $f$ is a dominant map between varieties of the same dimension a stratification which further stratifies by non-properness locus is also implemented (as described in Section 3.3 of [2], M. Helmer, V. Nanda, Effective Whitney Stratification of Real Algebraic Varieties . Arxiv: 2307.05427). This can be used to, for example, solve the real root classification problem (see Section 5 of [2]), that is to stratify the parameter space of a parametric system of polynomials with generically finitely many complex solutions into regions where the number of real solutions is fixed.

This method is used in an exactly identical way to mapStratify. The main difference is that it uses the underlying Whitney stratification step based on polar variety computation, and is hence probabilistic (while mapStratify uses conormal method for the Whitney stratification step and is hence deterministic).

The mapStratifyPol method is often faster than mapStratify. Similar to the whitneyStratifyPol method it also produces unnecessary components (which are random).

We carry out the example of the quadratic equation $ax^2+bx+c$ by stratifying the parameter space, $(a,b,c)\in \RR^3$, into regions where the number of real roots is constant. To remove unnecessary strata we do the calculation once and take the common elements as the result.

Here we stratify the projection map $X\to \RR^3$ where $X=V(ax^2+bx+c)$.

i1 : R=QQ[a,b,c,x]

o1 = R

o1 : PolynomialRing
i2 : I=ideal(a*x^2+b*x+c)

              2
o2 = ideal(a*x  + b*x + c)

o2 : Ideal of R
i3 : S=QQ[(gens(R))_(toList(0..2))]

o3 = S

o3 : PolynomialRing
i4 : gens S

o4 = {a, b, c}

o4 : List
i5 : F={R_0,R_1,R_2}

o5 = {a, b, c}

o5 : List
i6 : ms1=mapStratifyPol(F,I,ideal(0_S),isProper=>false)

o6 = {MutableHashTable{...4...}, MutableHashTable{...4...}}

o6 : List
i7 : ms2=mapStratifyPol(F,I,ideal(0_S),isProper=>false)

o7 = {MutableHashTable{...4...}, MutableHashTable{...4...}}

o7 : List
i8 : ms={new MutableHashTable from for k in keys first ms1 list k=>toList((set(first ms1)#k)*(set(first ms2)#k)),new MutableHashTable from for k in keys last ms1 list k=>toList((set(last ms1)#k)*(set(last ms2)#k))}

o8 = {MutableHashTable{...4...}, MutableHashTable{...4...}}

o8 : List
i9 : peek last ms

o9 = MutableHashTable{0 => {ideal (c, b, a)}          }
                      1 => {ideal (b, a)}
                      3 => {ideal 0}
                                            2
                      2 => {ideal a, ideal(b  - 4a*c)}

Ways to use mapStratifyPol:

  • mapStratifyPol(List,Ideal,Ideal)

For the programmer

The object mapStratifyPol is a method function with options.


The source of this document is in WhitneyStratifications.m2:1799:0.