Zulip Chat Archive
Stream: maths
Topic: Question about Graded Stuff
Wanyi He (Oct 09 2024 at 17:23):
Hi, I meet some problems when using API of GradedRing.
I want to give ring R a gradation by quotient of its additive subgroup. But it seems that graduations which are not indexed by the same thing on the ring is still missing. So I have no idea what to do now :smiling_face_with_tear: . Should I extend the definition of GradedRing
in mathlib4? (I think DirectSum.Decomposition need to be extended too)
Btw, I tried DirectSum.of to map the quotient into its direct sum, and proved it's bijective. However, it caused slow instance inference and I don't think it's a right/efficient way.(I have to use set_option synthInstance.maxHeartbeats 0
)
I'd be grateful if anyone can help me :laughing:
Eric Wieser (Oct 09 2024 at 17:25):
What do you mean by:
But it seems that graduations which are not indexed by the same thing on the ring
Wanyi He (Oct 09 2024 at 17:39):
For example:
Consider a filtered ring together with a filtration s.t is additive subgroup of and satisfies some properties.
Now we can construct a graded ring . But in this case, these quotients are not the same type.
(It's too late in my time zone and I'll be back in 8 h.)
Eric Wieser (Oct 09 2024 at 18:18):
The whole point of docs#GradedRing is to allow each piece to be a different type! whoops, I got confused, and meant GRing!
Eric Wieser (Oct 09 2024 at 18:18):
But indeed constructing the associated graded algebra for a filtered algebra is not easy.
Eric Wieser (Oct 09 2024 at 18:20):
Concretely, you want to make a GRing fun i => fil i ⧸ (fil (i - 1)).comap (fil i).subtype
instance
Wanyi He (Oct 10 2024 at 03:22):
Eric Wieser said:
The whole point of docs#GradedRing is to allow each piece to be a different type!
Why? I'm really sorry I do not understand that. Here's my mwe. Simply write GradedRing (fun i => fil i ⧸ (fil (i - 1)).comap (fil i).subtype)
doesn't work.
import Mathlib
universe u
variable {R : Type u} [Ring R]
variable (fil : ℤ → AddSubgroup R)
instance : GradedRing (fun i => fil i ⧸ (fil (i - 1)).comap (fil i).subtype) := sorry
-- failed to synthesize SetLike (Type u) ?m.337
Wanyi He (Oct 10 2024 at 03:24):
Eric Wieser said:
Concretely, you want to make a
GRing fun i => fil i \bigsolidus (fil (i - 1)).comap (fil i).subtype
instance
Yep, I know GRing
instance is needed here.
Wanyi He (Oct 10 2024 at 03:43):
Wanyi He said:
Eric Wieser said:
The whole point of docs#GradedRing is to allow each piece to be a different type!
Why? I'm really sorry I do not understand that. Here's my mwe. Simply write
GradedRing (fun i => fil i ⧸ (fil (i - 1)).comap (fil i).subtype)
doesn't work.import Mathlib universe u variable {R : Type u} [Ring R] variable (fil : ℤ → AddSubgroup R) instance : GradedRing (fun i => fil i ⧸ (fil (i - 1)).comap (fil i).subtype) := sorry -- failed to synthesize SetLike (Type u) ?m.337
Another way is
import Mathlib
universe u
variable {R : Type u} [Ring R] (fil : ℤ → AddSubgroup R)
abbrev GradedPiece (i : ℤ) := fil i ⧸ (fil (i - 1)).comap (fil i).subtype
def GradedPiece' (i : ℤ) := (DirectSum.of (GradedPiece fil) i).range
instance : DirectSum.GSemiring (GradedPiece fil) := sorry
instance : GradedRing (GradedPiece' fil) := sorry
Eric Wieser (Oct 10 2024 at 08:45):
Sorry, I misspoke above; you should just be avoiding GradedRing entirely and using GRing
Wanyi He (Oct 10 2024 at 10:57):
Oh I see. I'll try that. Thanks!
Last updated: May 02 2025 at 03:31 UTC