All proofs
Project-declaredLean 4.31.0 · mathlib@fabf563a

Step cond₂ of stable

HarderNarasimhan.impl.step_cond₂_of_stable

Plain-language statement

step_cond₂_of_stable is the converse direction: stability implies the strict step condition. If each restricted slope on the step intervals is stable, then for every strict intermediate z one has the strict inequality comparing μ (filtration (i+1), z) with the step value.

Exact Lean statement

lemma step_cond₂_of_stable {ℒ : Type*} [Nontrivial ℒ] [Lattice ℒ] [BoundedOrder ℒ] [WellFoundedGT ℒ]
{S : Type*} [CompleteLinearOrder S]
(μ : {p : ℒ × ℒ // p.1 < p.2} → S) [SlopeLike μ] [sdc : StrongDescendingChainCondition' μ]
(filtration : ℕ → ℒ) (fin_len : ∃ N : ℕ, filtration N = ⊥)
(strict_anti : ∀ i j : ℕ, i < j → j ≤ Nat.find (fin_len) → filtration j < filtration i):
(
∀ i : ℕ, (hi : i < Nat.find fin_len) → Stable (Resμ ⟨(filtration (i+1), filtration i),
  strict_anti i (i+1) (lt_add_one i) hi⟩ μ)
)
→ (∀ i : ℕ, (hi : i < Nat.find fin_len) →
    ∀ z : ℒ, (h' : filtration (i+1) < z) → (h'' : z < filtration i) →
    μ ⟨(filtration (i+1), z), h'⟩ < μ ⟨(filtration (i+1), filtration i),
      strict_anti i (i+1) (lt_add_one i) hi⟩
)

Formal artifact

Lean source

Canonical source
Full Lean sourceLean 4
lemma step_cond₂_of_stable {ℒ : Type*} [Nontrivial ℒ] [Lattice ℒ] [BoundedOrder ℒ] [WellFoundedGT ℒ]{S : Type*} [CompleteLinearOrder S](μ : {p : ℒ × ℒ // p.1 < p.2}  S) [SlopeLike μ] [sdc : StrongDescendingChainCondition' μ](filtration :   ℒ) (fin_len :  N : , filtration N = ⊥)(strict_anti :  i j : , i < j  j  Nat.find (fin_len)  filtration j < filtration i):( i : , (hi : i < Nat.find fin_len)  Stable (Resμ (filtration (i+1), filtration i),  strict_anti i (i+1) (lt_add_one i) hi μ)) ( i : , (hi : i < Nat.find fin_len)      z : ℒ, (h' : filtration (i+1) < z)  (h'' : z < filtration i)     μ (filtration (i+1), z), h' < μ (filtration (i+1), filtration i),      strict_anti i (i+1) (lt_add_one i) hi) := by  intro hst i hi z hz hz'  let stepI : {p : ℒ × ℒ // p.1 < p.2} :=    (filtration (i + 1), filtration i), strict_anti i (i + 1) (lt_add_one i) hi  let midI : Interval stepI := z, le_of_lt hz, le_of_lt hz'  have hmid_ne_bot : midI := by    by_contra hc    apply Subtype.coe_inj.2 at hc    simp only [midI, stepI] at hc    rw [hc] at hz    exact False.elim <| (lt_self_iff_false (filtration (i + 1))).mp hz  have hmid_ne_top : midI := by    by_contra hc    apply Subtype.coe_inj.2 at hc    simp only [midI, stepI] at hc    rw [hc] at hz'    exact False.elim <| (lt_self_iff_false (filtration i)).mp hz'  have hss := (hst i hi).toSemistable.semistable midI hmid_ne_bot  simp only [gt_iff_lt, not_lt] at hss  have hst' := (hst i hi).stable midI hmid_ne_bot hmid_ne_top  have hst' := lt_of_le_of_ne hss hst'  have hAstar_step := (proposition_4_1 (Resμ stepI μ) inferInstance inferInstance).1  unfold μAstar at hAstar_step  rw [hAstar_step] at hst'  have hAstar_mid := (proposition_4_1 (Resμ (filtration (i + 1), z), hz μ)    inferInstance inferInstance).1  unfold μAstar at hAstar_mid  have hb : μA (Resμ (filtration (i + 1), filtration i), gt_trans hz' hz μ)    (⊥, midI), bot_lt_iff_ne_bot.2 hmid_ne_bot =    μA (Resμ (filtration (i + 1), z), hz μ) (⊥, ⊤), bot_lt_top := by    simp only [μA_res_intvl,μmin_res_intvl] at *    rfl  rw [hb, hAstar_mid] at hst'  have hNash_step := (impl.thm4d21 (Resμ stepI μ) inferInstance inferInstance inferInstance).2.1    (hst i hi).toSemistable  have hμmin_step := (List.TFAE.out    (impl.thm4d21 (Resμ stepI μ) inferInstance inferInstance inferInstance).1 1 3).2 hNash_step  rw [hμmin_step] at hst'  have hμmax_step := (List.TFAE.out    (impl.thm4d21 (Resμ stepI μ) inferInstance inferInstance inferInstance).1 0 3).2 hNash_step  simp only [μmin_res_intvl,μ_res_intvl] at hst'  unfold μmax at hμmax_step  have hsSup_step := le_of_eq hμmax_step  apply sSup_le_iff.1 at hsSup_step  simp only [ne_eq, Set.mem_setOf_eq, forall_exists_index] at hsSup_step  have hsSup_step_bak := hsSup_step  have hsSup_mid := hsSup_step (Resμ (filtration (i + 1), filtration i), gt_trans hz' hz    μ (⊥, midI), bot_lt_iff_ne_bot.2 hmid_ne_bot)    midI in_TotIntvl _, fun hc => hmid_ne_bot hc.symm rfl  have hsSup_mid' : μ (filtration (i + 1), z), hz  μ (filtration (i + 1), filtration i),      strict_anti i (i + 1) (lt_add_one i) hi := hsSup_mid  refine lt_of_le_of_ne hsSup_mid' ?_  by_contra hc  simp only [strip_bot (gt_trans hz' hz), strip_top (gt_trans hz' hz)] at hst'  rw [ hc] at hst'  have t1 : ↑(@Bot.bot (Interval (filtration (i + 1), z), hz) instBoundedOrderInterval.toBot :    Interval (filtration (i + 1), z), hz) = filtration (i + 1) := rfl  have t2 : ↑(@Top.top (Interval (filtration (i + 1), z), hz) instBoundedOrderInterval.toTop :    Interval (filtration (i + 1), z), hz) = z := rfl  simp only [t1, t2] at hst'  unfold μmin at hst'  apply sInf_lt_iff.1 at hst'  rcases hst' with s,y,hy1,hy2,hs  rw [ hy2] at hs  have := ((seesaw' μ inferInstance (filtration (i + 1)) y z by    refine lt_of_le_of_ne hy1.1.1 ?_    by_contra hc    simp only [hc, lt_self_iff_false] at hs    ,lt_of_le_of_ne hy1.1.2 hy1.2).2.1.2.2 hs).1  simp only [hc, gt_iff_lt] at this  have res := hsSup_step_bak (Resμ (filtration (i + 1), filtration i), gt_trans hz' hz    μ (⊥, y,hy1.1.1,le_of_lt <| lt_of_le_of_lt hy1.1.2 hz'), by    refine lt_of_le_of_ne hy1.1.1 ?_    by_contra hc    simp only at hc    apply Subtype.coe_inj.2 at hc    simp only at hc    simp only [ hc, strip_bot (gt_trans hz' hz), lt_self_iff_false] at hs)      y,hy1.1.1,le_of_lt <| lt_of_le_of_lt hy1.1.2 hz' in_TotIntvl _, by      by_contra hc      apply Subtype.coe_inj.2 at hc      simp only at hc      have hy_bot : y = filtration (i + 1) := by        simpa only [strip_bot (gt_trans hz' hz)] using hc.symm      exact (lt_self_iff_false (μ (filtration (i + 1), z), hz)).mp <| by        simpa only [hy_bot] using hs     rfl  simp only [stepI, μ_res_intvl, strip_bot (gt_trans hz' hz), strip_top (gt_trans hz' hz)] at res  exact (not_le_of_gt this) res
Project
Harder-Narasimhan
License
Apache-2.0
Commit
20220e90b72c
Source
HarderNarasimhan/JordanHolderFiltration/Impl.lean:764-865

Reuse this declaration

Bring the exact result into your workflow

The import identifies the source module. Your project still needs the pinned package dependency shown on this page.

What this badge means

This completion status comes from the project or community source. It has not yet been represented here as an independent rebuild and axiom audit.

Continue in this project

Related declarations

Project-declaredLean 4.31.0

Associated Primes ker mk Linear Map eq

HarderNarasimhan.CommutativeAlgebra.associatedPrimes_ker_mkLinearMap_eq

Project documentation

Associated primes of the kernel of the localization map. This identifies the associated primes of ker (LocalizedModule.mkLinearMap S M) : Submodule R M with the associated primes of M that do meet the multiplicative set S. Equivalently, these are the associated primes of M after removing those disjoint from S. This lemma is used as the “kernel...

algebraic geometryvector bundlescategory theory

Source project: Harder-Narasimhan

Person-level attribution pending.

View proof record
Project-declaredLean 4.31.0

Associated Primes ker mk Linear Map subset

HarderNarasimhan.CommutativeAlgebra.associatedPrimes_ker_mkLinearMap_subset

Plain-language statement

One-sided inclusion for associated primes of the kernel of the localization map. If p ∈ associatedPrimes R (ker (mkLinearMap S M)), then p is an associated prime of M and p is not disjoint from the multiplicative set S. This is one direction of associatedPrimes_ker_mkLinearMap_eq.

algebraic geometryvector bundlescategory theory

Source project: Harder-Narasimhan

Person-level attribution pending.

View proof record
Project-declaredLean 4.31.0

Associated Primes localized Module subset disjoint

HarderNarasimhan.CommutativeAlgebra.associatedPrimes_localizedModule_subset_disjoint

Plain-language statement

Associated primes of a localized module are disjoint from the multiplicative set. More precisely, if p ∈ associatedPrimes R (LocalizedModule S M), then p.carrier ∩ S = ∅. This is a standard fact in commutative algebra: an element of S becomes a unit after localization, so no associated prime of the localized module can contain an element of S.

algebraic geometryvector bundlescategory theory

Source project: Harder-Narasimhan

Person-level attribution pending.

View proof record