Documentation

Mathlib.Algebra.Module.LinearMap.FiniteRange

HasFiniteRange predicate on linear maps, and the associated equivalence relation #

In this file, we define:

def LinearMap.HasNoetherianRange {K : Type u_1} {V : Type u_2} {V₂ : Type u_4} [Semiring K] [AddCommMonoid V] [Module K V] [AddCommMonoid V₂] [Module K V₂] (f : V →ₗ[K] V₂) :

A linear map has Noetherian range if its range is a Noetherian module.

Equations
Instances For
    def LinearMap.HasFiniteRange {K : Type u_1} {V : Type u_2} {V₂ : Type u_4} [Semiring K] [AddCommMonoid V] [Module K V] [AddCommMonoid V₂] [Module K V₂] (f : V →ₗ[K] V₂) :

    A linear map has finite range if its range is finitely generated.

    Equations
    Instances For
      theorem LinearMap.hasNoetherianRange_iff_range {K : Type u_1} {V : Type u_2} {V₂ : Type u_4} [Semiring K] [AddCommMonoid V] [Module K V] [AddCommMonoid V₂] [Module K V₂] {f : V →ₗ[K] V₂} :
      theorem LinearMap.hasFiniteRange_iff_range {K : Type u_1} {V : Type u_2} {V₂ : Type u_4} [Semiring K] [AddCommMonoid V] [Module K V] [AddCommMonoid V₂] [Module K V₂] {f : V →ₗ[K] V₂} :
      theorem LinearMap.HasNoetherianRange.isNoetherian_range {K : Type u_1} {V : Type u_2} {V₂ : Type u_4} [Semiring K] [AddCommMonoid V] [Module K V] [AddCommMonoid V₂] [Module K V₂] {f : V →ₗ[K] V₂} :

      Alias of the forward direction of LinearMap.hasNoetherianRange_iff_range.

      theorem LinearMap.HasFiniteRange.fg_range {K : Type u_1} {V : Type u_2} {V₂ : Type u_4} [Semiring K] [AddCommMonoid V] [Module K V] [AddCommMonoid V₂] [Module K V₂] {f : V →ₗ[K] V₂} :

      Alias of the forward direction of LinearMap.hasFiniteRange_iff_range.

      theorem LinearMap.HasNoetherianRange.hasFiniteRange {K : Type u_1} {V : Type u_2} {V₂ : Type u_4} [Semiring K] [AddCommMonoid V] [Module K V] [AddCommMonoid V₂] [Module K V₂] {u : V →ₗ[K] V₂} (h : u.HasNoetherianRange) :
      @[simp]
      theorem LinearMap.HasNoetherianRange.zero {K : Type u_1} {V : Type u_2} {V₂ : Type u_4} [Semiring K] [AddCommMonoid V] [Module K V] [AddCommMonoid V₂] [Module K V₂] :
      @[simp]
      theorem LinearMap.HasFiniteRange.zero {K : Type u_1} {V : Type u_2} {V₂ : Type u_4} [Semiring K] [AddCommMonoid V] [Module K V] [AddCommMonoid V₂] [Module K V₂] :
      theorem LinearMap.HasNoetherianRange.comp_left {K : Type u_1} {V : Type u_2} {V₂ : Type u_4} {V₃ : Type u_6} [Semiring K] [AddCommMonoid V] [Module K V] [AddCommMonoid V₂] [Module K V₂] [AddCommMonoid V₃] [Module K V₃] {u : V →ₗ[K] V₂} (h : u.HasNoetherianRange) (v : V₂ →ₗ[K] V₃) :
      theorem LinearMap.HasFiniteRange.comp_left {K : Type u_1} {V : Type u_2} {V₂ : Type u_4} {V₃ : Type u_6} [Semiring K] [AddCommMonoid V] [Module K V] [AddCommMonoid V₂] [Module K V₂] [AddCommMonoid V₃] [Module K V₃] {u : V →ₗ[K] V₂} (h : u.HasFiniteRange) (v : V₂ →ₗ[K] V₃) :
      @[simp]
      theorem LinearMap.HasNoetherianRange.of_isNoetherian_dom {K : Type u_1} {V : Type u_2} {V₂ : Type u_4} [Semiring K] [AddCommMonoid V] [Module K V] [AddCommMonoid V₂] [Module K V₂] [IsNoetherian K V] {f : V →ₗ[K] V₂} :
      @[simp]
      theorem LinearMap.HasFiniteRange.of_finite_dom {K : Type u_1} {V : Type u_2} {V₂ : Type u_4} [Semiring K] [AddCommMonoid V] [Module K V] [AddCommMonoid V₂] [Module K V₂] [Module.Finite K V] {f : V →ₗ[K] V₂} :
      @[simp]
      theorem LinearMap.HasNoetherianRange.of_isNoetherian_rng {K : Type u_1} {V : Type u_2} {V₂ : Type u_4} [Semiring K] [AddCommMonoid V] [Module K V] [AddCommMonoid V₂] [Module K V₂] [IsNoetherian K V₂] {f : V →ₗ[K] V₂} :
      @[simp]
      theorem LinearMap.HasFiniteRange.of_isNoetherian_rng {K : Type u_1} {V : Type u_2} {V₂ : Type u_4} [Semiring K] [AddCommMonoid V] [Module K V] [AddCommMonoid V₂] [Module K V₂] [IsNoetherian K V₂] {f : V →ₗ[K] V₂} :
      theorem LinearMap.HasFiniteRange.hasNoetherianRange {K : Type u_1} {V : Type u_2} {V₂ : Type u_4} [Ring K] [AddCommGroup V] [Module K V] [AddCommGroup V₂] [Module K V₂] [IsNoetherianRing K] {u : V →ₗ[K] V₂} (h : u.HasFiniteRange) :
      theorem LinearMap.HasNoetherianRange.comp_right {K : Type u_1} {V : Type u_2} {V₂ : Type u_4} {V₃ : Type u_6} [Ring K] [AddCommGroup V] [Module K V] [AddCommGroup V₂] [Module K V₂] [AddCommGroup V₃] [Module K V₃] {v : V₂ →ₗ[K] V₃} (h : v.HasNoetherianRange) (u : V →ₗ[K] V₂) :
      theorem LinearMap.HasFiniteRange.comp_right {K : Type u_1} {V : Type u_2} {V₂ : Type u_4} {V₃ : Type u_6} [Ring K] [AddCommGroup V] [Module K V] [AddCommGroup V₂] [Module K V₂] [AddCommGroup V₃] [Module K V₃] [IsNoetherianRing K] {v : V₂ →ₗ[K] V₃} (h : v.HasFiniteRange) (u : V →ₗ[K] V₂) :
      @[simp]
      theorem LinearMap.HasNoetherianRange.neg {K : Type u_1} {V : Type u_2} {V₂ : Type u_4} [Ring K] [AddCommGroup V] [Module K V] [AddCommGroup V₂] [Module K V₂] {f : V →ₗ[K] V₂} (hf : f.HasNoetherianRange) :
      @[simp]
      theorem LinearMap.HasFiniteRange.neg {K : Type u_1} {V : Type u_2} {V₂ : Type u_4} [Ring K] [AddCommGroup V] [Module K V] [AddCommGroup V₂] [Module K V₂] {f : V →ₗ[K] V₂} (hf : f.HasFiniteRange) :
      @[simp]
      theorem LinearMap.HasNoetherianRange.add {K : Type u_1} {V : Type u_2} {V₂ : Type u_4} [Ring K] [AddCommGroup V] [Module K V] [AddCommGroup V₂] [Module K V₂] {f g : V →ₗ[K] V₂} (hf : f.HasNoetherianRange) (hg : g.HasNoetherianRange) :
      @[simp]
      theorem LinearMap.HasFiniteRange.add {K : Type u_1} {V : Type u_2} {V₂ : Type u_4} [Ring K] [AddCommGroup V] [Module K V] [AddCommGroup V₂] [Module K V₂] [IsNoetherianRing K] {f g : V →ₗ[K] V₂} (hf : f.HasFiniteRange) (hg : g.HasFiniteRange) :
      @[simp]
      theorem LinearMap.HasNoetherianRange.sub {K : Type u_1} {V : Type u_2} {V₂ : Type u_4} [Ring K] [AddCommGroup V] [Module K V] [AddCommGroup V₂] [Module K V₂] {f g : V →ₗ[K] V₂} (hf : f.HasNoetherianRange) (hg : g.HasNoetherianRange) :
      @[simp]
      theorem LinearMap.HasFiniteRange.sub {K : Type u_1} {V : Type u_2} {V₂ : Type u_4} [Ring K] [AddCommGroup V] [Module K V] [AddCommGroup V₂] [Module K V₂] [IsNoetherianRing K] {f g : V →ₗ[K] V₂} (hf : f.HasFiniteRange) (hg : g.HasFiniteRange) :
      theorem LinearMap.hasNoetherianRange_iff_quotient_ker {K : Type u_1} {V : Type u_2} {V₂ : Type u_4} [Ring K] [AddCommGroup V] [Module K V] [AddCommGroup V₂] [Module K V₂] {f : V →ₗ[K] V₂} :
      @[simp]
      theorem LinearMap.ker_coFG_iff_hasFiniteRange {K : Type u_1} {V : Type u_2} {V₂ : Type u_4} [Ring K] [AddCommGroup V] [Module K V] [AddCommGroup V₂] [Module K V₂] {f : V →ₗ[K] V₂} :
      theorem LinearMap.HasNoetherianRange.quotient_ker {K : Type u_1} {V : Type u_2} {V₂ : Type u_4} [Ring K] [AddCommGroup V] [Module K V] [AddCommGroup V₂] [Module K V₂] {f : V →ₗ[K] V₂} :

      Alias of the forward direction of LinearMap.hasNoetherianRange_iff_quotient_ker.

      theorem LinearMap.HasFiniteRange.cofg_ker {K : Type u_1} {V : Type u_2} {V₂ : Type u_4} [Ring K] [AddCommGroup V] [Module K V] [AddCommGroup V₂] [Module K V₂] {f : V →ₗ[K] V₂} :

      Alias of the reverse direction of LinearMap.ker_coFG_iff_hasFiniteRange.

      @[simp]
      theorem LinearMap.HasNoetherianRange.smul {K : Type u_1} {V : Type u_2} {V₂ : Type u_4} [CommRing K] [AddCommGroup V] [Module K V] [AddCommGroup V₂] [Module K V₂] {f : V →ₗ[K] V₂} (hf : f.HasNoetherianRange) (c : K) :
      @[simp]
      theorem LinearMap.HasFiniteRange.smul {K : Type u_1} {V : Type u_2} {V₂ : Type u_4} [CommRing K] [AddCommGroup V] [Module K V] [AddCommGroup V₂] [Module K V₂] {f : V →ₗ[K] V₂} (hf : f.HasFiniteRange) (c : K) :
      def LinearMap.finiteRange (K : Type u_1) (V : Type u_2) (V₂ : Type u_4) [CommRing K] [AddCommGroup V] [Module K V] [AddCommGroup V₂] [Module K V₂] :
      Submodule K (V →ₗ[K] V₂)

      LinearMap.finiteRange is the submodule of V →ₗ[K] W consisting of linear maps satisfying LinearMap.HasNoetherianRange. We allow ourself this slightly abusive name because the set of linear maps satisfying LinearMap.HasFiniteRange is only a submodule over a noetherian ring, in which case the two notions agree.

      Equations
      Instances For
        theorem LinearMap.mem_finiteRange_iff_hasNoetherianRange {K : Type u_1} {V : Type u_2} {V₂ : Type u_4} [CommRing K] [AddCommGroup V] [Module K V] [AddCommGroup V₂] [Module K V₂] {f : V →ₗ[K] V₂} :
        theorem LinearMap.mem_finiteRange_iff_hasFiniteRange {K : Type u_1} {V : Type u_2} {V₂ : Type u_4} [CommRing K] [AddCommGroup V] [Module K V] [AddCommGroup V₂] [Module K V₂] [IsNoetherianRing K] {f : V →ₗ[K] V₂} :
        @[implicit_reducible]
        def LinearMap.FiniteRangeSetoid.setoid {K : Type u_1} {V : Type u_2} {V₂ : Type u_4} [CommRing K] [AddCommGroup V] [Module K V] [AddCommGroup V₂] [Module K V₂] :
        Setoid (V →ₗ[K] V₂)

        This is the equivalence relation on linear maps such that u ≈ v precisely when u - v is a linear map with noetherian range. We allow ourself this slightly abusive name because the more natural definition (u - v has finitely generated range) only yields a well-behaved relation (more precisely, an additive congruence relation compatible with composition on both sides) over a noetherian ring, in which case the two notions agree.

        This setoid is declared as an instance in scope LinearMap.FiniteRangeSetoid.

        Equations
        Instances For
          theorem LinearMap.FiniteRangeSetoid.equiv_iff_hasNoetherianRange {K : Type u_1} {V : Type u_2} {V₂ : Type u_4} [CommRing K] [AddCommGroup V] [Module K V] [AddCommGroup V₂] [Module K V₂] {u v : V →ₗ[K] V₂} :
          theorem LinearMap.FiniteRangeSetoid.equiv_iff_hasFiniteRange {K : Type u_1} {V : Type u_2} {V₂ : Type u_4} [CommRing K] [AddCommGroup V] [Module K V] [AddCommGroup V₂] [Module K V₂] [IsNoetherianRing K] {u v : V →ₗ[K] V₂} :
          theorem LinearMap.FiniteRangeSetoid.equiv_iff_isNoetherian_quotient_eqLocus {K : Type u_1} {V : Type u_2} {V₂ : Type u_4} [CommRing K] [AddCommGroup V] [Module K V] [AddCommGroup V₂] [Module K V₂] {u v : V →ₗ[K] V₂} :
          theorem LinearMap.FiniteRangeSetoid.equiv_iff_eqLocus_coFG {K : Type u_1} {V : Type u_2} {V₂ : Type u_4} [CommRing K] [AddCommGroup V] [Module K V] [AddCommGroup V₂] [Module K V₂] [IsNoetherianRing K] {u v : V →ₗ[K] V₂} :
          u v (eqLocus u v).CoFG
          theorem LinearMap.FiniteRangeSetoid.equiv_of_eqOn_of_isNoetherian {K : Type u_1} {V : Type u_2} {V₂ : Type u_4} [CommRing K] [AddCommGroup V] [Module K V] [AddCommGroup V₂] [Module K V₂] {u v : V →ₗ[K] V₂} (A : Submodule K V) [quot_A_noeth : IsNoetherian K (V A)] (eqOn_A : Set.EqOn u v A) :
          u v
          theorem LinearMap.FiniteRangeSetoid.equiv_of_eqOn_coFG {K : Type u_1} {V : Type u_2} {V₂ : Type u_4} [CommRing K] [AddCommGroup V] [Module K V] [AddCommGroup V₂] [Module K V₂] [IsNoetherianRing K] {u v : V →ₗ[K] V₂} {A : Submodule K V} (A_coFG : A.CoFG) (eqOn_A : Set.EqOn u v A) :
          u v
          theorem LinearMap.FiniteRangeSetoid.equiv_comp_right {K : Type u_1} {V : Type u_2} {V₂ : Type u_4} {V₃ : Type u_6} [CommRing K] [AddCommGroup V] [Module K V] [AddCommGroup V₂] [Module K V₂] [AddCommGroup V₃] [Module K V₃] {u : V →ₗ[K] V₂} {v v' : V₂ →ₗ[K] V₃} (h' : v v') :
          v ∘ₗ u v' ∘ₗ u
          theorem LinearMap.FiniteRangeSetoid.equiv_comp_left {K : Type u_1} {V : Type u_2} {V₂ : Type u_4} {V₃ : Type u_6} [CommRing K] [AddCommGroup V] [Module K V] [AddCommGroup V₂] [Module K V₂] [AddCommGroup V₃] [Module K V₃] {u v : V →ₗ[K] V₂} {u' : V₂ →ₗ[K] V₃} (h : u v) :
          u' ∘ₗ u u' ∘ₗ v
          theorem LinearMap.FiniteRangeSetoid.equiv_comp {K : Type u_1} {V : Type u_2} {V₂ : Type u_4} {V₃ : Type u_6} [CommRing K] [AddCommGroup V] [Module K V] [AddCommGroup V₂] [Module K V₂] [AddCommGroup V₃] [Module K V₃] {u v : V →ₗ[K] V₂} {u' v' : V₂ →ₗ[K] V₃} (h : u v) (h' : u' v') :
          u' ∘ₗ u v' ∘ₗ v