All proofs
Project-declaredLean 4.31.0 · mathlib@fabf563a

Theorem3d10

HarderNarasimhan.impl.theorem3d10

Plain-language statement

Uniqueness of the canonical Harder–Narasimhan filtration (theorem3d10). Given any function f : ℕ → ℒ that: * starts at and eventually becomes constantly , * is strictly increasing up to its finite length, * has semistable successive restrictions, and * has strictly decreasing μA-slopes, then f agrees pointwise with the canonical constructio...

Exact Lean statement

theorem theorem3d10 {ℒ : Type*} [Nontrivial ℒ] [Lattice ℒ] [BoundedOrder ℒ] [WellFoundedGT ℒ]
{S : Type*} [CompleteLinearOrder S]
(μ : {p :ℒ × ℒ // p.1 < p.2} → S) (hμ : μA_DescendingChainCondition μ) (hμcvx : ConvexI TotIntvl μ)
(f : ℕ → ℒ) (hf0 : f 0 = ⊥)
(hffin : ∃ n : ℕ, f n = ⊤)
(hfsi : ∀ i : ℕ, ∀ j : ℕ, i < j → j ≤ Nat.find hffin → f i < f j)
(ffst : ∀ i : ℕ, i ≥ Nat.find hffin → f i = ⊤)
(hss : ∀ j : ℕ, (hj : j < Nat.find hffin) →
  Semistable (Resμ ⟨(f j, f (j+1)), hfsi j (j+1) (lt_add_one j) hj⟩ μ))
(hmua: ∀ i : ℕ, ∀ j : ℕ, (hij : i < j) → (hj : j < Nat.find hffin) →
  μA μ ⟨(f i, f (i+1)), hfsi i (i+1) (lt_add_one i) <| (by omega)⟩ >
  μA μ ⟨(f j, f (j+1)), hfsi j (j+1) (lt_add_one j) <| hj⟩)
: f = HNFil μ

Formal artifact

Lean source

Canonical source
Full Lean sourceLean 4
theorem theorem3d10 {ℒ : Type*} [Nontrivial ℒ] [Lattice ℒ] [BoundedOrder ℒ] [WellFoundedGT ℒ]{S : Type*} [CompleteLinearOrder S](μ : {p :ℒ × ℒ // p.1 < p.2}  S) (hμ : μA_DescendingChainCondition μ) (hμcvx : ConvexI TotIntvl μ)(f :   ℒ) (hf0 : f 0 = ⊥)(hffin :  n : , f n = ⊤)(hfsi :  i : ,  j : , i < j  j  Nat.find hffin  f i < f j)(ffst :  i : , i  Nat.find hffin  f i = ⊤)(hss :  j : , (hj : j < Nat.find hffin)   Semistable (Resμ (f j, f (j+1)), hfsi j (j+1) (lt_add_one j) hj μ))(hmua:  i : ,  j : , (hij : i < j)  (hj : j < Nat.find hffin)   μA μ (f i, f (i+1)), hfsi i (i+1) (lt_add_one i) <| (by omega) >  μA μ (f j, f (j+1)), hfsi j (j+1) (lt_add_one j) <| hj): f = HNFil μ := by  have hss := fun j hj  (semistableI_iff μ (f j, f (j+1)), hfsi j (j+1) (lt_add_one j) hj).2    <| hss j hj  let HNFilt := HNFil μ  funext k  induction k with  | zero => simp only [hf0, HNFil]  | succ n hn =>  · by_cases h₁ : n + 1  Nat.find hffin    · have h₂ :  N : , N  (n+1)  HNFilt (n+1)  f N :=        Nat.find hffin, h₁, by simp only [ge_iff_le, le_refl, ffst, le_top]      let i :  := Nat.find h₂      have h₃ := (HNFil_is_strict_mono μ n <| Nat.find_min (HNFil_of_fin_len μ) <|        lt_of_lt_of_le (lt_add_one n) <| Nat.add_one_le_iff.2 ((HNFil_ne_top_iff_lt_len μ n).mp        (Eq.rec (motive := fun x h  n < Nat.find hffin  ¬x = ⊤)        (Nat.find_min hffin) hn (lt_of_lt_of_le (lt_add_one n) h₁))))      have h₁₅ : i  n + 1 := (Nat.find_spec h₂).1      have h₄ : ¬ HNFilt (n+1)  f (i-1) := by        have h₅ := Nat.find_min h₂ (Nat.sub_one_lt <| ne_of_gt          <| lt_of_lt_of_le (Nat.add_one_pos n) h₁₅ )        apply not_and_or.1 at h₅        rcases h₅ with h₅ | h₅        · simp only [ge_iff_le, not_le] at h₅          nth_rw 1 [ hn,                     eq_of_le_of_ge (Nat.le_of_lt_add_one h₅) (Nat.sub_le_sub_right h₁₅ 1)] at h₃          exact not_le_of_gt h₃        · exact h₅      have h₁₃ : HNFilt n  f (i - 1) := by        simp only [HNFilt]        rw [ hn]        have h₁₄ : n  i - 1 := Nat.le_sub_one_of_lt h₁₅        rw [le_iff_eq_or_lt] at h₁₄        rcases h₁₄ with h₁₄ | h₁₄        · rw [h₁₄]        · apply le_of_lt          have : i  Nat.find hffin := by            by_contra!            rcases not_and_or.1 <| Nat.find_min h₂ this with c₁ | c₂            · exact c₁ h₁            · simp only [Nat.find_spec hffin, le_top, not_true_eq_false] at c₂          exact hfsi n (i-1) h₁₄ (by omega)      have h₆ := impl.lem2d4₃I TotIntvl μ hμcvx (HNFilt (n + 1)) (in_TotIntvl (HNFilt (n + 1)))        (f (i - 1)) (in_TotIntvl (f (i - 1))) h₄ (HNFilt n) <| le_inf (le_of_lt h₃) h₁₃      have h₉ : i > 0 := Nat.zero_lt_of_lt h₁₅      have h₈ : i - 1 < Nat.find hffin := by        apply Nat.sub_one_lt_of_le h₉        by_contra!        rcases not_and_or.1 <| Nat.find_min h₂ this with c₁ | c₂        · exact c₁ h₁        · simp only [Nat.find_spec hffin, le_top, not_true_eq_false] at c₂      have h₇ : f (i-1) < f i := (congrArg (fun _a  f (i - 1) < f _a) (Nat.sub_add_cancel h₉)) ▸        (hfsi (i - 1) i (Nat.sub_one_lt_of_lt h₁₅) (Nat.le_of_pred_lt h₈))      have h₁₀ : μA μ (HNFilt n, HNFilt (n+1)), h₃  μA μ (f (i-1),f i), h₇ := by        have h₁₁ := hss (i-1) h₈        simp only [Nat.sub_one_add_one <| ne_of_gt h₉] at h₁₁        exact le_trans h₆ <| le_of_not_gt (h₁₁.out.choose_spec.2.1 (HNFilt (n + 1) ⊔ f (i - 1))          le_sup_right,sup_le_iff.2 (Nat.find_spec h₂).2,le_of_lt h₇⟩⟩          <| ne_of_lt <|right_lt_sup.2 h₄)      have h₁₂ : i = n + 1 := by        refine eq_of_le_of_not_lt' h₁₅ ?_        by_contra!        have : HNFilt n < f (n+1):= by          simp only [HNFilt,  hn]          apply hfsi n (n+1) (lt_add_one n) h₁        have h₁₂ : μA μ (HNFilt n, HNFilt (n + 1)), h₃ < μA μ (HNFilt n, f (n+1)),this := by          have h₁₃ := hmua n (i-1) (by (expose_names; exact Nat.lt_sub_of_add_lt this_1)) h₈          simp only [hn, Nat.sub_one_add_one <| ne_of_gt h₉, gt_iff_lt] at h₁₃          exact lt_of_le_of_lt h₁₀ h₁₃        exact ((HNFil_prop_of_def μ n <| ne_of_lt <| lt_of_lt_of_le this le_top          ).1.out.choose_spec.choose_spec.1 (f (n+1)) le_of_lt this,le_top <| ne_of_lt this) h₁₂      have h₁₄ := le_of_le_of_eq (Nat.find_spec h₂).2 (congrArg f h₁₂)      have h₁₉ : HNFilt n < f (n+1) := by          simp only [HNFilt]          rw [ hn,  h₁₂]          nth_rw 1 [h₁₂] at h₇          exact h₇      have h₁₆ : f n < HNFilt (n + 1):= Eq.mpr (hn ▸ rfl)        (HNFil_is_strict_mono μ n (ne_of_lt (lt_of_lt_of_le h₃ le_top)))      have h₁₇ := le_of_not_gt <| (hss n h₁).out.choose_spec.choose_spec.1        (HNFilt (n+1)) le_of_lt h₁₆,h₁₄ <| ne_of_lt h₁₆      simp only [hn] at h₁₇      exact eq_of_le_of_ge ((HNFil_prop_of_def μ n <| ne_of_lt <| lt_of_lt_of_le h₃ le_top        ).1.out.choose_spec.choose_spec.2 (f (n+1)) le_of_lt h₁₉,le_top (ne_of_lt h₁₉)        (eq_of_le_of_not_lt h₁₇ <| (HNFil_prop_of_def μ n <| ne_of_lt <| lt_of_lt_of_le h₃ le_top        ).1.out.choose_spec.choose_spec.1 (f (n+1)) le_of_lt h₁₉,le_top <| ne_of_lt h₁₉).symm) h₁₄    · apply Nat.gt_of_not_le at h₁      rw [ffst (n+1) (Nat.le_of_succ_le h₁),eq_comm]      rw [ffst n (Nat.le_of_lt_succ h₁)] at hn      exact not_ne_iff.1 <| (HNFil_ne_top_iff_lt_len μ (n+1)).not.2 (not_lt_of_ge <| le_of_lt <|        Nat.lt_add_one_iff.2 <| le_of_not_gt <| (HNFil_ne_top_iff_lt_len μ n).not.1        (not_ne_iff.2 hn.symm))
Project
Harder-Narasimhan
License
Apache-2.0
Commit
20220e90b72c
Source
HarderNarasimhan/Filtration/Impl.lean:256-358

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