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 RR together with a filtration filfil s.t nZ,filnR\forall n\in \mathbb{Z},fil_nR is additive subgroup of RR and satisfies some properties.

Now we can construct a graded ring nfilnR/filn1R\oplus_{n}fil_nR/fil_{n-1}R. 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