Documentation

TauCeti.LinearAlgebra.Graded.LinearMap

Homogeneous linear maps #

This file records the degree of a linear map between modules equipped with families of graded subobjects. A linear map has degree q when it maps everything in the degree-p piece of the source into the degree-p + q piece of the target. This is a containment condition, so no direct-sum hypothesis is imposed and a map can be homogeneous of several degrees at once. The families are indexed by an arbitrary SetLike type, so the homogeneity predicate and the additive closure lemmas cover gradings by submodules, additive subgroups and additive submonoids alike; LinearMap.IsHomogeneous.smul and LinearMap.homogeneousSubmodule additionally need the target pieces to be closed under the scalar action, i.e. a submodule-valued grading.

The multilinear counterpart, and the degree calculus for substitution, are in TauCeti.LinearAlgebra.Graded.Multilinear.

Main definitions #

Main results #

References #

def TauCeti.LinearMap.IsHomogeneous {R : Type uR} {ι : Type uι} {M : Type uM} {N : Type uN} {σM : Type u_1} {σN : Type u_2} [Semiring R] [AddMonoid ι] [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] [SetLike σM M] [SetLike σN N] (f : M →ₗ[R] N) (𝒜 : ισM) ( : ισN) (q : ι) :

A linear map is homogeneous of degree q if it maps the degree-p piece of 𝒜 into the degree-p + q piece of . No direct-sum hypothesis on the families is needed.

