Parent
Part of #238, milestone 1 ("inventory and alias cleanup").
Problem
The repository currently has two upper-half-plane stability predicates with the
same intended one-variable semantics:
IsUpperHalfPlaneStable : ℂ[X] → Prop in
RealRooted/HermiteBiehler.lean;
MvUpperHalfPlaneStable : MvPolynomial σ ℂ → Prop in
RealRooted/MultivariateStability.lean.
For σ = Fin 1 (or Mathlib's canonical one-variable index), these should be
connected by a checked equivalence rather than supporting parallel lemma
families. This is API cleanup, not a request for a third stability predicate.
Required outline
- Inventory Mathlib's canonical equivalence between
Polynomial ℂ and a
one-variable MvPolynomial. Reuse it; do not introduce an ad hoc
coefficient conversion if Mathlib already supplies the equivalence.
- Prove the corresponding evaluation formula, including the exact variable
indexing convention.
- Prove an
↔ bridge between IsUpperHalfPlaneStable p and
MvUpperHalfPlaneStable of the converted polynomial.
- Check the upper-half-plane inequality and nonzero conventions in both
directions. In particular, zero must remain unstable.
- Migrate at least one existing cross-boundary consumer to the bridge instead
of reproving nonvanishing manually.
- Keep the existing public predicates as compatibility APIs for now. Do not
mass-rename unrelated Hermite--Biehler or multivariate declarations in this
issue.
Deduplication rule
After the bridge exists, closure facts should live with the most general
multivariate predicate and be transported to the univariate API when practical.
Do not add duplicate one-variable versions unless their polynomial formulation
is materially easier to use.
Acceptance criteria
- A canonical polynomial/
MvPolynomial conversion is identified and used.
- Evaluation compatibility is proved.
- A two-way stability bridge is proved with the checked sign/index convention.
- At least one existing consumer uses the bridge.
- No new primitive stability predicate or admitted analytic fact is introduced.
- Focused and full Lake builds pass without warnings.
Parent
Part of #238, milestone 1 ("inventory and alias cleanup").
Problem
The repository currently has two upper-half-plane stability predicates with the
same intended one-variable semantics:
IsUpperHalfPlaneStable : ℂ[X] → PropinRealRooted/HermiteBiehler.lean;MvUpperHalfPlaneStable : MvPolynomial σ ℂ → PropinRealRooted/MultivariateStability.lean.For
σ = Fin 1(or Mathlib's canonical one-variable index), these should beconnected by a checked equivalence rather than supporting parallel lemma
families. This is API cleanup, not a request for a third stability predicate.
Required outline
Polynomial ℂand aone-variable
MvPolynomial. Reuse it; do not introduce an ad hoccoefficient conversion if Mathlib already supplies the equivalence.
indexing convention.
↔bridge betweenIsUpperHalfPlaneStable pandMvUpperHalfPlaneStableof the converted polynomial.directions. In particular, zero must remain unstable.
of reproving nonvanishing manually.
mass-rename unrelated Hermite--Biehler or multivariate declarations in this
issue.
Deduplication rule
After the bridge exists, closure facts should live with the most general
multivariate predicate and be transported to the univariate API when practical.
Do not add duplicate one-variable versions unless their polynomial formulation
is materially easier to use.
Acceptance criteria
MvPolynomialconversion is identified and used.