feat(RingTheory/GradedAlgebra): homogeneous relation#27307
feat(RingTheory/GradedAlgebra): homogeneous relation#27307xyzw12345 wants to merge 95 commits intoleanprover-community:masterfrom
Conversation
|
@ocfnash Thanks for the suggestion! I agree that |
erdOne
left a comment
There was a problem hiding this comment.
Can you specialize everything to quotients by RingCons (and by extension HasQuotient.Quotient by [I.IsTwoSided]?
As long as this is doable and not painful I think it is fine if we are working with RingQuot here.
|
|
||
| /-- The canonical isomorphism of an internal direct sum with the ambient ring -/ | ||
| noncomputable def coeRingEquiv (hM : DirectSum.IsInternal M) : | ||
| (DirectSum ι fun i => ↥(M i)) ≃+* A := RingEquiv.ofBijective (DirectSum.coeRingHom M) hM |
There was a problem hiding this comment.
| (DirectSum ι fun i => ↥(M i)) ≃+* A := RingEquiv.ofBijective (DirectSum.coeRingHom M) hM | |
| (DirectSum ι (M ·)) ≃+* A := RingEquiv.ofBijective (DirectSum.coeRingHom M) hM |
Can you add some API for this iso?
There was a problem hiding this comment.
Sure, I'll add some API, and probably split the part about direct sum and graded rings into a separate PR (if that's a reasonable to do?)
|
This pull request has conflicts, please merge |
Co-authored-by: Andrew Yang <36414270+erdOne@users.noreply.github.com>
I'll try to confirm this tomorrow morning (in my time zone), sorry for postponing replying to your reviews for so long, and thanks for the review! |
Co-authored-by: Andrew Yang <36414270+erdOne@users.noreply.github.com>
Co-authored-by: Andrew Yang <36414270+erdOne@users.noreply.github.com>
Co-authored-by: Andrew Yang <36414270+erdOne@users.noreply.github.com>
Co-authored-by: Andrew Yang <36414270+erdOne@users.noreply.github.com>
…mathlib4 into xyzw12345_HomogeneousRelation
Co-authored-by: Junyan Xu <junyanxu.math@gmail.com>
alreadydone
left a comment
There was a problem hiding this comment.
Have you proven that the Submodule.quotientRel associated to a HomogeneousIdeal is a homogeneous relation?
| def linearMap : (⨁ i, α i) →ₗ[R] ⨁ i, β i := DFinsupp.mapRange.linearMap f | ||
|
|
||
| @[simp] lemma linearMap_of [DecidableEq ι] (i : ι) (x : α i) : | ||
| (linearMap f) (of α i x) = of β i (f i x) := by |
There was a problem hiding this comment.
| (linearMap f) (of α i x) = of β i (f i x) := by | |
| linearMap f (of α i x) = of β i (f i x) := by |
(optional)
I'd make variables implicit in linearMap_of/apply/id/comp since they can be inferred from both sides.
| change DFinsupp.mapRange.linearMap f (DFinsupp.single i x) = DFinsupp.single i (f i x) | ||
| simp | ||
|
|
||
| @[simp] lemma linearMap_apply (i : ι) (x : ⨁ i, α i) : (linearMap f) x i = f i (x i) := by |
There was a problem hiding this comment.
| @[simp] lemma linearMap_apply (i : ι) (x : ⨁ i, α i) : (linearMap f) x i = f i (x i) := by | |
| @[simp] lemma linearMap_apply (i : ι) (x : ⨁ i, α i) : linearMap f x i = f i (x i) := by |
(optional)
| | add _ _ hx hy => simp [hx, hy] | ||
|
|
||
| @[simp] lemma linearMap_id : | ||
| (linearMap (fun i ↦ LinearMap.id (R := R) (M := α i))) = LinearMap.id := by |
There was a problem hiding this comment.
| (linearMap (fun i ↦ LinearMap.id (R := R) (M := α i))) = LinearMap.id := by | |
| linearMap (fun i ↦ .id (R := R) (M := α i)) = .id := by |
| variable [∀ i, AddCommMonoid (α i)] [∀ i, AddCommMonoid (β i)] | ||
| variable [∀ i, Module R (α i)] [∀ i, Module R (β i)] | ||
|
|
||
| variable (f : ∀ (i : ι), α i →ₗ[R] β i) |
There was a problem hiding this comment.
| variable (f : ∀ (i : ι), α i →ₗ[R] β i) | |
| variable (f : ∀ i : ι, α i →ₗ[R] β i) |
(optional, you might also omit : ι)
|
|
||
| @[simp] lemma linearMap_comp {γ : ι → Type*} [∀ i, AddCommMonoid (γ i)] [∀ i, Module R (γ i)] | ||
| (g : ∀ (i : ι), β i →ₗ[R] γ i) : | ||
| (linearMap (fun i ↦ (g i).comp (f i))) = (linearMap g).comp (linearMap f) := by |
There was a problem hiding this comment.
| (linearMap (fun i ↦ (g i).comp (f i))) = (linearMap g).comp (linearMap f) := by | |
| linearMap (fun i ↦ (g i).comp (f i)) = (linearMap g).comp (linearMap f) := by |
| (h : f.comp e.toAlgHom = g.comp e.toAlgHom) : f = g := AlgHom.ext | ||
| fun x ↦ (by simpa using congr($h (e.symm x))) |
There was a problem hiding this comment.
| (h : f.comp e.toAlgHom = g.comp e.toAlgHom) : f = g := AlgHom.ext | |
| fun x ↦ (by simpa using congr($h (e.symm x))) | |
| (h : f.comp e.toAlgHom = g.comp e.toAlgHom) : f = g := | |
| AlgHom.ext fun x ↦ by simpa using congr($h (e.symm x)) |
| map f x = map f y ↔ ∀ i, f i (x i) = f i (y i) := by | ||
| simp_rw [DirectSum.ext_iff, map_apply] | ||
|
|
||
| lemma map_eq_toAddMonoid [DecidableEq ι] : map f = toAddMonoid (fun i ↦ (of β i).comp (f i)) := by |
There was a problem hiding this comment.
| lemma map_eq_toAddMonoid [DecidableEq ι] : map f = toAddMonoid (fun i ↦ (of β i).comp (f i)) := by | |
| lemma map_eq_toAddMonoid [DecidableEq ι] : map f = toAddMonoid fun i ↦ (of β i).comp (f i) := by |
|
|
||
| theorem lof_eq_of (i : ι) (b : M i) : lof R ι M i b = of M i b := rfl | ||
|
|
||
| @[simp] theorem lof_toAddMonoidHom_eq_of (i : ι) : (lof R ι M i).toAddMonoidHom = of M i := rfl |
There was a problem hiding this comment.
| @[simp] theorem lof_toAddMonoidHom_eq_of (i : ι) : (lof R ι M i).toAddMonoidHom = of M i := rfl | |
| @[simp] theorem toAddMonoidHom_lof_eq_of (i : ι) : (lof R ι M i).toAddMonoidHom = of M i := rfl |
| obtain ⟨v, rfl⟩ := hy | ||
| exact ⟨u + v, by simp⟩ | ||
|
|
||
| lemma linearMap_eq_iff (x y : ⨁ i, α i) : |
There was a problem hiding this comment.
| lemma linearMap_eq_iff (x y : ⨁ i, α i) : | |
| lemma linearMap_eq_iff {x y : ⨁ i, α i} : |
|
|
||
| end Semiring | ||
|
|
||
| lemma comp_inj {R A B C : Type*} [CommSemiring R] [Semiring A] [Semiring B] [Semiring C] |
There was a problem hiding this comment.
You call the RingEquiv version comp_injective so this should probably be named the same.
And why not state this using Function.Injective? The statements are already defeq.
Thanks for the reminder! I will add that proof to this PR when I am available. |
|
Thanks! |
|
In #36501 , we have unfortunately duplicated (by anticipation, the file had a Lean3 version in 2023) some of your efforts. It seems worthwhile to have the versions for modules and submodules (though we only treated homogeneous submodules for the moment, because we had missed docs#ModuleCon). |
In this PR, we defined the concept of a homogeneous relation and proved some properties about homogeneous relations. The main result of this PR is showing that taking
RingQuotby a homogeneous relation can give a graded structure on the quotient ring. This result can be used to define graded structures on rings obtained usingRingQuot, e.g. the Symmetric Algebra defined in #21539 can be verified to have such a structure.Co-authored-by:
Zhixuan Dai @atstarrysky 22300180006@m.fudan.edu.cn
Yiming Fu @pelicanhere fakegreenall@foxmail.com
Zhenyan Fu @pumpkin678 fuzhenyan@mail.dlut.edu.cn
Raphael Douglas Giles @Raph-DG raphaeldouglasgiles@gmail.com
Jiedong Jiang @jjdishere emailboxofjjd@163.com
This PR continues the work from #22279.
Original PR: #22279