From 53c4675cb8abfd5eacfad3ba3f881d74fb8165f8 Mon Sep 17 00:00:00 2001 From: monula95 dutta Date: Thu, 15 Jun 2023 23:07:55 +0000 Subject: [PATCH 1/3] started the proof for the base case --- CommAlg/final_hil_pol.lean | 149 ++++++++++++++++++++++++++++++------- 1 file changed, 123 insertions(+), 26 deletions(-) diff --git a/CommAlg/final_hil_pol.lean b/CommAlg/final_hil_pol.lean index 7176de2..ace2a1b 100644 --- a/CommAlg/final_hil_pol.lean +++ b/CommAlg/final_hil_pol.lean @@ -4,6 +4,14 @@ import Mathlib.Algebra.Module.GradedModule import Mathlib.RingTheory.Ideal.AssociatedPrime import Mathlib.RingTheory.Artinian import Mathlib.Order.Height +import Mathlib.RingTheory.Ideal.Quotient +import Mathlib.RingTheory.SimpleModule +import CommAlg.krull + + +#check Ideal.dim_field_eq_zero +#check Ideal.domain_dim_zero.isField +#check Ideal.Quotient.isDomain_iff_prime -- Setting for "library_search" @@ -67,15 +75,17 @@ instance tada3 (๐’œ : โ„ค โ†’ Type _) (๐“œ : โ„ค โ†’ Type _) [โˆ€ i, AddCommGr -- Definition of a Hilbert function of a graded module section + noncomputable def hilbert_function (๐’œ : โ„ค โ†’ Type _) (๐“œ : โ„ค โ†’ Type _) [โˆ€ i, AddCommGroup (๐’œ i)] [โˆ€ i, AddCommGroup (๐“œ i)] [DirectSum.GCommRing ๐’œ] [DirectSum.Gmodule ๐’œ ๐“œ] (hilb : โ„ค โ†’ โ„ค) := โˆ€ i, hilb i = (ENat.toNat (length (๐’œ 0) (๐“œ i))) -noncomputable def dimensionring { A: Type _} - [CommRing A] := krullDim (PrimeSpectrum A) - noncomputable def dimensionmodule ( A : Type _) (M : Type _) - [CommRing A] [AddCommGroup M] [Module A M] := krullDim (PrimeSpectrum (A โงธ ((โŠค : Submodule A M).annihilator)) ) + [CommRing A] [AddCommGroup M] [Module A M] := Ideal.krullDim (A โงธ ((โŠค : Submodule A M).annihilator)) + + +lemma equaldim ( A : Type _) [CommRing A] (I : Ideal A): dimensionmodule (A) (A โงธ I) = Ideal.krullDim (A โงธ I) := by +sorry end @@ -121,39 +131,79 @@ def Component_of_graded_as_addsubgroup (๐’œ : โ„ค โ†’ Type _) sorry -def graded_morphism (๐’œ : โ„ค โ†’ Type _) (๐“œ : โ„ค โ†’ Type _) (๐“ : โ„ค โ†’ Type _) +def graded_ring_morphism (๐’œ : โ„ค โ†’ Type _) (โ„ฌ : โ„ค โ†’ Type _) +[โˆ€ i, AddCommGroup (๐’œ i)] [โˆ€ i, AddCommGroup (โ„ฌ i)] +[DirectSum.GCommRing ๐’œ] [DirectSum.GCommRing โ„ฌ] (f : (โจ i, ๐’œ i) โ†’+* (โจ i, โ„ฌ i)) := โˆ€ i, โˆ€ (r : ๐’œ i), โˆ€ j, (j โ‰  i โ†’ f (DirectSum.of _ i r) j = 0) + +def graded_module_morphism (๐’œ : โ„ค โ†’ Type _) (๐“œ : โ„ค โ†’ Type _) (๐“ : โ„ค โ†’ Type _) [โˆ€ i, AddCommGroup (๐’œ i)] [โˆ€ i, AddCommGroup (๐“œ i)] [โˆ€ i, AddCommGroup (๐“ i)] -[DirectSum.GCommRing ๐’œ] [DirectSum.Gmodule ๐’œ ๐“œ][DirectSum.Gmodule ๐’œ ๐“] (f : (โจ i, ๐“œ i) โ†’ (โจ i, ๐“ i)) : โˆ€ i, โˆ€ (r : ๐“œ i), โˆ€ j, (j โ‰  i โ†’ f (DirectSum.of _ i r) j = 0) โˆง (IsLinearMap (โจ i, ๐’œ i) f) := by sorry +[DirectSum.GCommRing ๐’œ] [DirectSum.Gmodule ๐’œ ๐“œ][DirectSum.Gmodule ๐’œ ๐“] (f : (โจ i, ๐“œ i) โ†’ (โจ i, ๐“ i)) := โˆ€ i, โˆ€ (r : ๐“œ i), โˆ€ j, (j โ‰  i โ†’ f (DirectSum.of _ i r) j = 0) โˆง (IsLinearMap (โจ i, ๐’œ i) f) - -def graded_submodule -(๐’œ : โ„ค โ†’ Type _) (๐“œ : โ„ค โ†’ Type u) (๐“ : โ„ค โ†’ Type u) +def graded_module_isomorphism (๐’œ : โ„ค โ†’ Type _) (๐“œ : โ„ค โ†’ Type _) (๐“ : โ„ค โ†’ Type _) [โˆ€ i, AddCommGroup (๐’œ i)] [โˆ€ i, AddCommGroup (๐“œ i)] [โˆ€ i, AddCommGroup (๐“ i)] [DirectSum.GCommRing ๐’œ] [DirectSum.Gmodule ๐’œ ๐“œ][DirectSum.Gmodule ๐’œ ๐“] -(opn : Submodule (โจ i, ๐’œ i) (โจ i, ๐“œ i)) (opnis : opn = (โจ i, ๐“ i)) (i : โ„ค ) - : โˆƒ(piece : Submodule (๐’œ 0) (๐“œ i)), piece = ๐“ i := by - sorry +(f : (โจ i, ๐“œ i) โ†’ (โจ i, ๐“ i)) +:= (graded_module_morphism ๐’œ ๐“œ ๐“ f) โˆง (Function.Bijective f) + +def graded_ring_isomorphism (๐’œ : โ„ค โ†’ Type _) (๐“‘ : โ„ค โ†’ Type _) +[โˆ€ i, AddCommGroup (๐’œ i)] [โˆ€ i, AddCommGroup (๐“‘ i)] +[DirectSum.GCommRing ๐’œ] [DirectSum.GCommRing ๐“‘] +(f : (โจ i, ๐’œ i) โ†’+* (โจ i, ๐“‘ i)) +:= (graded_ring_morphism ๐’œ ๐“‘ f) โˆง (Function.Bijective f) + +def graded_ring_isomorphic (๐’œ : โ„ค โ†’ Type _) (๐“‘ : โ„ค โ†’ Type _) +[โˆ€ i, AddCommGroup (๐’œ i)] [โˆ€ i, AddCommGroup (๐“‘ i)] +[DirectSum.GCommRing ๐’œ] [DirectSum.GCommRing ๐“‘] := โˆƒ (f : (โจ i, ๐’œ i) โ†’+* (โจ i, ๐“‘ i)),graded_ring_isomorphism ๐’œ ๐“‘ f + + + +-- def graded_submodule +-- (๐’œ : โ„ค โ†’ Type _) (๐“œ : โ„ค โ†’ Type _) (๐“ : โ„ค โ†’ Type _) +-- [โˆ€ i, AddCommGroup (๐’œ i)] [โˆ€ i, AddCommGroup (๐“œ i)] [โˆ€ i, AddCommGroup (๐“ i)] +-- [DirectSum.GCommRing ๐’œ] [DirectSum.Gmodule ๐’œ ๐“œ][DirectSum.Gmodule ๐’œ ๐“] +-- (h (โจ i, ๐“ i) : Submodule (โจ i, ๐’œ i) (โจ i, ๐“œ i)) : +-- Prop := +-- โˆƒ (piece : Submodule (๐’œ 0) (๐“œ i)), piece = ๐“ i end +class DirectSum.GalgebrA + (๐’œ : โ„ค โ†’ Type _) [โˆ€ i, AddCommGroup (๐’œ i)] [DirectSum.GCommRing ๐’œ] + (๐“œ : โ„ค โ†’ Type _) [โˆ€ i, AddCommGroup (๐“œ i)] [DirectSum.GCommRing ๐“œ] + extends DirectSum.Gmodule ๐’œ ๐“œ + +def graded_algebra_morphism (๐’œ : โ„ค โ†’ Type _) [โˆ€ i, AddCommGroup (๐’œ i)] [DirectSum.GCommRing ๐’œ] + (๐“œ : โ„ค โ†’ Type _) [โˆ€ i, AddCommGroup (๐“œ i)] [DirectSum.GCommRing ๐“œ] [DirectSum.GalgebrA ๐’œ ๐“œ] + (๐“ : โ„ค โ†’ Type _) [โˆ€ i, AddCommGroup (๐“ i)] [DirectSum.GCommRing ๐“] [DirectSum.GalgebrA ๐’œ ๐“] + (f : (โจ i, ๐“œ i) โ†’+* (โจ i, ๐“ i)) := (graded_ring_morphism ๐“œ ๐“ f) โˆง (graded_module_morphism ๐’œ ๐“œ ๐“ f) +-- @Quotient of a graded ring R by a graded ideal p is a graded R-alg, preserving each component - --- @Quotient of a graded ring R by a graded ideal p is a graded R-Mod, preserving each component -instance Quotient_of_graded_is_graded +instance Quotient_of_graded_gradedring (๐’œ : โ„ค โ†’ Type _) [โˆ€ i, AddCommGroup (๐’œ i)] [DirectSum.GCommRing ๐’œ] (p : Ideal (โจ i, ๐’œ i)) (hp : Ideal.IsHomogeneous' ๐’œ p) - : DirectSum.Gmodule ๐’œ (fun i => (๐’œ i)โงธ(Component_of_graded_as_addsubgroup ๐’œ p hp i)) := by + : DirectSum.GCommRing (fun i => (๐’œ i)โงธ(Component_of_graded_as_addsubgroup ๐’œ p hp i)) := by + sorry + +instance Quotient_of_graded_is_gradedalg +(๐’œ : โ„ค โ†’ Type _) [โˆ€ i, AddCommGroup (๐’œ i)] [DirectSum.GCommRing ๐’œ] +(p : Ideal (โจ i, ๐’œ i)) (hp : Ideal.IsHomogeneous' ๐’œ p) + : DirectSum.GalgebrA ๐’œ (fun i => (๐’œ i)โงธ(Component_of_graded_as_addsubgroup ๐’œ p hp i)) := by + sorry + +lemma Quotient_of_graded_ringiso (๐’œ : โ„ค โ†’ Type _) [โˆ€ i, AddCommGroup (๐’œ i)] [DirectSum.GCommRing ๐’œ](p : Ideal (โจ i, ๐’œ i)) (hp : Ideal.IsHomogeneous' ๐’œ p) +(hm : ๐“œ = (fun i => (๐’œ i)โงธ(Component_of_graded_as_addsubgroup ๐’œ p hp i))) +: Nonempty ((โจ i, (๐’œ i)โงธ(Component_of_graded_as_addsubgroup ๐’œ p hp i)) โ‰ƒ+* ((โจ i, (๐’œ i))โงธp)) := by sorry -- If A_0 is Artinian and local, then A is graded local lemma Graded_local_if_zero_component_Artinian_and_local (๐’œ : โ„ค โ†’ Type _) (๐“œ : โ„ค โ†’ Type _) [โˆ€ i, AddCommGroup (๐’œ i)] [โˆ€ i, AddCommGroup (๐“œ i)] -[DirectSum.GCommRing ๐’œ] [DirectSum.Gmodule ๐’œ ๐“œ] (art: IsArtinianRing (๐’œ 0)) (loc : LocalRing (๐’œ 0)) : โˆƒ ( I : Ideal ((โจ i, ๐’œ i))),(HomogeneousMax ๐’œ I) := by +[DirectSum.GCommRing ๐’œ] [DirectSum.Gmodule ๐’œ ๐“œ] (art: IsArtinianRing (๐’œ 0)) (loc : LocalRing (๐’œ 0)) : โˆƒ! ( I : Ideal ((โจ i, ๐’œ i))),(HomogeneousMax ๐’œ I) := by sorry @@ -225,20 +275,67 @@ theorem Hilbert_polynomial_d_0 (๐’œ : โ„ค โ†’ Type _) (๐“œ : โ„ค โ†’ Type _) [ sorry --- (reduced version) [BH, 4.1.3] when d = 0 --- If M is a finite graed R-Mod of dimension zero, and M = Rโงธ ๐“… for a graded prime ideal ๐“…, then the Hilbert function H(M, n) = 0 for n >> 0 +#check Ideal.dim_field_eq_zero +#check Ideal.domain_dim_zero.isField +--#check Quotient.isDomain_iff_prime + +#check DirectSum + +-- f (g a) = f (g b) + +-- DirectSum _ (fun i => ...) = DirectSum _ (fun i => ...) + theorem Hilbert_polynomial_d_0_reduced (๐’œ : โ„ค โ†’ Type _) (๐“œ : โ„ค โ†’ Type _) [โˆ€ i, AddCommGroup (๐’œ i)] [โˆ€ i, AddCommGroup (๐“œ i)] -[DirectSum.GCommRing ๐’œ] -[DirectSum.Gmodule ๐’œ ๐“œ] (st: StandardGraded ๐’œ) (art: IsArtinianRing (๐’œ 0)) (loc : LocalRing (๐’œ 0)) +[DirectSum.GCommRing ๐’œ] [DirectSum.GCommRing ๐“œ] +[DirectSum.GalgebrA ๐’œ ๐“œ] (st: StandardGraded ๐’œ) (art: IsArtinianRing (๐’œ 0)) (loc : LocalRing (๐’œ 0)) (fingen : IsNoetherian (โจ i, ๐’œ i) (โจ i, ๐“œ i)) (findim : dimensionmodule (โจ i, ๐’œ i) (โจ i, ๐“œ i) = 0) (hilb : โ„ค โ†’ โ„ค) (Hhilb : hilbert_function ๐’œ ๐“œ hilb) -(p : Ideal (โจ i, ๐’œ i)) (hp : Ideal.IsHomogeneous' ๐’œ p) -(hm : ๐“œ = (fun i => (๐’œ i)โงธ(Component_of_graded_as_addsubgroup ๐’œ p hp i))) -: (โˆƒ (N : โ„ค), โˆ€ (n : โ„ค), n โ‰ฅ N โ†’ hilb n = 0) := by - sorry - +(p : Ideal (โจ i, ๐’œ i)) (hp : Ideal.IsHomogeneous' ๐’œ p) (hq : HomogeneousPrime ๐’œ p) +(hm : โˆ€ i, ๐“œ i = ((๐’œ i)โงธ(Component_of_graded_as_addsubgroup ๐’œ p hp i))) +: (โˆƒ (N : โ„ค), โˆ€ (n : โ„ค), n โ‰ฅ N โ†’ hilb n = 0) := by + let ๐“œ' := fun i => (๐’œ i)โงธ(Component_of_graded_as_addsubgroup ๐’œ p hp i) + have h : ๐“œ = ๐“œ' := by + ext i + exact hm i + subst h + set R := โจ i, ๐’œ i + have : (โจ i, ๐“œ' i )= โจ i, ((๐’œ i)โงธ(Component_of_graded_as_addsubgroup ๐’œ p hp i)) := by + rfl + +--have h1 : Nonempty ((โจ i, ๐“œ i) โ‰ƒ+* (Rโงธp)) := by + +-- apply Quotient_of_graded_ringiso ๐’œ p hp +-- have : Ideal.krullDim (R โงธ p) = 0 := by +-- calc 0 = dimensionmodule (โจ i, ๐’œ i) (โจ i, ๐“œ i) := by apply findim +-- _ = dimensionmodule (R) (R โงธ p) := by apply h1 +-- _ = Ideal.krullDim (R_mod_p) := by apply equaldim +-- sorry + +lemma + +-- (reduced version) [BH, 4.1.3] when d = 0 +-- If M is a finite graed R-Mod of dimension zero, and M = Rโงธ ๐“… for a graded prime ideal ๐“…, then the Hilbert function H(M, n) = 0 for n >> 0 +-- theorem Hilbert_polynomial_d_0_reduced +-- (๐’œ : โ„ค โ†’ Type _) (๐“œ : โ„ค โ†’ Type _) [โˆ€ i, AddCommGroup (๐’œ i)] [โˆ€ i, AddCommGroup (๐“œ i)] +-- [DirectSum.GCommRing ๐’œ] [DirectSum.GCommRing ๐“œ] +-- [DirectSum.GalgebrA ๐’œ ๐“œ] (st: StandardGraded ๐’œ) (art: IsArtinianRing (๐’œ 0)) (loc : LocalRing (๐’œ 0)) +-- (fingen : IsNoetherian (โจ i, ๐’œ i) (โจ i, ๐“œ i)) +-- (findim : dimensionmodule (โจ i, ๐’œ i) (โจ i, ๐“œ i) = 0) +-- (hilb : โ„ค โ†’ โ„ค) (Hhilb : hilbert_function ๐’œ ๐“œ hilb) +-- (p : Ideal (โจ i, ๐’œ i)) (hp : Ideal.IsHomogeneous' ๐’œ p) (hq : HomogeneousPrime ๐’œ p) +-- (hm : ๐“œ = (fun i => (๐’œ i)โงธ(Component_of_graded_as_addsubgroup ๐’œ p hp i))) +-- : (โˆƒ (N : โ„ค), โˆ€ (n : โ„ค), n โ‰ฅ N โ†’ hilb n = 0) := by +-- set R := โจ i, ๐’œ i +-- have h := (Ideal.Quotient.isDomain_iff_prime p).mpr hq.1 +-- have h1 : Nonempty ((โจ i, ๐“œ i)) โ‰ƒ+* (Rโงธp)) := by +-- apply Quotient_of_graded_ringiso ๐’œ p hp +-- have : Ideal.krullDim (R โงธ p) = 0 := by +-- calc 0 = dimensionmodule (โจ i, ๐’œ i) (โจ i, ๐“œ i) := by apply findim +-- _ = dimensionmodule (R) (R โงธ p) := by apply h1 +-- _ = Ideal.krullDim (R_mod_p) := by apply equaldim +-- sorry From 96d1b2d83c79324dd3c21b0f90a8965404b88eac Mon Sep 17 00:00:00 2001 From: monula95 dutta Date: Fri, 16 Jun 2023 21:38:52 +0000 Subject: [PATCH 2/3] almost finished base case --- CommAlg/final_hil_pol.lean | 190 +++++++++++++++---------------------- CommAlg/hil_mine.lean | 39 ++++++++ 2 files changed, 116 insertions(+), 113 deletions(-) create mode 100644 CommAlg/hil_mine.lean diff --git a/CommAlg/final_hil_pol.lean b/CommAlg/final_hil_pol.lean index ace2a1b..fe9ab02 100644 --- a/CommAlg/final_hil_pol.lean +++ b/CommAlg/final_hil_pol.lean @@ -6,13 +6,11 @@ import Mathlib.RingTheory.Artinian import Mathlib.Order.Height import Mathlib.RingTheory.Ideal.Quotient import Mathlib.RingTheory.SimpleModule +import Mathlib.Algebra.Module.LinearMap +import Mathlib.Algebra.Field.Defs import CommAlg.krull -#check Ideal.dim_field_eq_zero -#check Ideal.domain_dim_zero.isField -#check Ideal.Quotient.isDomain_iff_prime - -- Setting for "library_search" set_option maxHeartbeats 0 @@ -33,6 +31,7 @@ macro "obviously" : tactic => | ring; done; dbg_trace "it was ring" | trivial; done; dbg_trace "it was trivial" -- | nlinarith; done + | aesop; done; dbg_trace "it was aesop" | fail "No, this is not obvious.")) @@ -47,6 +46,8 @@ section -- Definition of polynomail of type d def PolyType (f : โ„ค โ†’ โ„ค) (d : โ„•) := โˆƒ Poly : Polynomial โ„š, โˆƒ (N : โ„ค), โˆ€ (n : โ„ค), N โ‰ค n โ†’ f n = Polynomial.eval (n : โ„š) Poly โˆง d = Polynomial.degree Poly + + noncomputable def length ( A : Type _) (M : Type _) [CommRing A] [AddCommGroup M] [Module A M] := Set.chainHeight {M' : Submodule A M | M' < โŠค} @@ -81,11 +82,20 @@ noncomputable def hilbert_function (๐’œ : โ„ค โ†’ Type _) (๐“œ : โ„ค โ†’ Type [DirectSum.Gmodule ๐’œ ๐“œ] (hilb : โ„ค โ†’ โ„ค) := โˆ€ i, hilb i = (ENat.toNat (length (๐’œ 0) (๐“œ i))) noncomputable def dimensionmodule ( A : Type _) (M : Type _) - [CommRing A] [AddCommGroup M] [Module A M] := Ideal.krullDim (A โงธ ((โŠค : Submodule A M).annihilator)) + [CommRing A] [AddCommGroup M] [Module A M] := Ideal.krullDim (A โงธ ((โŠค : Submodule A M).annihilator)) + + +lemma lengthfield ( k : Type _) [Field k] : length (k) (k) = 1 := by +sorry lemma equaldim ( A : Type _) [CommRing A] (I : Ideal A): dimensionmodule (A) (A โงธ I) = Ideal.krullDim (A โงธ I) := by sorry + +lemma dim_iso ( A : Type _) (M : Type _) (N : Type _) [CommRing A] [AddCommGroup M] [Module A M] [AddCommGroup N] [Module A N] (h : Nonempty (M โ†’โ‚—[A] N)) : dimensionmodule A M = dimensionmodule A N := by +sorry + + end @@ -135,15 +145,22 @@ def graded_ring_morphism (๐’œ : โ„ค โ†’ Type _) (โ„ฌ : โ„ค โ†’ Type _) [โˆ€ i, AddCommGroup (๐’œ i)] [โˆ€ i, AddCommGroup (โ„ฌ i)] [DirectSum.GCommRing ๐’œ] [DirectSum.GCommRing โ„ฌ] (f : (โจ i, ๐’œ i) โ†’+* (โจ i, โ„ฌ i)) := โˆ€ i, โˆ€ (r : ๐’œ i), โˆ€ j, (j โ‰  i โ†’ f (DirectSum.of _ i r) j = 0) -def graded_module_morphism (๐’œ : โ„ค โ†’ Type _) (๐“œ : โ„ค โ†’ Type _) (๐“ : โ„ค โ†’ Type _) -[โˆ€ i, AddCommGroup (๐’œ i)] [โˆ€ i, AddCommGroup (๐“œ i)] [โˆ€ i, AddCommGroup (๐“ i)] -[DirectSum.GCommRing ๐’œ] [DirectSum.Gmodule ๐’œ ๐“œ][DirectSum.Gmodule ๐’œ ๐“] (f : (โจ i, ๐“œ i) โ†’ (โจ i, ๐“ i)) := โˆ€ i, โˆ€ (r : ๐“œ i), โˆ€ j, (j โ‰  i โ†’ f (DirectSum.of _ i r) j = 0) โˆง (IsLinearMap (โจ i, ๐’œ i) f) +structure GradedLinearMap (๐’œ : โ„ค โ†’ Type _) (๐“œ : โ„ค โ†’ Type _) (๐“ : โ„ค โ†’ Type _) + [โˆ€ i, AddCommGroup (๐’œ i)] [โˆ€ i, AddCommGroup (๐“œ i)] [โˆ€ i, AddCommGroup (๐“ i)] + [DirectSum.GCommRing ๐’œ] [DirectSum.Gmodule ๐’œ ๐“œ] [DirectSum.Gmodule ๐’œ ๐“] + extends LinearMap (RingHom.id (โจ i, ๐’œ i)) (โจ i, ๐“œ i) (โจ i, ๐“ i) where + respects_grading (i : โ„ค) (r : ๐“œ i) (j : โ„ค) : j โ‰  i โ†’ toFun (DirectSum.of _ i r) j = 0 -def graded_module_isomorphism (๐’œ : โ„ค โ†’ Type _) (๐“œ : โ„ค โ†’ Type _) (๐“ : โ„ค โ†’ Type _) -[โˆ€ i, AddCommGroup (๐’œ i)] [โˆ€ i, AddCommGroup (๐“œ i)] [โˆ€ i, AddCommGroup (๐“ i)] -[DirectSum.GCommRing ๐’œ] [DirectSum.Gmodule ๐’œ ๐“œ][DirectSum.Gmodule ๐’œ ๐“] -(f : (โจ i, ๐“œ i) โ†’ (โจ i, ๐“ i)) -:= (graded_module_morphism ๐’œ ๐“œ ๐“ f) โˆง (Function.Bijective f) +/-- `๐“œ โ†’แตโ‚—[๐’œ] ๐“` denotes the type of graded `๐’œ`-linear maps from `๐“œ` to `๐“`. -/ +notation:25 ๐“œ " โ†’แตโ‚—[" ๐’œ:25 "] " ๐“:0 => GradedLinearMap ๐’œ ๐“œ ๐“ + +structure GradedLinearEquiv (๐’œ : โ„ค โ†’ Type _) (๐“œ : โ„ค โ†’ Type _) (๐“ : โ„ค โ†’ Type _) + [โˆ€ i, AddCommGroup (๐’œ i)] [โˆ€ i, AddCommGroup (๐“œ i)] [โˆ€ i, AddCommGroup (๐“ i)] + [DirectSum.GCommRing ๐’œ] [DirectSum.Gmodule ๐’œ ๐“œ][DirectSum.Gmodule ๐’œ ๐“] + extends (โจ i, ๐“œ i) โ‰ƒ (โจ i, ๐“ i), ๐“œ โ†’แตโ‚—[๐’œ] ๐“ + +/-- `๐“œ โ‰ƒแตโ‚—[๐’œ] ๐“` denotes the type of graded `๐’œ`-linear isomorphisms from `(โจ i, ๐“œ i)` to `(โจ i, ๐“ i)`. -/ +notation:25 ๐“œ " โ‰ƒแตโ‚—[" ๐’œ:25 "] " ๐“:0 => GradedLinearEquiv ๐’œ ๐“œ ๐“ def graded_ring_isomorphism (๐’œ : โ„ค โ†’ Type _) (๐“‘ : โ„ค โ†’ Type _) [โˆ€ i, AddCommGroup (๐’œ i)] [โˆ€ i, AddCommGroup (๐“‘ i)] @@ -153,9 +170,7 @@ def graded_ring_isomorphism (๐’œ : โ„ค โ†’ Type _) (๐“‘ : โ„ค โ†’ Type _) def graded_ring_isomorphic (๐’œ : โ„ค โ†’ Type _) (๐“‘ : โ„ค โ†’ Type _) [โˆ€ i, AddCommGroup (๐’œ i)] [โˆ€ i, AddCommGroup (๐“‘ i)] -[DirectSum.GCommRing ๐’œ] [DirectSum.GCommRing ๐“‘] := โˆƒ (f : (โจ i, ๐’œ i) โ†’+* (โจ i, ๐“‘ i)),graded_ring_isomorphism ๐’œ ๐“‘ f - - +[DirectSum.GCommRing ๐’œ] [DirectSum.GCommRing ๐“‘] := โˆƒ (f : (โจ i, ๐’œ i) โ†’+* (โจ i, ๐“‘ i)), graded_ring_isomorphism ๐’œ ๐“‘ f -- def graded_submodule -- (๐’œ : โ„ค โ†’ Type _) (๐“œ : โ„ค โ†’ Type _) (๐“ : โ„ค โ†’ Type _) @@ -173,38 +188,65 @@ class DirectSum.GalgebrA (๐“œ : โ„ค โ†’ Type _) [โˆ€ i, AddCommGroup (๐“œ i)] [DirectSum.GCommRing ๐“œ] extends DirectSum.Gmodule ๐’œ ๐“œ -def graded_algebra_morphism (๐’œ : โ„ค โ†’ Type _) [โˆ€ i, AddCommGroup (๐’œ i)] [DirectSum.GCommRing ๐’œ] - (๐“œ : โ„ค โ†’ Type _) [โˆ€ i, AddCommGroup (๐“œ i)] [DirectSum.GCommRing ๐“œ] [DirectSum.GalgebrA ๐’œ ๐“œ] - (๐“ : โ„ค โ†’ Type _) [โˆ€ i, AddCommGroup (๐“ i)] [DirectSum.GCommRing ๐“] [DirectSum.GalgebrA ๐’œ ๐“] - (f : (โจ i, ๐“œ i) โ†’+* (โจ i, ๐“ i)) := (graded_ring_morphism ๐“œ ๐“ f) โˆง (graded_module_morphism ๐’œ ๐“œ ๐“ f) +-- def graded_algebra_morphism (๐’œ : โ„ค โ†’ Type _) [โˆ€ i, AddCommGroup (๐’œ i)] [DirectSum.GCommRing ๐’œ] +-- (๐“œ : โ„ค โ†’ Type _) [โˆ€ i, AddCommGroup (๐“œ i)] [DirectSum.GCommRing ๐“œ] [DirectSum.GalgebrA ๐’œ ๐“œ] +-- (๐“ : โ„ค โ†’ Type _) [โˆ€ i, AddCommGroup (๐“ i)] [DirectSum.GCommRing ๐“] [DirectSum.GalgebrA ๐’œ ๐“] +-- (f : (โจ i, ๐“œ i) โ†’ (โจ i, ๐“ i)) := (graded_ring_morphism ๐“œ ๐“ f) โˆง (GradedLinearMap ๐’œ ๐“œ ๐“ toFun) -- @Quotient of a graded ring R by a graded ideal p is a graded R-alg, preserving each component instance Quotient_of_graded_gradedring -(๐’œ : โ„ค โ†’ Type _) [โˆ€ i, AddCommGroup (๐’œ i)] [DirectSum.GCommRing ๐’œ] -(p : Ideal (โจ i, ๐’œ i)) (hp : Ideal.IsHomogeneous' ๐’œ p) - : DirectSum.GCommRing (fun i => (๐’œ i)โงธ(Component_of_graded_as_addsubgroup ๐’œ p hp i)) := by + (๐’œ : โ„ค โ†’ Type _) [โˆ€ i, AddCommGroup (๐’œ i)] [DirectSum.GCommRing ๐’œ] + (p : Ideal (โจ i, ๐’œ i)) (hp : Ideal.IsHomogeneous' ๐’œ p) : + DirectSum.GCommRing (fun i => (๐’œ i)โงธ(Component_of_graded_as_addsubgroup ๐’œ p hp i)) := by sorry instance Quotient_of_graded_is_gradedalg -(๐’œ : โ„ค โ†’ Type _) [โˆ€ i, AddCommGroup (๐’œ i)] [DirectSum.GCommRing ๐’œ] -(p : Ideal (โจ i, ๐’œ i)) (hp : Ideal.IsHomogeneous' ๐’œ p) - : DirectSum.GalgebrA ๐’œ (fun i => (๐’œ i)โงธ(Component_of_graded_as_addsubgroup ๐’œ p hp i)) := by + (๐’œ : โ„ค โ†’ Type _) [โˆ€ i, AddCommGroup (๐’œ i)] [DirectSum.GCommRing ๐’œ] + (p : Ideal (โจ i, ๐’œ i)) (hp : Ideal.IsHomogeneous' ๐’œ p) : + DirectSum.GalgebrA ๐’œ (fun i => (๐’œ i)โงธ(Component_of_graded_as_addsubgroup ๐’œ p hp i)) := by sorry +section +variable (๐’œ : โ„ค โ†’ Type _) [โˆ€ i, AddCommGroup (๐’œ i)] [DirectSum.GCommRing ๐’œ] + [LocalRing (๐’œ 0)] (m : LocalRing.maximalIdeal (๐’œ 0)) + +-- check if `Pi.Single` or something writes this more elegantly +def GradedOneComponent (i : โ„ค) : Type _ := ite (i = 0) (๐’œ 0 โงธ LocalRing.maximalIdeal (๐’œ 0)) PUnit + +instance (i : โ„ค) : AddMonoid (GradedOneComponent ๐’œ i) := by + unfold GradedOneComponent + sorry -- split into 0 and nonzero cases and then `inferInstance` + +instance : DirectSum.Gmodule ๐’œ (GradedOneComponent ๐’œ) := by sorry + + + +lemma Graded_local [StandardGraded ๐’œ] (I : Ideal (โจ i, ๐’œ i)) (hp : (HomogeneousMax ๐’œ I)) [โˆ€ i, Module (๐’œ 0) ((๐’œ i)โงธ(Component_of_graded_as_addsubgroup ๐’œ I hp.2 i))] (art: IsArtinianRing (๐’œ 0)) : (โˆ€ (i : โ„ค ), (i โ‰  0 โ†’ Nonempty (((๐’œ i)โงธ(Component_of_graded_as_addsubgroup ๐’œ I hp.2 i)) โ†’โ‚—[๐’œ 0] (๐’œ i))) ) := by + sorry + +-- lemma Graded_local [StandardGraded ๐’œ] (I : Ideal (โจ i, ๐’œ i)) (hp : (HomogeneousMax ๐’œ I)) (art: IsArtinianRing (๐’œ 0)) : (โˆ€ (i : โ„ค ), (i โ‰  0 โ†’ (Nonempty (((๐’œ i)โงธ(Component_of_graded_as_addsubgroup ๐’œ I hp.2 i)) โ†’โ‚›โ‚—[๐’œ 0] (๐’œ i)))) โˆง (i = 0 โ†’ Nonempty (((๐’œ i)โงธ(Component_of_graded_as_addsubgroup ๐’œ I hp.2 i)) โ†’โ‚›โ‚—[๐’œ 0] (๐’œ 0 โงธ LocalRing.maximalIdeal (๐’œ 0))))) := by +-- sorry + +end + lemma Quotient_of_graded_ringiso (๐’œ : โ„ค โ†’ Type _) [โˆ€ i, AddCommGroup (๐’œ i)] [DirectSum.GCommRing ๐’œ](p : Ideal (โจ i, ๐’œ i)) (hp : Ideal.IsHomogeneous' ๐’œ p) -(hm : ๐“œ = (fun i => (๐’œ i)โงธ(Component_of_graded_as_addsubgroup ๐’œ p hp i))) -: Nonempty ((โจ i, (๐’œ i)โงธ(Component_of_graded_as_addsubgroup ๐’œ p hp i)) โ‰ƒ+* ((โจ i, (๐’œ i))โงธp)) := by +-- (hm : ๐“œ = (fun i => (๐’œ i)โงธ(Component_of_graded_as_addsubgroup ๐’œ p hp i))) +: Nonempty (((โจ i, (๐’œ i))โงธp) โ†’โ‚—[(โจ i, ๐’œ i)] (โจ i, (๐’œ i)โงธ(Component_of_graded_as_addsubgroup ๐’œ p hp i))) := by sorry +def Is.Graded_local (๐’œ : โ„ค โ†’ Type _) +[โˆ€ i, AddCommGroup (๐’œ i)][DirectSum.GCommRing ๐’œ] := โˆƒ! ( I : Ideal ((โจ i, ๐’œ i))),(HomogeneousMax ๐’œ I) + +lemma hilfun_eq (๐’œ : โ„ค โ†’ Type _) (๐“œ : โ„ค โ†’ Type _) (๐“ : โ„ค โ†’ Type _) +[โˆ€ i, AddCommGroup (๐’œ i)] [โˆ€ i, AddCommGroup (๐“œ i)] [โˆ€ i, AddCommGroup (๐“ i)] +[DirectSum.GCommRing ๐’œ] [DirectSum.Gmodule ๐’œ ๐“œ][DirectSum.Gmodule ๐’œ ๐“] (iso : GradedLinearEquiv ๐’œ ๐“œ ๐“)(hilbm : โ„ค โ†’ โ„ค) (Hhilbm: hilbert_function ๐’œ ๐“œ hilbm) (hilbn : โ„ค โ†’ โ„ค) (Hhilbn: hilbert_function ๐’œ ๐“ hilbn) : โˆ€ (n : โ„ค), hilbm n = hilbn n := by +sorry -- If A_0 is Artinian and local, then A is graded local -lemma Graded_local_if_zero_component_Artinian_and_local (๐’œ : โ„ค โ†’ Type _) (๐“œ : โ„ค โ†’ Type _) -[โˆ€ i, AddCommGroup (๐’œ i)] [โˆ€ i, AddCommGroup (๐“œ i)] -[DirectSum.GCommRing ๐’œ] [DirectSum.Gmodule ๐’œ ๐“œ] (art: IsArtinianRing (๐’œ 0)) (loc : LocalRing (๐’œ 0)) : โˆƒ! ( I : Ideal ((โจ i, ๐’œ i))),(HomogeneousMax ๐’œ I) := by - sorry + -- @Existence of a chain of submodules of graded submoduels of a f.g graded R-mod M @@ -238,11 +280,10 @@ lemma Associated_prime_of_graded_is_graded -- If M is a finite graed R-Mod of dimension d โ‰ฅ 1, then the Hilbert function H(M, n) is of polynomial type (d - 1) theorem Hilbert_polynomial_d_ge_1 (d : โ„•) (d1 : 1 โ‰ค d) (๐’œ : โ„ค โ†’ Type _) (๐“œ : โ„ค โ†’ Type _) [โˆ€ i, AddCommGroup (๐’œ i)] [โˆ€ i, AddCommGroup (๐“œ i)] [DirectSum.GCommRing ๐’œ] -[DirectSum.Gmodule ๐’œ ๐“œ] (st: StandardGraded ๐’œ) (art: IsArtinianRing (๐’œ 0)) (loc : LocalRing (๐’œ 0)) +[DirectSum.Gmodule ๐’œ ๐“œ] [StandardGraded ๐’œ] (art: IsArtinianRing (๐’œ 0)) (loc : LocalRing (๐’œ 0)) (fingen : IsNoetherian (โจ i, ๐’œ i) (โจ i, ๐“œ i)) (findim : dimensionmodule (โจ i, ๐’œ i) (โจ i, ๐“œ i) = d) (hilb : โ„ค โ†’ โ„ค) (Hhilb: hilbert_function ๐’œ ๐“œ hilb) - : PolyType hilb (d - 1) := by sorry @@ -253,7 +294,7 @@ theorem Hilbert_polynomial_d_ge_1_reduced (d : โ„•) (d1 : 1 โ‰ค d) (๐’œ : โ„ค โ†’ Type _) (๐“œ : โ„ค โ†’ Type _) [โˆ€ i, AddCommGroup (๐’œ i)] [โˆ€ i, AddCommGroup (๐“œ i)] [DirectSum.GCommRing ๐’œ] -[DirectSum.Gmodule ๐’œ ๐“œ] (st: StandardGraded ๐’œ) (art: IsArtinianRing (๐’œ 0)) (loc : LocalRing (๐’œ 0)) +[DirectSum.Gmodule ๐’œ ๐“œ] [StandardGraded ๐’œ] (art: IsArtinianRing (๐’œ 0)) (loc : LocalRing (๐’œ 0)) (fingen : IsNoetherian (โจ i, ๐’œ i) (โจ i, ๐“œ i)) (findim : dimensionmodule (โจ i, ๐’œ i) (โจ i, ๐“œ i) = d) (hilb : โ„ค โ†’ โ„ค) (Hhilb: hilbert_function ๐’œ ๐“œ hilb) @@ -267,7 +308,7 @@ theorem Hilbert_polynomial_d_ge_1_reduced -- If M is a finite graed R-Mod of dimension zero, then the Hilbert function H(M, n) = 0 for n >> 0 theorem Hilbert_polynomial_d_0 (๐’œ : โ„ค โ†’ Type _) (๐“œ : โ„ค โ†’ Type _) [โˆ€ i, AddCommGroup (๐’œ i)] [โˆ€ i, AddCommGroup (๐“œ i)] [DirectSum.GCommRing ๐’œ] -[DirectSum.Gmodule ๐’œ ๐“œ] (st: StandardGraded ๐’œ) (art: IsArtinianRing (๐’œ 0)) (loc : LocalRing (๐’œ 0)) +[DirectSum.Gmodule ๐’œ ๐“œ] [StandardGraded ๐’œ] (art: IsArtinianRing (๐’œ 0)) (loc : LocalRing (๐’œ 0)) (fingen : IsNoetherian (โจ i, ๐’œ i) (โจ i, ๐“œ i)) (findim : dimensionmodule (โจ i, ๐’œ i) (โจ i, ๐“œ i) = 0) (hilb : โ„ค โ†’ โ„ค) (Hhilb : hilbert_function ๐’œ ๐“œ hilb) @@ -275,82 +316,5 @@ theorem Hilbert_polynomial_d_0 (๐’œ : โ„ค โ†’ Type _) (๐“œ : โ„ค โ†’ Type _) [ sorry -#check Ideal.dim_field_eq_zero -#check Ideal.domain_dim_zero.isField ---#check Quotient.isDomain_iff_prime - -#check DirectSum - --- f (g a) = f (g b) - --- DirectSum _ (fun i => ...) = DirectSum _ (fun i => ...) - -theorem Hilbert_polynomial_d_0_reduced -(๐’œ : โ„ค โ†’ Type _) (๐“œ : โ„ค โ†’ Type _) [โˆ€ i, AddCommGroup (๐’œ i)] [โˆ€ i, AddCommGroup (๐“œ i)] -[DirectSum.GCommRing ๐’œ] [DirectSum.GCommRing ๐“œ] -[DirectSum.GalgebrA ๐’œ ๐“œ] (st: StandardGraded ๐’œ) (art: IsArtinianRing (๐’œ 0)) (loc : LocalRing (๐’œ 0)) -(fingen : IsNoetherian (โจ i, ๐’œ i) (โจ i, ๐“œ i)) -(findim : dimensionmodule (โจ i, ๐’œ i) (โจ i, ๐“œ i) = 0) -(hilb : โ„ค โ†’ โ„ค) (Hhilb : hilbert_function ๐’œ ๐“œ hilb) -(p : Ideal (โจ i, ๐’œ i)) (hp : Ideal.IsHomogeneous' ๐’œ p) (hq : HomogeneousPrime ๐’œ p) -(hm : โˆ€ i, ๐“œ i = ((๐’œ i)โงธ(Component_of_graded_as_addsubgroup ๐’œ p hp i))) -: (โˆƒ (N : โ„ค), โˆ€ (n : โ„ค), n โ‰ฅ N โ†’ hilb n = 0) := by - let ๐“œ' := fun i => (๐’œ i)โงธ(Component_of_graded_as_addsubgroup ๐’œ p hp i) - have h : ๐“œ = ๐“œ' := by - ext i - exact hm i - subst h - set R := โจ i, ๐’œ i - have : (โจ i, ๐“œ' i )= โจ i, ((๐’œ i)โงธ(Component_of_graded_as_addsubgroup ๐’œ p hp i)) := by - rfl - ---have h1 : Nonempty ((โจ i, ๐“œ i) โ‰ƒ+* (Rโงธp)) := by - --- apply Quotient_of_graded_ringiso ๐’œ p hp --- have : Ideal.krullDim (R โงธ p) = 0 := by --- calc 0 = dimensionmodule (โจ i, ๐’œ i) (โจ i, ๐“œ i) := by apply findim --- _ = dimensionmodule (R) (R โงธ p) := by apply h1 --- _ = Ideal.krullDim (R_mod_p) := by apply equaldim --- sorry - -lemma - --- (reduced version) [BH, 4.1.3] when d = 0 --- If M is a finite graed R-Mod of dimension zero, and M = Rโงธ ๐“… for a graded prime ideal ๐“…, then the Hilbert function H(M, n) = 0 for n >> 0 --- theorem Hilbert_polynomial_d_0_reduced --- (๐’œ : โ„ค โ†’ Type _) (๐“œ : โ„ค โ†’ Type _) [โˆ€ i, AddCommGroup (๐’œ i)] [โˆ€ i, AddCommGroup (๐“œ i)] --- [DirectSum.GCommRing ๐’œ] [DirectSum.GCommRing ๐“œ] --- [DirectSum.GalgebrA ๐’œ ๐“œ] (st: StandardGraded ๐’œ) (art: IsArtinianRing (๐’œ 0)) (loc : LocalRing (๐’œ 0)) --- (fingen : IsNoetherian (โจ i, ๐’œ i) (โจ i, ๐“œ i)) --- (findim : dimensionmodule (โจ i, ๐’œ i) (โจ i, ๐“œ i) = 0) --- (hilb : โ„ค โ†’ โ„ค) (Hhilb : hilbert_function ๐’œ ๐“œ hilb) --- (p : Ideal (โจ i, ๐’œ i)) (hp : Ideal.IsHomogeneous' ๐’œ p) (hq : HomogeneousPrime ๐’œ p) --- (hm : ๐“œ = (fun i => (๐’œ i)โงธ(Component_of_graded_as_addsubgroup ๐’œ p hp i))) --- : (โˆƒ (N : โ„ค), โˆ€ (n : โ„ค), n โ‰ฅ N โ†’ hilb n = 0) := by --- set R := โจ i, ๐’œ i --- have h := (Ideal.Quotient.isDomain_iff_prime p).mpr hq.1 --- have h1 : Nonempty ((โจ i, ๐“œ i)) โ‰ƒ+* (Rโงธp)) := by --- apply Quotient_of_graded_ringiso ๐’œ p hp --- have : Ideal.krullDim (R โงธ p) = 0 := by --- calc 0 = dimensionmodule (โจ i, ๐’œ i) (โจ i, ๐“œ i) := by apply findim --- _ = dimensionmodule (R) (R โงธ p) := by apply h1 --- _ = Ideal.krullDim (R_mod_p) := by apply equaldim --- sorry - - - - - - - - - - - - - - - - diff --git a/CommAlg/hil_mine.lean b/CommAlg/hil_mine.lean new file mode 100644 index 0000000..be09f83 --- /dev/null +++ b/CommAlg/hil_mine.lean @@ -0,0 +1,39 @@ +import CommAlg.final_hil_pol +import Mathlib.Algebra.Ring.Defs + +set_option maxHeartbeats 0 + + + +theorem Hilbert_polynomial_d_0_reduced +(๐’œ : โ„ค โ†’ Type _) [โˆ€ i, AddCommGroup (๐’œ i)] +[DirectSum.GCommRing ๐’œ][LocalRing (๐’œ 0)] [StandardGraded ๐’œ] (art: IsArtinianRing (๐’œ 0)) (p : Ideal (โจ i, ๐’œ i)) (hp : Ideal.IsHomogeneous' ๐’œ p) +(fingen : IsNoetherian (โจ i, ๐’œ i) (โจ i, (๐’œ i)โงธ(Component_of_graded_as_addsubgroup ๐’œ p hp i))) +(findim : dimensionmodule (โจ i, ๐’œ i) (โจ i, (๐’œ i)โงธ(Component_of_graded_as_addsubgroup ๐’œ p hp i)) = 0) +(hilb : โ„ค โ†’ โ„ค) (Hhilb : hilbert_function ๐’œ (fun i => (๐’œ i)โงธ(Component_of_graded_as_addsubgroup ๐’œ p hp i)) hilb) + (hq : HomogeneousPrime ๐’œ p) (n : โ„ค) (n_0 : 0 < n) +: hilb n = 0 := by + have h1 : dimensionmodule (โจ i, ๐’œ i) ((โจ i, (๐’œ i))โงธp) = dimensionmodule (โจ i, ๐’œ i) (โจ i, ((๐’œ i)โงธ(Component_of_graded_as_addsubgroup ๐’œ p hp i))) := by + apply dim_iso (โจ i, ๐’œ i) ((โจ i, (๐’œ i))โงธp) (โจ i, ((๐’œ i)โงธ(Component_of_graded_as_addsubgroup ๐’œ p hp i))) + exact Quotient_of_graded_ringiso ๐’œ p hp + have h2 : dimensionmodule (โจ i, ๐’œ i) ((โจ i, (๐’œ i))โงธp) = Ideal.krullDim ((โจ i, (๐’œ i))โงธp) := by + apply equaldim (โจ i, ๐’œ i) p + have h3 : 0 = Ideal.krullDim ((โจ i, ๐’œ i) โงธ p) := by + calc 0 = dimensionmodule (โจ i, ๐’œ i) (โจ i, ((๐’œ i)โงธ(Component_of_graded_as_addsubgroup ๐’œ p hp i))) := findim.symm + _ = dimensionmodule (โจ i, ๐’œ i) ((โจ i, (๐’œ i))โงธp) := h1.symm + _ = Ideal.krullDim ((โจ i, (๐’œ i))โงธp) := h2 + have h4 : IsDomain ((โจ i, (๐’œ i))โงธp) := (Ideal.Quotient.isDomain_iff_prime p).mpr hq.1 + have h5 : IsField ((โจ i, (๐’œ i))โงธp) := Ideal.domain_dim_zero.isField (h3.symm) + have h6 : p.IsMaximal := Ideal.Quotient.maximal_of_isField p h5 + have h7 : HomogeneousMax ๐’œ p := โŸจh6, hq.2โŸฉ + -- have h8 : Nonempty ((โจ i, ๐’œ i)โงธ p โ†’+* (๐’œ 0)โงธ(LocalRing.maximalIdeal (๐’œ 0))) := Graded_local ๐’œ p h7 art + -- set m := LocalRing.maximalIdeal (๐’œ 0) + -- have h0 : m.IsMaximal := LocalRing.maximalIdeal.isMaximal (๐’œ 0) + -- have h9 : IsField ((๐’œ 0)โงธm) := (Ideal.Quotient.maximal_ideal_iff_isField_quotient m).mp h0 + -- set k := ((๐’œ 0)โงธm) + have hilb n + sorry + + + + From e85ea6b1190689122c71bf582182ae2b3a21f20e Mon Sep 17 00:00:00 2001 From: monula95 dutta Date: Fri, 16 Jun 2023 22:00:43 +0000 Subject: [PATCH 3/3] rearranged defs --- CommAlg/final_hil_pol.lean | 16 +++++++--------- CommAlg/hil_mine.lean | 2 +- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/CommAlg/final_hil_pol.lean b/CommAlg/final_hil_pol.lean index fe9ab02..97fca8a 100644 --- a/CommAlg/final_hil_pol.lean +++ b/CommAlg/final_hil_pol.lean @@ -48,9 +48,6 @@ section def PolyType (f : โ„ค โ†’ โ„ค) (d : โ„•) := โˆƒ Poly : Polynomial โ„š, โˆƒ (N : โ„ค), โˆ€ (n : โ„ค), N โ‰ค n โ†’ f n = Polynomial.eval (n : โ„š) Poly โˆง d = Polynomial.degree Poly -noncomputable def length ( A : Type _) (M : Type _) - [CommRing A] [AddCommGroup M] [Module A M] := Set.chainHeight {M' : Submodule A M | M' < โŠค} - -- Make instance of M_i being an R_0-module instance tada1 (๐’œ : โ„ค โ†’ Type _) (๐“œ : โ„ค โ†’ Type _) [โˆ€ i, AddCommGroup (๐’œ i)] [โˆ€ i, AddCommGroup (๐“œ i)] [DirectSum.GCommRing ๐’œ] [DirectSum.Gmodule ๐’œ ๐“œ] (i : โ„ค ) : SMul (๐’œ 0) (๐“œ i) @@ -77,14 +74,18 @@ instance tada3 (๐’œ : โ„ค โ†’ Type _) (๐“œ : โ„ค โ†’ Type _) [โˆ€ i, AddCommGr -- Definition of a Hilbert function of a graded module section -noncomputable def hilbert_function (๐’œ : โ„ค โ†’ Type _) (๐“œ : โ„ค โ†’ Type _) [โˆ€ i, AddCommGroup (๐’œ i)] [โˆ€ i, AddCommGroup (๐“œ i)] - [DirectSum.GCommRing ๐’œ] - [DirectSum.Gmodule ๐’œ ๐“œ] (hilb : โ„ค โ†’ โ„ค) := โˆ€ i, hilb i = (ENat.toNat (length (๐’œ 0) (๐“œ i))) +noncomputable def length ( A : Type _) (M : Type _) + [CommRing A] [AddCommGroup M] [Module A M] := Set.chainHeight {M' : Submodule A M | M' < โŠค} noncomputable def dimensionmodule ( A : Type _) (M : Type _) [CommRing A] [AddCommGroup M] [Module A M] := Ideal.krullDim (A โงธ ((โŠค : Submodule A M).annihilator)) +noncomputable def hilbert_function (๐’œ : โ„ค โ†’ Type _) (๐“œ : โ„ค โ†’ Type _) [โˆ€ i, AddCommGroup (๐’œ i)] [โˆ€ i, AddCommGroup (๐“œ i)] + [DirectSum.GCommRing ๐’œ] + [DirectSum.Gmodule ๐’œ ๐“œ] (hilb : โ„ค โ†’ โ„ค) := โˆ€ i, hilb i = (ENat.toNat (length (๐’œ 0) (๐“œ i))) + + lemma lengthfield ( k : Type _) [Field k] : length (k) (k) = 1 := by sorry @@ -227,9 +228,6 @@ instance : DirectSum.Gmodule ๐’œ (GradedOneComponent ๐’œ) := by sorry lemma Graded_local [StandardGraded ๐’œ] (I : Ideal (โจ i, ๐’œ i)) (hp : (HomogeneousMax ๐’œ I)) [โˆ€ i, Module (๐’œ 0) ((๐’œ i)โงธ(Component_of_graded_as_addsubgroup ๐’œ I hp.2 i))] (art: IsArtinianRing (๐’œ 0)) : (โˆ€ (i : โ„ค ), (i โ‰  0 โ†’ Nonempty (((๐’œ i)โงธ(Component_of_graded_as_addsubgroup ๐’œ I hp.2 i)) โ†’โ‚—[๐’œ 0] (๐’œ i))) ) := by sorry --- lemma Graded_local [StandardGraded ๐’œ] (I : Ideal (โจ i, ๐’œ i)) (hp : (HomogeneousMax ๐’œ I)) (art: IsArtinianRing (๐’œ 0)) : (โˆ€ (i : โ„ค ), (i โ‰  0 โ†’ (Nonempty (((๐’œ i)โงธ(Component_of_graded_as_addsubgroup ๐’œ I hp.2 i)) โ†’โ‚›โ‚—[๐’œ 0] (๐’œ i)))) โˆง (i = 0 โ†’ Nonempty (((๐’œ i)โงธ(Component_of_graded_as_addsubgroup ๐’œ I hp.2 i)) โ†’โ‚›โ‚—[๐’œ 0] (๐’œ 0 โงธ LocalRing.maximalIdeal (๐’œ 0))))) := by --- sorry - end lemma Quotient_of_graded_ringiso (๐’œ : โ„ค โ†’ Type _) [โˆ€ i, AddCommGroup (๐’œ i)] [DirectSum.GCommRing ๐’œ](p : Ideal (โจ i, ๐’œ i)) (hp : Ideal.IsHomogeneous' ๐’œ p) diff --git a/CommAlg/hil_mine.lean b/CommAlg/hil_mine.lean index be09f83..fc2421c 100644 --- a/CommAlg/hil_mine.lean +++ b/CommAlg/hil_mine.lean @@ -31,7 +31,7 @@ theorem Hilbert_polynomial_d_0_reduced -- have h0 : m.IsMaximal := LocalRing.maximalIdeal.isMaximal (๐’œ 0) -- have h9 : IsField ((๐’œ 0)โงธm) := (Ideal.Quotient.maximal_ideal_iff_isField_quotient m).mp h0 -- set k := ((๐’œ 0)โงธm) - have hilb n + -- have hilb n sorry