Skip to content

Formalize Karlin's rank-sensitive sign-consistent variation bound #292

Description

@PerAlexandersson

Source

Karlin, Total Positivity, Vol. I, Chapter V, §1, Theorem 1.3 and Propositions 1.1–1.2 (printed pp. 220–222).

The source theorem states: if U is an n × m matrix of rank r and is sign-consistent of order r (SC_r), then S⁻(Uc) ≤ r - 1 for every c. If U is strictly sign-consistent of order r (SSC_r) and c ≠ 0, then the source also gives the corresponding S⁺ bound. The project currently uses S⁻(0) = 0, rather than Karlin’s -1, so the rank-zero/null cases must be translated explicitly.

Required source proof route

  1. Introduce Mathlib-shaped predicates for common weak/strict sign of order-r minors. These are genuine property definitions, so def ... : Prop is appropriate here; they must not be named ...Statement or used to hide an unproved theorem.
  2. Formalize Proposition 1.1: the Gaussian matrix F(a)_{ij} = exp(-a (i-j)^2) is strictly totally positive and tends to the identity as a → ∞.
  3. Formalize Proposition 1.2 by Cauchy–Binet: if A is SC_r and has full column rank, then F(a)A is SSC_r, and F(a)A → A.
  4. Full-column-rank case: apply the already formalized V.1.1 strict maximal-minor theorem to F(a)U, then pass to S⁻(Uc) ≤ m-1 using the lower-semicontinuity/stability lemma for finite-vector sign variations under convergence.
  5. Deficient-rank case: follow Karlin’s induction on the number of columns. From a contradiction witness with r+1 alternating nonzero output coordinates, construct the source kernel vector z; choose a column j₀ so deleting it preserves rank r; set t₀ = -c_{j₀}/z_{j₀} so c+t₀z has a zero j₀ coordinate; identify the output with the column-deleted matrix and apply either the full-rank case or the induction hypothesis.
  6. Do not replace the deficient-rank argument by an unproved rank/variation assumption or an alternate theorem.

Proposed main declaration

theorem Matrix.signVariations_mulVec_le_rank_sub_one_of_signConsistent
    {m n r : ℕ} (U : Matrix (Fin n) (Fin m) ℝ)
    (hrank : Module.finrank ℝ (LinearMap.range U.mulVecLin) = r)
    (hSC : U.IsSignConsistentOrder r) (c : Fin m → ℝ) :
    Fin.signVariations (U.mulVec c) ≤ r - 1 := by
  ...

The exact linear-map spelling should be adjusted to the existing Mathlib matrix API rather than introducing a project-only rank wrapper.

Acceptance criteria

  • No sorry, axioms, or theorem-shaped def ...Statement : Prop.
  • Full-rank approximation and deficient-rank induction are separate reusable lemmas.
  • Cauchy–Binet strictification and the finite-vector sign-variation limit lemma are proved, not assumed.
  • Focused and full CI are green.
  • The final theorem is strong enough to feed Karlin V.1.4 and the ASW forward implication.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions