You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Plan a Mathlib-shaped formalization route for Borcea--Branden stability-preserving
linear operators, starting from the theory already present in this repository.
This is broader than the closed finite-symbol scaffold in #69. The existing #69 interface is useful, but it records only one application-facing direction:
for a univariate real operator, stability of T((x + y)^d) implies preservation
of real-rootedness up to degree d. The eventual API should support the actual
finite-dimensional Borcea--Branden classifications and later the transcendental
infinite-dimensional versions.
Primary source:
J. Borcea and P. Branden, The Lee-Yang and Polya-Schur programs. I. Linear
operators preserving stability, Invent. Math. 177 (2009), 541--569,
arXiv:0809.0401, DOI: 10.1007/s00222-009-0189-3.
Existing local theory to preserve and reuse
The repository already has substantial pieces that should be treated as the
starting point.
RealRooted/MultivariateStability.lean defines complexifyMv, MvUpperHalfPlaneStable, MvRealStable, affine-line restriction, and closure
under nonzero scalar multiplication, multiplication, factors, renaming, and
left/right specialization. It also contains the bivariate lift xyLift.
RealRooted/Multiaffine.lean, RealRooted/LiebSokalOperator.lean, and RealRooted/LiebSokalPointwise.lean contain multiaffineness, the F(-partial){G} differential action, Gauss--Lucas-based derivative stability,
specialization-at-zero, and the pointwise tools for the Lieb--Sokal theorem.
These are core Borcea--Branden sufficiency ingredients, not side material.
RealRooted/HermiteBiehler.lean defines separate univariate IsUpperHalfPlaneStable, right-half-plane and Hurwitz stability, plus many
Hermite--Biehler/proper-position bridges. The future API should bridge this
to, or gradually migrate it toward, the multivariate predicate instead of
creating another competing stability vocabulary.
RealRooted/HurwitzMatrix.lean records that the current row-oriented Hurwitz
criterion attempts are false. A Borcea--Branden roadmap should not build on
those false interfaces; if Hurwitz matrices are needed, first introduce the
correctly oriented classical matrix and criterion.
RealRooted/Tactic/FiniteSymbolPF.lean and its frontends already implement a
concrete coefficient-bidiagonal finite-symbol route with homogenized bivariate
symbols and residual certificates. This should become an application layer
depending on the general theorem.
The finite-dimensional targets from Borcea--Branden I should guide the API.
Complex finite theorem, paper Theorem 1.1: for T : C_kappa[z] -> C[z], T preserves stability iff either the image has
rank at most one and is generated by a stable polynomial, or the algebraic
symbol G_T(z,w) = T((z + w)^kappa) is stable in the 2n variables.
Real finite theorem, paper Theorem 1.2: for T : R_kappa[z] -> R[z], T preserves real stability iff either the image
has rank at most two and is of the form alpha(f) P + beta(f) Q with P,Q
real stable and in proper position, or G_T(z,w) is real stable, or G_T(z,-w) is real stable.
Infinite-dimensional/transcendental analogues, paper Theorems 1.3 and 1.4,
should be planned later. They require entire functions/Laguerre--Polya style
limits and should not drive the first Lean definitions unless the finite API
would otherwise become incompatible.
Definition decisions
These are the definitions to get right before proving large theorems.
Stability should keep the current nonzero convention. MvUpperHalfPlaneStable P := forall z, Im z_i > 0 -> eval z P != 0 makes 0 not stable, matching the paper's preserver convention where the output is
stable or zero. Add explicit zero-aware wrappers such as MvUpperHalfPlaneStableOrZero and MvRealStableOrZero; do not silently make
zero stable.
Prefer an upstreamable namespace and hierarchy.
Candidate shape:
namespace MvPolynomial
defStableIn (Omega : sigma -> Set C) (P : MvPolynomial sigma C) : Prop :=
forall z, (forall i, z i in Omega i) -> eval z P != 0
abbrev UpperHalfPlaneStable (P : MvPolynomial sigma C) : Prop :=
StableIn (fun _ => {z | 0 < z.im}) P
abbrev RealStable (P : MvPolynomial sigma R) : Prop :=
UpperHalfPlaneStable (P.map Complex.ofRealHom)
The local RealRooted.MvUpperHalfPlaneStable can remain as a compatibility
alias during migration.
Keep real and complex stability separate.
Complex stability should live over MvPolynomial sigma C; real stability is
complex stability after coefficient embedding. Avoid statements that quantify
over an arbitrary IsROrC field until the basic API is stable.
Add a finite box-degree submodule for multivariate polynomials.
The Borcea--Branden domain is not total degree <= d; it is the box degreeOf i <= kappa i for every variable. Reuse Mathlib's existing
submodule patterns: univariate work can use Polynomial.degreeLE/ degreeLT, while the multivariate side should be a small upstreamable layer
over MvPolynomial.restrictSupport, e.g.
Define algebraic symbols by monomial expansion, not by ad hoc string or
substitution tricks.
For T : degreeOfLE R kappa ->_R MvPolynomial sigma R, define algebraicSymbol kappa T : MvPolynomial (sigma ⊕ sigma) R as the finite sum
over alpha <= kappa of binom(kappa, alpha) * rename Sum.inl (T (X^alpha)) * X_right^(kappa-alpha).
Then prove it equals the informal T((z+w)^kappa) formulation.
Include the sign-reversed real symbol from the beginning.
The real theorem has a G_T(z,-w) alternative. Add a reusable operation
such as negRightVariables or symbolNegRight, and prove it agrees with
substituting -X in the right variable block.
Formalize multivariate proper position separately from the existing
univariate Prec.
In the paper, proper position is a stability condition on g + I * f.
Add a multivariate predicate with the paper's orientation, then prove bridge
lemmas to the current univariate Prec/Prec0 API only after checking the
order/sign convention carefully.
Do not encode low-rank alternatives only as finrank range <= 1/2.
For theorem statements and use, structures are clearer and easier to apply:
structureComplexRankOneStableRange ... :=
(functional : V ->_C C)
(P : MvPolynomial sigma C)
(stable_P : UpperHalfPlaneStable P)
(eq_map : forall f, T f = functional f * P)
structureRealRankTwoProperPositionRange ... :=
(alpha beta : V ->_R R)
(P Q : MvPolynomial sigma R)
(stable_P : RealStable P)
(stable_Q : RealStable Q)
(proper : ProperPosition P Q)
(eq_map : forall f, T f = alpha f * P + beta f * Q)
Later prove equivalences with rank bounds if useful.
Keep circular-domain generality out of the first implementation.
A StableIn foundation can support circular domains later, but the first
theorem should target upper-half-plane stability. This is where the current
code and applications already live.
Proposed module split
Possible local modules, with upstream destinations in mind:
RealRooted/Mathlib/Algebra/MvPolynomial/Stability/DegreeBox.lean
for the degreeOfLE box submodule, monomial basis helpers, and finite sums
over alpha <= kappa.
RealRooted/Mathlib/Algebra/MvPolynomial/Stability/Symbol.lean
for algebraic symbols, sign-reversed symbols, and univariate specializations.
RealRooted/Mathlib/Algebra/MvPolynomial/Stability/ProperPosition.lean
for multivariate proper position and links to Hermite--Biehler/Obreschkoff.
RealRooted/Mathlib/Algebra/MvPolynomial/Stability/Multiaffine.lean
for upstreamable parts of the current Multiaffine and Lieb--Sokal algebra.
RealRooted/BorceaBranden/Finite.lean
for the theorem-shaped Borcea--Branden finite classifications and reductions.
RealRooted/BorceaBranden/Applications/*.lean
for PF-bidiagonal, Hermite--Poulain, Euler/operator-preserver, and tactic
frontends that should not be upstreamed as core Mathlib API.
The exact filenames can change, but the core rule should be: upstreamable
vocabulary and closure lemmas go under RealRooted/Mathlib/...; theorem
scaffolds and applications stay under RealRooted/....
Milestones
Inventory and alias cleanup.
List every local stability/proper-position notion and decide which are core,
aliases, or application wrappers. In particular, bridge HermiteBiehler.IsUpperHalfPlaneStable to the multivariate one-variable
predicate before adding new theorem statements.
Zero-aware stability API.
Add UpperHalfPlaneStableOrZero/RealStableOrZero and refactor preserver
definitions to use these wrappers. This should be a small PR with focused
closure lemmas and no Borcea--Branden theorem proof attempt.
Box-degree API.
Implement the bounded multivariate box submodule and helper lemmas for
monomials, finite support, and coefficient expansion. Prove the univariate
box agrees with Polynomial.degreeLE R d / degreeLT R (d+1) where needed.
Algebraic symbol API.
Define the general finite algebraic symbol and the z,-w variant. Prove
that the existing State finite Borcea-Branden symbol theorem interface #69finiteAlgebraicSymbol and the tactic FiniteSymbolPF.finiteSymbol are specializations or application wrappers of
the general definition.
Proper position API.
Add multivariate proper position, real/complex component lemmas, and the
univariate bridge to Prec/Prec0. This milestone should explicitly audit
the orientation: the paper's f << g is defined via g + I*f stable, while
current local notation has its own established order.
Closure theorem layer.
Fill the Borcea--Branden Lemma 1.7-style closure facts needed by symbols:
real specialization, positive rescaling, inversion/reversal, diagonalization,
products, factors, and block-variable renaming. Reuse existing lemmas where
possible instead of duplicating them under Borcea--Branden names.
State the full finite classification interfaces.
Add theorem-shaped statements for Theorems 1.1 and 1.2 with all alternatives:
complex rank-one or stable symbol; real rank-two proper-position image,
stable symbol, or sign-reversed stable symbol. The existing State finite Borcea-Branden symbol theorem interface #69 theorem
becomes a corollary/application, not the primary statement.
Prove finite-symbol sufficiency first.
The first serious proof target should be the forward direction from stable
symbol to stability preservation, since this directly supports the existing
tactic applications. Use the multiaffine reduction and existing
Lieb--Sokal infrastructure.
Add the real finite univariate corollaries.
Derive the degree-d real-rootedness-preserver theorem used by State finite Borcea-Branden symbol theorem interface #69 and FiniteSymbolPF. Include the sign-reversed symbol and rank-two alternatives
in the statement even if applications mostly use the positive symbol branch.
Only then consider necessity and transcendental theorems.
Necessity uses Hurwitz-type limit arguments and the transcendental theorems
require entire-function/Laguerre--Polya infrastructure. These should be
separate issues after the finite API has stopped moving.
Application refactors.
Migrate RealRooted/Tactic/FiniteSymbolPF.lean, Hermite--Poulain wrappers,
Euler/operator-preserver wrappers, and any PF/Narayana uses onto the general
symbol theorem. Keep tactic-specific residual certificates outside the
upstreamable core.
First child issues to create from this roadmap
Define zero-aware multivariate stability wrappers and bridge the univariate IsUpperHalfPlaneStable predicate to MvUpperHalfPlaneStable.
Define MvPolynomial.degreeOfLE for box-bounded multivariate polynomials.
Define general finite algebraic symbols and prove the existing univariate finiteAlgebraicSymbol is the Fin 1/Fin 2 specialization.
Define multivariate proper position and bridge it to Prec/Prec0 in one
variable.
Restate Borcea--Branden finite Theorems 1.1 and 1.2 with all low-rank and
symbol alternatives.
Refactor FiniteSymbolPF to consume the general symbol API.
Risks and cautions
Do not build on the row-oriented Hurwitz criterion interfaces as if they were
true; the repository has checked counterexamples.
Do not make 0 stable merely for convenience. Use explicit StableOrZero
wrappers in preserver statements.
Do not let the univariate Prec orientation leak into multivariate proper
position without a checked sign/order bridge.
Do not specialize the core definitions to bivariate/univariate tactic needs.
The algebraic symbol should be multivariate from the start.
Avoid circular-domain master-theorem generality until upper-half-plane
stability is robust.
Keep application certificates, OEIS/tactic frontends, and low-degree residual
normalization out of the Mathlib-shaped core.
Acceptance criteria for the roadmap issue
This issue is done when the finite-dimensional Borcea--Branden theory is
represented by stable Lean interfaces and at least the positive-symbol
sufficiency branch has been proved or reduced to named standard inputs, with
existing #69 and FiniteSymbolPF applications using the general API rather than
parallel bespoke definitions.
Goal
Plan a Mathlib-shaped formalization route for Borcea--Branden stability-preserving
linear operators, starting from the theory already present in this repository.
This is broader than the closed finite-symbol scaffold in #69. The existing
#69 interface is useful, but it records only one application-facing direction:
for a univariate real operator, stability of
T((x + y)^d)implies preservationof real-rootedness up to degree
d. The eventual API should support the actualfinite-dimensional Borcea--Branden classifications and later the transcendental
infinite-dimensional versions.
Primary source:
operators preserving stability, Invent. Math. 177 (2009), 541--569,
arXiv:0809.0401, DOI: 10.1007/s00222-009-0189-3.
Existing local theory to preserve and reuse
The repository already has substantial pieces that should be treated as the
starting point.
RealRooted/MultivariateStability.leandefinescomplexifyMv,MvUpperHalfPlaneStable,MvRealStable, affine-line restriction, and closureunder nonzero scalar multiplication, multiplication, factors, renaming, and
left/right specialization. It also contains the bivariate lift
xyLift.RealRooted/Multiaffine.lean,RealRooted/LiebSokalOperator.lean, andRealRooted/LiebSokalPointwise.leancontain multiaffineness, theF(-partial){G}differential action, Gauss--Lucas-based derivative stability,specialization-at-zero, and the pointwise tools for the Lieb--Sokal theorem.
These are core Borcea--Branden sufficiency ingredients, not side material.
RealRooted/HermiteBiehler.leandefines separate univariateIsUpperHalfPlaneStable, right-half-plane and Hurwitz stability, plus manyHermite--Biehler/proper-position bridges. The future API should bridge this
to, or gradually migrate it toward, the multivariate predicate instead of
creating another competing stability vocabulary.
RealRooted/HurwitzMatrix.leanrecords that the current row-oriented Hurwitzcriterion attempts are false. A Borcea--Branden roadmap should not build on
those false interfaces; if Hurwitz matrices are needed, first introduce the
correctly oriented classical matrix and criterion.
RealRooted/Challenges/BorceaBranden.leanis the State finite Borcea-Branden symbol theorem interface #69 challenge interface.Keep it as a compatibility/application wrapper until a general symbol theorem
exists.
RealRooted/Tactic/FiniteSymbolPF.leanand its frontends already implement aconcrete coefficient-bidiagonal finite-symbol route with homogenized bivariate
symbols and residual certificates. This should become an application layer
depending on the general theorem.
multivariate stability/polarization/Lieb--Sokal infrastructure.
Source theorem targets
The finite-dimensional targets from Borcea--Branden I should guide the API.
T : C_kappa[z] -> C[z],Tpreserves stability iff either the image hasrank at most one and is generated by a stable polynomial, or the algebraic
symbol
G_T(z,w) = T((z + w)^kappa)is stable in the2nvariables.T : R_kappa[z] -> R[z],Tpreserves real stability iff either the imagehas rank at most two and is of the form
alpha(f) P + beta(f) QwithP,Qreal stable and in proper position, or
G_T(z,w)is real stable, orG_T(z,-w)is real stable.should be planned later. They require entire functions/Laguerre--Polya style
limits and should not drive the first Lean definitions unless the finite API
would otherwise become incompatible.
Definition decisions
These are the definitions to get right before proving large theorems.
Stability should keep the current nonzero convention.
MvUpperHalfPlaneStable P := forall z, Im z_i > 0 -> eval z P != 0makes0not stable, matching the paper's preserver convention where the output isstable or zero. Add explicit zero-aware wrappers such as
MvUpperHalfPlaneStableOrZeroandMvRealStableOrZero; do not silently makezero stable.
Prefer an upstreamable namespace and hierarchy.
Candidate shape:
The local
RealRooted.MvUpperHalfPlaneStablecan remain as a compatibilityalias during migration.
Keep real and complex stability separate.
Complex stability should live over
MvPolynomial sigma C; real stability iscomplex stability after coefficient embedding. Avoid statements that quantify
over an arbitrary
IsROrCfield until the basic API is stable.Add a finite box-degree submodule for multivariate polynomials.
The Borcea--Branden domain is not total degree
<= d; it is the boxdegreeOf i <= kappa ifor every variable. Reuse Mathlib's existingsubmodule patterns: univariate work can use
Polynomial.degreeLE/degreeLT, while the multivariate side should be a small upstreamable layerover
MvPolynomial.restrictSupport, e.g.Define algebraic symbols by monomial expansion, not by ad hoc string or
substitution tricks.
For
T : degreeOfLE R kappa ->_R MvPolynomial sigma R, definealgebraicSymbol kappa T : MvPolynomial (sigma ⊕ sigma) Ras the finite sumover
alpha <= kappaofbinom(kappa, alpha) * rename Sum.inl (T (X^alpha)) * X_right^(kappa-alpha).Then prove it equals the informal
T((z+w)^kappa)formulation.Include the sign-reversed real symbol from the beginning.
The real theorem has a
G_T(z,-w)alternative. Add a reusable operationsuch as
negRightVariablesorsymbolNegRight, and prove it agrees withsubstituting
-Xin the right variable block.Formalize multivariate proper position separately from the existing
univariate
Prec.In the paper, proper position is a stability condition on
g + I * f.Add a multivariate predicate with the paper's orientation, then prove bridge
lemmas to the current univariate
Prec/Prec0API only after checking theorder/sign convention carefully.
Do not encode low-rank alternatives only as
finrank range <= 1/2.For theorem statements and use, structures are clearer and easier to apply:
Later prove equivalences with rank bounds if useful.
Keep circular-domain generality out of the first implementation.
A
StableInfoundation can support circular domains later, but the firsttheorem should target upper-half-plane stability. This is where the current
code and applications already live.
Proposed module split
Possible local modules, with upstream destinations in mind:
RealRooted/Mathlib/Algebra/MvPolynomial/Stability/Basic.leanfor
StableIn,UpperHalfPlaneStable,RealStable, zero-aware wrappers,complexification simp lemmas, rename/specialization/product/scalar/factor
closure.
RealRooted/Mathlib/Algebra/MvPolynomial/Stability/DegreeBox.leanfor the
degreeOfLEbox submodule, monomial basis helpers, and finite sumsover
alpha <= kappa.RealRooted/Mathlib/Algebra/MvPolynomial/Stability/Symbol.leanfor algebraic symbols, sign-reversed symbols, and univariate specializations.
RealRooted/Mathlib/Algebra/MvPolynomial/Stability/ProperPosition.leanfor multivariate proper position and links to Hermite--Biehler/Obreschkoff.
RealRooted/Mathlib/Algebra/MvPolynomial/Stability/Multiaffine.leanfor upstreamable parts of the current
Multiaffineand Lieb--Sokal algebra.RealRooted/BorceaBranden/Finite.leanfor the theorem-shaped Borcea--Branden finite classifications and reductions.
RealRooted/BorceaBranden/Applications/*.leanfor PF-bidiagonal, Hermite--Poulain, Euler/operator-preserver, and tactic
frontends that should not be upstreamed as core Mathlib API.
The exact filenames can change, but the core rule should be: upstreamable
vocabulary and closure lemmas go under
RealRooted/Mathlib/...; theoremscaffolds and applications stay under
RealRooted/....Milestones
Inventory and alias cleanup.
List every local stability/proper-position notion and decide which are core,
aliases, or application wrappers. In particular, bridge
HermiteBiehler.IsUpperHalfPlaneStableto the multivariate one-variablepredicate before adding new theorem statements.
Zero-aware stability API.
Add
UpperHalfPlaneStableOrZero/RealStableOrZeroand refactor preserverdefinitions to use these wrappers. This should be a small PR with focused
closure lemmas and no Borcea--Branden theorem proof attempt.
Box-degree API.
Implement the bounded multivariate box submodule and helper lemmas for
monomials, finite support, and coefficient expansion. Prove the univariate
box agrees with
Polynomial.degreeLE R d/degreeLT R (d+1)where needed.Algebraic symbol API.
Define the general finite algebraic symbol and the
z,-wvariant. Provethat the existing State finite Borcea-Branden symbol theorem interface #69
finiteAlgebraicSymboland the tacticFiniteSymbolPF.finiteSymbolare specializations or application wrappers ofthe general definition.
Proper position API.
Add multivariate proper position, real/complex component lemmas, and the
univariate bridge to
Prec/Prec0. This milestone should explicitly auditthe orientation: the paper's
f << gis defined viag + I*fstable, whilecurrent local notation has its own established order.
Closure theorem layer.
Fill the Borcea--Branden Lemma 1.7-style closure facts needed by symbols:
real specialization, positive rescaling, inversion/reversal, diagonalization,
products, factors, and block-variable renaming. Reuse existing lemmas where
possible instead of duplicating them under Borcea--Branden names.
Multiaffine/polarization/Lieb--Sokal layer.
Consolidate the current closed-issue work (Formalize PPlus/nonnegative-root real-stability bridge #87--Formalize Lieb-Sokal differential-operator stability theorem #89): multiaffine predicates,
polarization/projection operators, Grace--Walsh--Szego or a theorem-shaped
interface for polarization preserving stability, and the Lieb--Sokal
differential action. This is the core sufficiency route for the complex
finite theorem.
State the full finite classification interfaces.
Add theorem-shaped statements for Theorems 1.1 and 1.2 with all alternatives:
complex rank-one or stable symbol; real rank-two proper-position image,
stable symbol, or sign-reversed stable symbol. The existing State finite Borcea-Branden symbol theorem interface #69 theorem
becomes a corollary/application, not the primary statement.
Prove finite-symbol sufficiency first.
The first serious proof target should be the forward direction from stable
symbol to stability preservation, since this directly supports the existing
tactic applications. Use the multiaffine reduction and existing
Lieb--Sokal infrastructure.
Add the real finite univariate corollaries.
Derive the degree-
dreal-rootedness-preserver theorem used by State finite Borcea-Branden symbol theorem interface #69 andFiniteSymbolPF. Include the sign-reversed symbol and rank-two alternativesin the statement even if applications mostly use the positive symbol branch.
Only then consider necessity and transcendental theorems.
Necessity uses Hurwitz-type limit arguments and the transcendental theorems
require entire-function/Laguerre--Polya infrastructure. These should be
separate issues after the finite API has stopped moving.
Application refactors.
Migrate
RealRooted/Tactic/FiniteSymbolPF.lean, Hermite--Poulain wrappers,Euler/operator-preserver wrappers, and any PF/Narayana uses onto the general
symbol theorem. Keep tactic-specific residual certificates outside the
upstreamable core.
First child issues to create from this roadmap
IsUpperHalfPlaneStablepredicate toMvUpperHalfPlaneStable.MvPolynomial.degreeOfLEfor box-bounded multivariate polynomials.finiteAlgebraicSymbolis theFin 1/Fin 2specialization.Prec/Prec0in onevariable.
symbol alternatives.
FiniteSymbolPFto consume the general symbol API.Risks and cautions
true; the repository has checked counterexamples.
0stable merely for convenience. Use explicitStableOrZerowrappers in preserver statements.
Precorientation leak into multivariate properposition without a checked sign/order bridge.
The algebraic symbol should be multivariate from the start.
stability is robust.
normalization out of the Mathlib-shaped core.
Acceptance criteria for the roadmap issue
This issue is done when the finite-dimensional Borcea--Branden theory is
represented by stable Lean interfaces and at least the positive-symbol
sufficiency branch has been proved or reduced to named standard inputs, with
existing #69 and
FiniteSymbolPFapplications using the general API rather thanparallel bespoke definitions.