Equations
Instances For
    theorem TauCeti.LinearMap.isHomogeneous_def {R : Type uR} {ι : Type uι} {M : Type uM} {N : Type uN} {σM : Type u_1} {σN : Type u_2} [Semiring R] [AddMonoid ι] [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] [SetLike σM M] [SetLike σN N] {f : M →ₗ[R] N} {𝒜 : ισM} { : ισN} {q : ι} :
    IsHomogeneous f 𝒜 q ∀ (p : ι), x𝒜 p, f x (p + q)

    Homogeneity of degree q is exactly the mapping condition on homogeneous elements. This is a convenient introduction rule, and IsHomogeneous.map_mem is the corresponding elimination rule.

    theorem TauCeti.LinearMap.IsHomogeneous.map_mem {R : Type uR} {ι : Type uι} {M : Type uM} {N : Type uN} {σM : Type u_1} {σN : Type u_2} [Semiring R] [AddMonoid ι] [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] [SetLike σM M] [SetLike σN N] {f : M →ₗ[R] N} {𝒜 : ισM} { : ισN} {q p : ι} (hf : IsHomogeneous f 𝒜 q) {x : M} (hx : x 𝒜 p) :
    f x (p + q)

    Apply a homogeneous linear map to a homogeneous element.

    @[simp]
    theorem TauCeti.LinearMap.isHomogeneous_zero {R : Type uR} {ι : Type uι} {M : Type uM} {N : Type uN} {σM : Type u_1} {σN : Type u_2} [Semiring R] [AddMonoid ι] [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] [SetLike σM M] [SetLike σN N] [ZeroMemClass σN N] (𝒜 : ισM) ( : ισN) (q : ι) :
    IsHomogeneous 0 𝒜 q

    The zero linear map is homogeneous of every degree.

    theorem TauCeti.LinearMap.IsHomogeneous.add {R : Type uR} {ι : Type uι} {M : Type uM} {N : Type uN} {σM : Type u_1} {σN : Type u_2} [Semiring R] [AddMonoid ι] [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] [SetLike σM M] [SetLike σN N] [AddMemClass σN N] {f g : M →ₗ[R] N} {𝒜 : ισM} { : ισN} {q : ι} (hf : IsHomogeneous f 𝒜 q) (hg : IsHomogeneous g 𝒜 q) :
    IsHomogeneous (f + g) 𝒜 q

    A sum of linear maps of the same degree has that degree.

    @[simp]
    theorem TauCeti.LinearMap.isHomogeneous_id {R : Type uR} {ι : Type uι} {M : Type uM} {σM : Type u_1} [Semiring R] [AddMonoid ι] [AddCommMonoid M] [Module R M] [SetLike σM M] (𝒜 : ισM) :

    The identity linear map is homogeneous of degree zero.

    theorem TauCeti.LinearMap.IsHomogeneous.comp {R : Type uR} {ι : Type uι} {M : Type uM} {N : Type uN} {σM : Type u_1} {σN : Type u_2} [Semiring R] [AddMonoid ι] [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] [SetLike σM M] [SetLike σN N] {P : Type uP} {σP : Type u_3} [AddCommMonoid P] [Module R P] [SetLike σP P] {f : M →ₗ[R] N} {g : N →ₗ[R] P} {𝒜 : ισM} { : ισN} {𝒞 : ισP} {q r : ι} (hg : IsHomogeneous g 𝒞 r) (hf : IsHomogeneous f 𝒜 q) :
    IsHomogeneous (g ∘ₗ f) 𝒜 𝒞 (q + r)

    Degrees add under composition of linear maps.

    theorem TauCeti.LinearMap.IsHomogeneous.neg {R : Type uR} {ι : Type uι} {M : Type uM} {N : Type uN} {σM : Type u_1} {σN : Type u_2} [Semiring R] [AddMonoid ι] [AddCommMonoid M] [AddCommGroup N] [Module R M] [Module R N] [SetLike σM M] [SetLike σN N] [NegMemClass σN N] {f : M →ₗ[R] N} {𝒜 : ισM} { : ισN} {q : ι} (hf : IsHomogeneous f 𝒜 q) :
    IsHomogeneous (-f) 𝒜 q

    The negative of a homogeneous linear map has the same degree.

    theorem TauCeti.LinearMap.IsHomogeneous.sub {R : Type uR} {ι : Type uι} {M : Type uM} {N : Type uN} {σM : Type u_1} {σN : Type u_2} [Semiring R] [AddMonoid ι] [AddCommMonoid M] [AddCommGroup N] [Module R M] [Module R N] [SetLike σM M] [SetLike σN N] [AddMemClass σN N] [NegMemClass σN N] {f g : M →ₗ[R] N} {𝒜 : ισM} { : ισN} {q : ι} (hf : IsHomogeneous f 𝒜 q) (hg : IsHomogeneous g 𝒜 q) :
    IsHomogeneous (f - g) 𝒜 q

    A difference of linear maps of the same degree has that degree.

    theorem TauCeti.LinearMap.IsHomogeneous.smul {R : Type uR} {S : Type u_1} {ι : Type uι} {M : Type uM} {N : Type uN} {σM : Type u_2} {σN : Type u_3} [Semiring R] [AddMonoid ι] [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] [SetLike σM M] [SetLike σN N] [Monoid S] [DistribMulAction S N] [SMulCommClass R S N] [SMulMemClass σN S N] {f : M →ₗ[R] N} {𝒜 : ισM} { : ισN} {q : ι} (hf : IsHomogeneous f 𝒜 q) (s : S) :
    IsHomogeneous (s f) 𝒜 q

    A scalar multiple of a homogeneous linear map has the same degree.

    def TauCeti.LinearMap.homogeneousSubmodule {R : Type uR} {S : Type u_1} {ι : Type uι} {M : Type uM} {N : Type uN} {σM : Type u_2} {σN : Type u_3} [Semiring R] [AddMonoid ι] [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] [SetLike σM M] [SetLike σN N] [Semiring S] [Module S N] [SMulCommClass R S N] [AddSubmonoidClass σN N] [SMulMemClass σN S N] (𝒜 : ισM) ( : ισN) (q : ι) :

    Linear maps of a fixed degree form a submodule over any scalar ring acting on the target.

    Equations
    Instances For
      @[simp]
      theorem TauCeti.LinearMap.mem_homogeneousSubmodule {R : Type uR} {S : Type u_1} {ι : Type uι} {M : Type uM} {N : Type uN} {σM : Type u_2} {σN : Type u_3} [Semiring R] [AddMonoid ι] [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] [SetLike σM M] [SetLike σN N] [Semiring S] [Module S N] [SMulCommClass R S N] [AddSubmonoidClass σN N] [SMulMemClass σN S N] {f : M →ₗ[R] N} {𝒜 : ισM} { : ισN} {q : ι} :
      f homogeneousSubmodule 𝒜 q IsHomogeneous f 𝒜 q