Documentation

DerivedAlgGeo.Algebra.Module.GradedModule.Shift

Shifts of naturally graded modules #

An โ„•-graded ring can support module twists conventionally indexed by โ„ค. This file keeps that boundary visible without assuming a geometric realization.

Our sign convention is therefore M(d)โ‚™ = Mโ‚™โ‚Šd.

Natural shifts #

def GradedModule.natShift {ฯƒM : Type u} (๐“œ : โ„• โ†’ ฯƒM) (d : โ„•) :
โ„• โ†’ ฯƒM

The natural shift with convention M(d)โ‚™ = Mโ‚™โ‚Šd.

Equations
Instances For
    instance GradedModule.natShiftGradedSMul {A M ฯƒA ฯƒM : Type u} [CommRing A] [AddCommGroup M] [Module A M] [SetLike ฯƒA A] [SetLike ฯƒM M] (๐’œ : โ„• โ†’ ฯƒA) (๐“œ : โ„• โ†’ ฯƒM) [SetLike.GradedSMul ๐’œ ๐“œ] (d : โ„•) :
    SetLike.GradedSMul ๐’œ (natShift ๐“œ d)
    @[simp]
    theorem GradedModule.natShift_apply {ฯƒM : Type u} (๐“œ : โ„• โ†’ ฯƒM) (d n : โ„•) :
    natShift ๐“œ d n = ๐“œ (n + d)
    @[simp]
    theorem GradedModule.natShift_zero {ฯƒM : Type u} (๐“œ : โ„• โ†’ ฯƒM) :
    natShift ๐“œ 0 = ๐“œ
    @[simp]
    theorem GradedModule.natShift_add {ฯƒM : Type u} (๐“œ : โ„• โ†’ ฯƒM) (d e : โ„•) :
    natShift (natShift ๐“œ d) e = natShift ๐“œ (d + e)

    Integer shifts by zero extension #

    def GradedModule.intShiftPiece {M ฯƒM : Type u} [AddCommGroup M] [SetLike ฯƒM M] [AddSubgroupClass ฯƒM M] (๐“œ : โ„• โ†’ ฯƒM) (d : โ„ค) (n : โ„•) :

    The degree-n subgroup of the integer shift. A nonzero element belongs precisely when it lies in a natural graded piece whose integer degree equals n + d; zero is retained when that integer is negative.

    Equations
    Instances For
      def GradedModule.intShift {M ฯƒM : Type u} [AddCommGroup M] [SetLike ฯƒM M] [AddSubgroupClass ฯƒM M] (๐“œ : โ„• โ†’ ฯƒM) (d : โ„ค) :

      The integer shift of a naturally graded module, using zero in negative degrees.

      Equations
      Instances For
        @[simp]
        theorem GradedModule.mem_intShiftPiece {M ฯƒM : Type u} [AddCommGroup M] [SetLike ฯƒM M] [AddSubgroupClass ฯƒM M] (๐“œ : โ„• โ†’ ฯƒM) {d : โ„ค} {n : โ„•} {m : M} :
        m โˆˆ intShiftPiece ๐“œ d n โ†” m = 0 โˆจ โˆƒ (k : โ„•), โ†‘k = โ†‘n + d โˆง m โˆˆ ๐“œ k
        theorem GradedModule.intShiftPiece_eq_bot_of_neg {M ฯƒM : Type u} [AddCommGroup M] [SetLike ฯƒM M] [AddSubgroupClass ฯƒM M] (๐“œ : โ„• โ†’ ฯƒM) (d : โ„ค) (n : โ„•) (hn : โ†‘n + d < 0) :
        intShiftPiece ๐“œ d n = โŠฅ

        A shifted graded piece below degree zero is trivial.

        intShift is โ„•-indexed and intShiftPiece ๐“œ d n asks for an element of degree n + d. When that integer is negative, no natural degree witnesses membership, so only zero remains.

        instance GradedModule.intShiftGradedSMul {A M ฯƒA ฯƒM : Type u} [CommRing A] [AddCommGroup M] [Module A M] [SetLike ฯƒA A] [SetLike ฯƒM M] [AddSubgroupClass ฯƒM M] (๐’œ : โ„• โ†’ ฯƒA) (๐“œ : โ„• โ†’ ฯƒM) [SetLike.GradedSMul ๐’œ ๐“œ] (d : โ„ค) :
        SetLike.GradedSMul ๐’œ (intShift ๐“œ d)
        @[simp]
        theorem GradedModule.intShift_apply {M ฯƒM : Type u} [AddCommGroup M] [SetLike ฯƒM M] [AddSubgroupClass ฯƒM M] (๐“œ : โ„• โ†’ ฯƒM) (d : โ„ค) (n : โ„•) :
        intShift ๐“œ d n = intShiftPiece ๐“œ d n
        theorem GradedModule.mem_intShift_zero_iff {M ฯƒM : Type u} [AddCommGroup M] [SetLike ฯƒM M] [AddSubgroupClass ฯƒM M] (๐“œ : โ„• โ†’ ฯƒM) (n : โ„•) (m : M) :
        m โˆˆ intShift ๐“œ 0 n โ†” m โˆˆ ๐“œ n

        At shift zero the integer-shifted pieces are the original pieces, expressed as an equality of their carriers.

        theorem GradedModule.mem_intShift_ofNat_iff {M ฯƒM : Type u} [AddCommGroup M] [SetLike ฯƒM M] [AddSubgroupClass ฯƒM M] (๐“œ : โ„• โ†’ ฯƒM) (d n : โ„•) (m : M) :
        m โˆˆ intShift ๐“œ (โ†‘d) n โ†” m โˆˆ natShift ๐“œ d n

        A nonnegative integer shift agrees with the corresponding natural shift, at the level of membership in each graded piece.

        theorem GradedModule.mem_natShift_add_iff {M ฯƒM : Type u} [SetLike ฯƒM M] (๐“œ : โ„• โ†’ ฯƒM) (d e n : โ„•) (m : M) :
        m โˆˆ natShift (natShift ๐“œ d) e n โ†” m โˆˆ natShift ๐“œ (d + e) n

        Strict composition for nonnegative shifts, phrased as membership so it applies uniformly even when the subobject types differ.

        theorem GradedModule.mem_intShift_add_iff_of_nonneg {M ฯƒM : Type u} [AddCommGroup M] [SetLike ฯƒM M] [AddSubgroupClass ฯƒM M] (๐“œ : โ„• โ†’ ฯƒM) (d e : โ„ค) (n : โ„•) (hne : 0 โ‰ค โ†‘n + e) (m : M) :
        m โˆˆ intShift (intShift ๐“œ d) e n โ†” m โˆˆ intShift ๐“œ (d + e) n

        Integer shifts compose only where the intermediate degree exists, and hne is exactly that condition.

        The unrestricted statement โ€” intShift (intShift ๐“œ d) e = intShift ๐“œ (d + e) โ€” is false, and the hypothesis here is where it fails rather than a convenience. Shifting by a negative e first asks for a graded piece in degree n + e; when that integer is negative the zero extension supplies 0 and the information is gone, while the single shift by d + e may still land in a genuine piece. Concretely, with d = 10, e = -5 and n = 0, the left side is {0} because no natural number has integer value -5, and the right side is ๐“œ 5.

        This is a fact about the algebraic model, not about the sheaf. associatedSheaf only ever reads these pieces through homogeneous localizations, where the missing degrees are inverted back in, so the sheaf-level composition O(d)(e) โ‰… O(d + e) is not obstructed by this โ€” but it cannot be obtained by transporting an algebraic identity, and has to be proved on the sheaf side. Recorded here because that is the trap this lemma exists to mark.

        theorem GradedModule.eq_zero_of_mem_intShift_intShift_of_neg {M ฯƒM : Type u} [AddCommGroup M] [SetLike ฯƒM M] [AddSubgroupClass ฯƒM M] (๐“œ : โ„• โ†’ ฯƒM) (d e : โ„ค) (n : โ„•) (hne : โ†‘n + e < 0) {m : M} (hm : m โˆˆ intShift (intShift ๐“œ d) e n) :
        m = 0

        Below the intermediate degree the double shift is zero. This is the failure mem_intShift_add_iff_of_nonneg's hypothesis avoids, as a theorem rather than a remark: an inner shift by e asks for degree n + e, and no natural number has a negative integer value, so nothing but zero survives.

        Together with membership in the single shift โ€” for instance any nonzero element of ๐“œ (n + d + e) when that degree is a natural number โ€” this exhibits the two sides as different subgroups, which is why no unrestricted composition lemma appears above.

        theorem GradedModule.smul_mem_intShift {A M ฯƒA ฯƒM : Type u} [CommRing A] [AddCommGroup M] [Module A M] [SetLike ฯƒA A] [AddSubgroupClass ฯƒA A] [SetLike ฯƒM M] [AddSubgroupClass ฯƒM M] (๐’œ : โ„• โ†’ ฯƒA) (๐“œ : โ„• โ†’ ฯƒM) [SetLike.GradedSMul ๐’œ ๐“œ] (d : โ„ค) (i j : โ„•) {a : A} {m : M} (ha : a โˆˆ intShift ๐’œ d i) (hm : m โˆˆ ๐“œ j) :
        a โ€ข m โˆˆ intShift ๐“œ d (i + j)

        Degree bookkeeping for the twisted multiplication.

        A ring element of the degree-d shift scales a module element of degree j into the degree-d shift of the module. This is what makes A(d) โŠ— M โ†’ M(d) land where it should, and it is the SetLike.GradedSMul analogue of the fact that ๐’œ i ยท ๐“œ j โІ ๐“œ (i + j).

        The composition, at the localization #

        mem_intShift_add_iff_of_nonneg and eq_zero_of_mem_intShift_intShift_of_neg together say the double shift and the single shift are genuinely different graded submodule families, and record that the sheaf-level composition O(d)(e) โ‰… O(d + e) therefore cannot be transported from an algebraic identity. This section supplies the algebraic half of the replacement: at a localization whose denominators contain a homogeneous element of positive degree, the two families have the same degree-zero part, because the degrees the double shift truncates are inverted back in.

        That is exactly the reading Shift's note above predicted. What remains for the sheaf statement is to carry this from one localization to the sections of the associated sheaf, and it is not here.

        theorem GradedModule.mem_intShift_add_of_mem_intShift_intShift {M ฯƒM : Type u} [AddCommGroup M] [SetLike ฯƒM M] [AddSubgroupClass ฯƒM M] (๐“œ : โ„• โ†’ ฯƒM) (d e : โ„ค) (n : โ„•) {m : M} (hm : m โˆˆ intShift (intShift ๐“œ d) e n) :
        m โˆˆ intShift ๐“œ (d + e) n

        The double shift always lands in the single shift.

        Only the converse needs the degree bound of mem_intShift_add_iff_of_nonneg; this direction is unconditional, so it is the one that gives a graded map without hypotheses.

        theorem GradedModule.isDegreeZero_intShift_intShift_iff {A M ฯƒA ฯƒM : Type u} [CommRing A] [AddCommGroup M] [Module A M] [SetLike ฯƒA A] [AddSubgroupClass ฯƒA A] [SetLike ฯƒM M] [AddSubgroupClass ฯƒM M] (๐’œ : โ„• โ†’ ฯƒA) (๐“œ : โ„• โ†’ ฯƒM) [GradedRing ๐’œ] [SetLike.GradedSMul ๐’œ ๐“œ] (S : Submonoid A) {m : โ„•} (hm : 0 < m) {t : A} (ht : t โˆˆ ๐’œ m) (htS : t โˆˆ S) (d e : โ„ค) (z : LocalizedModule S M) :
        IsDegreeZero ๐’œ (intShift (intShift ๐“œ d) e) S z โ†” IsDegreeZero ๐’œ (intShift ๐“œ (d + e)) S z

        The double shift and the single shift have the same degree-zero localization, once the denominators contain a homogeneous element t of positive degree.

        One direction is mem_intShift_add_of_mem_intShift_intShift applied to the numerator; the other is where the content is. A fraction certified only for intShift ๐“œ (d + e) is rewritten by multiplying numerator and denominator by a power of t, which raises its degree without changing the element, until the degree clears the bound mem_intShift_add_iff_of_nonneg asks for. This is the precise sense in which the truncated degrees are "inverted back in": they are never needed at a degree the localization cannot reach.