Documentation

Mathlib.LinearAlgebra.Span.Basic

The span of a set of vectors, as a submodule #

Notation #

@[simp]
theorem Submodule.span_coe_eq_restrictScalars {R : Type u_1} {M : Type u_4} {S : Type u_7} [Semiring R] [AddCommMonoid M] [Module R M] (p : Submodule R M) [Semiring S] [SMul S R] [Module S M] [IsScalarTower S R M] :
span S โ†‘p = restrictScalars S p

A version of Submodule.span_eq for when the span is by a smaller ring.

theorem Submodule.image_span_subset {R : Type u_1} {Rโ‚‚ : Type u_2} {M : Type u_4} {Mโ‚‚ : Type u_5} [Semiring R] [AddCommMonoid M] [Module R M] [Semiring Rโ‚‚] {ฯƒโ‚โ‚‚ : R โ†’+* Rโ‚‚} [AddCommMonoid Mโ‚‚] [Module Rโ‚‚ Mโ‚‚] (f : M โ†’โ‚›โ‚—[ฯƒโ‚โ‚‚] Mโ‚‚) (s : Set M) (N : Submodule Rโ‚‚ Mโ‚‚) :
โ‡‘f '' โ†‘(span R s) โІ โ†‘N โ†” โˆ€ m โˆˆ s, f m โˆˆ N

A version of Submodule.map_span_le that does not require the RingHomSurjective assumption.

theorem Submodule.image_span_subset_span {R : Type u_1} {Rโ‚‚ : Type u_2} {M : Type u_4} {Mโ‚‚ : Type u_5} [Semiring R] [AddCommMonoid M] [Module R M] [Semiring Rโ‚‚] {ฯƒโ‚โ‚‚ : R โ†’+* Rโ‚‚} [AddCommMonoid Mโ‚‚] [Module Rโ‚‚ Mโ‚‚] (f : M โ†’โ‚›โ‚—[ฯƒโ‚โ‚‚] Mโ‚‚) (s : Set M) :
โ‡‘f '' โ†‘(span R s) โІ โ†‘(span Rโ‚‚ (โ‡‘f '' s))
theorem Submodule.map_span {R : Type u_1} {Rโ‚‚ : Type u_2} {M : Type u_4} {Mโ‚‚ : Type u_5} [Semiring R] [AddCommMonoid M] [Module R M] [Semiring Rโ‚‚] {ฯƒโ‚โ‚‚ : R โ†’+* Rโ‚‚} [AddCommMonoid Mโ‚‚] [Module Rโ‚‚ Mโ‚‚] [RingHomSurjective ฯƒโ‚โ‚‚] (f : M โ†’โ‚›โ‚—[ฯƒโ‚โ‚‚] Mโ‚‚) (s : Set M) :
map f (span R s) = span Rโ‚‚ (โ‡‘f '' s)
theorem LinearMap.map_span {R : Type u_1} {Rโ‚‚ : Type u_2} {M : Type u_4} {Mโ‚‚ : Type u_5} [Semiring R] [AddCommMonoid M] [Module R M] [Semiring Rโ‚‚] {ฯƒโ‚โ‚‚ : R โ†’+* Rโ‚‚} [AddCommMonoid Mโ‚‚] [Module Rโ‚‚ Mโ‚‚] [RingHomSurjective ฯƒโ‚โ‚‚] (f : M โ†’โ‚›โ‚—[ฯƒโ‚โ‚‚] Mโ‚‚) (s : Set M) :
Submodule.map f (Submodule.span R s) = Submodule.span Rโ‚‚ (โ‡‘f '' s)

Alias of Submodule.map_span.

theorem Submodule.map_span_le {R : Type u_1} {Rโ‚‚ : Type u_2} {M : Type u_4} {Mโ‚‚ : Type u_5} [Semiring R] [AddCommMonoid M] [Module R M] [Semiring Rโ‚‚] {ฯƒโ‚โ‚‚ : R โ†’+* Rโ‚‚} [AddCommMonoid Mโ‚‚] [Module Rโ‚‚ Mโ‚‚] [RingHomSurjective ฯƒโ‚โ‚‚] (f : M โ†’โ‚›โ‚—[ฯƒโ‚โ‚‚] Mโ‚‚) (s : Set M) (N : Submodule Rโ‚‚ Mโ‚‚) :
map f (span R s) โ‰ค N โ†” โˆ€ m โˆˆ s, f m โˆˆ N
theorem LinearMap.map_span_le {R : Type u_1} {Rโ‚‚ : Type u_2} {M : Type u_4} {Mโ‚‚ : Type u_5} [Semiring R] [AddCommMonoid M] [Module R M] [Semiring Rโ‚‚] {ฯƒโ‚โ‚‚ : R โ†’+* Rโ‚‚} [AddCommMonoid Mโ‚‚] [Module Rโ‚‚ Mโ‚‚] [RingHomSurjective ฯƒโ‚โ‚‚] (f : M โ†’โ‚›โ‚—[ฯƒโ‚โ‚‚] Mโ‚‚) (s : Set M) (N : Submodule Rโ‚‚ Mโ‚‚) :
Submodule.map f (Submodule.span R s) โ‰ค N โ†” โˆ€ m โˆˆ s, f m โˆˆ N

Alias of Submodule.map_span_le.

theorem Submodule.span_preimage_le {R : Type u_1} {Rโ‚‚ : Type u_2} {M : Type u_4} {Mโ‚‚ : Type u_5} [Semiring R] [AddCommMonoid M] [Module R M] [Semiring Rโ‚‚] {ฯƒโ‚โ‚‚ : R โ†’+* Rโ‚‚} [AddCommMonoid Mโ‚‚] [Module Rโ‚‚ Mโ‚‚] (f : M โ†’โ‚›โ‚—[ฯƒโ‚โ‚‚] Mโ‚‚) (s : Set Mโ‚‚) :
span R (โ‡‘f โปยน' s) โ‰ค comap f (span Rโ‚‚ s)

See also Submodule.span_preimage_eq.

theorem LinearMap.span_preimage_le {R : Type u_1} {Rโ‚‚ : Type u_2} {M : Type u_4} {Mโ‚‚ : Type u_5} [Semiring R] [AddCommMonoid M] [Module R M] [Semiring Rโ‚‚] {ฯƒโ‚โ‚‚ : R โ†’+* Rโ‚‚} [AddCommMonoid Mโ‚‚] [Module Rโ‚‚ Mโ‚‚] (f : M โ†’โ‚›โ‚—[ฯƒโ‚โ‚‚] Mโ‚‚) (s : Set Mโ‚‚) :

Alias of Submodule.span_preimage_le.


See also Submodule.span_preimage_eq.

theorem Submodule.mapsTo_span {R : Type u_1} {Rโ‚‚ : Type u_2} {M : Type u_4} {Mโ‚‚ : Type u_5} [Semiring R] [AddCommMonoid M] [Module R M] [Semiring Rโ‚‚] {ฯƒโ‚โ‚‚ : R โ†’+* Rโ‚‚} [AddCommMonoid Mโ‚‚] [Module Rโ‚‚ Mโ‚‚] {f : M โ†’โ‚›โ‚—[ฯƒโ‚โ‚‚] Mโ‚‚} {s : Set M} {t : Set Mโ‚‚} (h : Set.MapsTo (โ‡‘f) s t) :
Set.MapsTo โ‡‘f โ†‘(span R s) โ†‘(span Rโ‚‚ t)
theorem Set.MapsTo.submoduleSpan {R : Type u_1} {Rโ‚‚ : Type u_2} {M : Type u_4} {Mโ‚‚ : Type u_5} [Semiring R] [AddCommMonoid M] [Module R M] [Semiring Rโ‚‚] {ฯƒโ‚โ‚‚ : R โ†’+* Rโ‚‚} [AddCommMonoid Mโ‚‚] [Module Rโ‚‚ Mโ‚‚] {f : M โ†’โ‚›โ‚—[ฯƒโ‚โ‚‚] Mโ‚‚} {s : Set M} {t : Set Mโ‚‚} (h : MapsTo (โ‡‘f) s t) :
MapsTo โ‡‘f โ†‘(Submodule.span R s) โ†‘(Submodule.span Rโ‚‚ t)

Alias of Submodule.mapsTo_span.

theorem Submodule.linearMap_eq_iff_of_eq_span {R : Type u_1} {M : Type u_4} [Semiring R] [AddCommMonoid M] [Module R M] {N : Type u_8} [AddCommMonoid N] [Module R N] {V : Submodule R M} (f g : โ†ฅV โ†’โ‚—[R] N) {S : Set M} (hV : V = span R S) :
f = g โ†” โˆ€ (s : โ†‘S), f โŸจโ†‘s, โ‹ฏโŸฉ = g โŸจโ†‘s, โ‹ฏโŸฉ
theorem Submodule.linearMap_eq_iff_of_span_eq_top {R : Type u_1} {M : Type u_4} [Semiring R] [AddCommMonoid M] [Module R M] {N : Type u_8} [AddCommMonoid N] [Module R N] (f g : M โ†’โ‚—[R] N) {S : Set M} (hM : span R S = โŠค) :
f = g โ†” โˆ€ (s : โ†‘S), f โ†‘s = g โ†‘s
theorem Submodule.linearMap_eq_zero_iff_of_span_eq_top {R : Type u_1} {M : Type u_4} [Semiring R] [AddCommMonoid M] [Module R M] {N : Type u_8} [AddCommMonoid N] [Module R N] (f : M โ†’โ‚—[R] N) {S : Set M} (hM : span R S = โŠค) :
f = 0 โ†” โˆ€ (s : โ†‘S), f โ†‘s = 0
theorem Submodule.linearMap_eq_zero_iff_of_eq_span {R : Type u_1} {M : Type u_4} [Semiring R] [AddCommMonoid M] [Module R M] {N : Type u_8} [AddCommMonoid N] [Module R N] {V : Submodule R M} (f : โ†ฅV โ†’โ‚—[R] N) {S : Set M} (hV : V = span R S) :
f = 0 โ†” โˆ€ (s : โ†‘S), f โŸจโ†‘s, โ‹ฏโŸฉ = 0
theorem Submodule.span_smul_eq_of_isUnit {R : Type u_1} {M : Type u_4} [Semiring R] [AddCommMonoid M] [Module R M] (s : Set M) (r : R) (hr : IsUnit r) :
span R (r โ€ข s) = span R s

See Submodule.span_smul_eq (in RingTheory.Ideal.Operations) for span R (r โ€ข s) = r โ€ข span R s that holds for arbitrary r in a CommSemiring.

We can regard coe_iSup_of_chain as the statement that (โ†‘) : (Submodule R M) โ†’ Set M is Scott continuous for the ฯ‰-complete partial order induced by the complete lattice structures.

def Submodule.inclusionSpan {R : Type u_1} {M : Type u_4} (S : Type u_7) [Semiring R] [AddCommMonoid M] [Module R M] [Semiring S] [SMul R S] [Module S M] [IsScalarTower R S M] (p : Submodule R M) :
โ†ฅp โ†’โ‚—[R] โ†ฅ(span S โ†‘p)

The inclusion of an R-submodule into its S-span, as an R-linear map.

Equations
    Instances For
      @[simp]
      theorem Submodule.inclusionSpan_apply_coe {R : Type u_1} {M : Type u_4} (S : Type u_7) [Semiring R] [AddCommMonoid M] [Module R M] [Semiring S] [SMul R S] [Module S M] [IsScalarTower R S M] (p : Submodule R M) (x : โ†ฅp) :
      โ†‘((inclusionSpan S p) x) = โ†‘x
      theorem Submodule.injective_inclusionSpan {R : Type u_1} {M : Type u_4} (S : Type u_7) [Semiring R] [AddCommMonoid M] [Module R M] [Semiring S] [SMul R S] [Module S M] [IsScalarTower R S M] (p : Submodule R M) :
      theorem Submodule.span_range_inclusionSpan {R : Type u_1} {M : Type u_4} (S : Type u_7) [Semiring R] [AddCommMonoid M] [Module R M] [Semiring S] [SMul R S] [Module S M] [IsScalarTower R S M] (p : Submodule R M) :
      theorem Submodule.span_le_restrictScalars (R : Type u_1) {M : Type u_4} (S : Type u_7) [Semiring R] [AddCommMonoid M] [Module R M] (s : Set M) [Semiring S] [SMul R S] [Module S M] [IsScalarTower R S M] :

      If R is "smaller" ring than S then the span by R is smaller than the span by S.

      @[simp]
      theorem Submodule.span_subset_span (R : Type u_1) {M : Type u_4} (S : Type u_7) [Semiring R] [AddCommMonoid M] [Module R M] (s : Set M) [Semiring S] [SMul R S] [Module S M] [IsScalarTower R S M] :
      โ†‘(span R s) โІ โ†‘(span S s)

      A version of Submodule.span_le_restrictScalars with coercions.

      @[simp]
      theorem Submodule.span_span_of_tower (R : Type u_1) {M : Type u_4} (S : Type u_7) [Semiring R] [AddCommMonoid M] [Module R M] (s : Set M) [Semiring S] [SMul R S] [Module S M] [IsScalarTower R S M] :
      span S โ†‘(span R s) = span S s

      Taking the span by a large ring of the span by the small ring is the same as taking the span by just the large ring.

      theorem Submodule.span_eq_top_of_span_eq_top (R : Type u_1) {M : Type u_4} (S : Type u_7) [Semiring R] [AddCommMonoid M] [Module R M] [Semiring S] [SMul R S] [Module S M] [IsScalarTower R S M] (s : Set M) (hs : span R s = โŠค) :
      theorem Submodule.span_range_inclusion_eq_top {R : Type u_1} {M : Type u_4} {S : Type u_7} [Semiring R] [AddCommMonoid M] [Module R M] [Semiring S] [SMul R S] [Module S M] [IsScalarTower R S M] (p : Submodule R M) (q : Submodule S M) (hโ‚ : p โ‰ค restrictScalars R q) (hโ‚‚ : q โ‰ค span S โ†‘p) :
      span S (Set.range โ‡‘(inclusion hโ‚)) = โŠค
      @[simp]
      theorem Submodule.span_range_inclusion_restrictScalars_eq_top (R : Type u_1) {M : Type u_4} (S : Type u_7) [Semiring R] [AddCommMonoid M] [Module R M] (s : Set M) [Semiring S] [SMul R S] [Module S M] [IsScalarTower R S M] :
      span S (Set.range โ‡‘(inclusion โ‹ฏ)) = โŠค
      theorem Submodule.span_singleton_eq_span_singleton {R : Type u_8} {M : Type u_9} [Ring R] [IsDomain R] [AddCommGroup M] [Module R M] [Module.IsTorsionFree R M] {x y : M} :
      R โˆ™ x = R โˆ™ y โ†” โˆƒ (z : Rหฃ), z โ€ข x = y
      @[simp]
      theorem Submodule.span_image {R : Type u_1} {Rโ‚‚ : Type u_2} {M : Type u_4} {Mโ‚‚ : Type u_5} [Semiring R] [AddCommMonoid M] [Module R M] [Semiring Rโ‚‚] {ฯƒโ‚โ‚‚ : R โ†’+* Rโ‚‚} [AddCommMonoid Mโ‚‚] [Module Rโ‚‚ Mโ‚‚] {s : Set M} [RingHomSurjective ฯƒโ‚โ‚‚] (f : M โ†’โ‚›โ‚—[ฯƒโ‚โ‚‚] Mโ‚‚) :
      span Rโ‚‚ (โ‡‘f '' s) = map f (span R s)
      @[simp]
      theorem Submodule.span_image_linearEquiv {R : Type u_1} {Rโ‚‚ : Type u_2} {M : Type u_4} {Mโ‚‚ : Type u_5} [Semiring R] [AddCommMonoid M] [Module R M] [Semiring Rโ‚‚] {ฯƒโ‚โ‚‚ : R โ†’+* Rโ‚‚} [AddCommMonoid Mโ‚‚] [Module Rโ‚‚ Mโ‚‚] {s : Set M} {ฯƒโ‚‚โ‚ : Rโ‚‚ โ†’+* R} [RingHomInvPair ฯƒโ‚โ‚‚ ฯƒโ‚‚โ‚] [RingHomInvPair ฯƒโ‚‚โ‚ ฯƒโ‚โ‚‚] (f : M โ‰ƒโ‚›โ‚—[ฯƒโ‚โ‚‚] Mโ‚‚) :
      span Rโ‚‚ (โ‡‘f '' s) = map (โ†‘f) (span R s)
      theorem Submodule.apply_mem_span_image_of_mem_span {R : Type u_1} {Rโ‚‚ : Type u_2} {M : Type u_4} {Mโ‚‚ : Type u_5} [Semiring R] [AddCommMonoid M] [Module R M] [Semiring Rโ‚‚] {ฯƒโ‚โ‚‚ : R โ†’+* Rโ‚‚} [AddCommMonoid Mโ‚‚] [Module Rโ‚‚ Mโ‚‚] [RingHomSurjective ฯƒโ‚โ‚‚] (f : M โ†’โ‚›โ‚—[ฯƒโ‚โ‚‚] Mโ‚‚) {x : M} {s : Set M} (h : x โˆˆ span R s) :
      f x โˆˆ span Rโ‚‚ (โ‡‘f '' s)
      theorem Submodule.apply_mem_span_image_iff_mem_span {R : Type u_1} {Rโ‚‚ : Type u_2} {M : Type u_4} {Mโ‚‚ : Type u_5} [Semiring R] [AddCommMonoid M] [Module R M] [Semiring Rโ‚‚] {ฯƒโ‚โ‚‚ : R โ†’+* Rโ‚‚} [AddCommMonoid Mโ‚‚] [Module Rโ‚‚ Mโ‚‚] [RingHomSurjective ฯƒโ‚โ‚‚] {f : M โ†’โ‚›โ‚—[ฯƒโ‚โ‚‚] Mโ‚‚} {x : M} {s : Set M} (hf : Function.Injective โ‡‘f) :
      f x โˆˆ span Rโ‚‚ (โ‡‘f '' s) โ†” x โˆˆ span R s
      @[simp]
      theorem Submodule.map_subtype_span_singleton {R : Type u_1} {M : Type u_4} [Semiring R] [AddCommMonoid M] [Module R M] {p : Submodule R M} (x : โ†ฅp) :
      map p.subtype (R โˆ™ x) = R โˆ™ โ†‘x
      theorem Submodule.notMem_span_of_apply_notMem_span_image {R : Type u_1} {Rโ‚‚ : Type u_2} {M : Type u_4} {Mโ‚‚ : Type u_5} [Semiring R] [AddCommMonoid M] [Module R M] [Semiring Rโ‚‚] {ฯƒโ‚โ‚‚ : R โ†’+* Rโ‚‚} [AddCommMonoid Mโ‚‚] [Module Rโ‚‚ Mโ‚‚] [RingHomSurjective ฯƒโ‚โ‚‚] (f : M โ†’โ‚›โ‚—[ฯƒโ‚โ‚‚] Mโ‚‚) {x : M} {s : Set M} (h : f x โˆ‰ span Rโ‚‚ (โ‡‘f '' s)) :
      x โˆ‰ span R s

      f is an explicit argument so we can apply this theorem and obtain h as a new goal.

      theorem Submodule.iSup_toAddSubmonoid {R : Type u_1} {M : Type u_4} [Semiring R] [AddCommMonoid M] [Module R M] {ฮน : Sort u_8} (p : ฮน โ†’ Submodule R M) :
      (โจ† (i : ฮน), p i).toAddSubmonoid = โจ† (i : ฮน), (p i).toAddSubmonoid
      theorem Submodule.iSup_induction {R : Type u_1} {M : Type u_4} [Semiring R] [AddCommMonoid M] [Module R M] {ฮน : Sort u_8} (p : ฮน โ†’ Submodule R M) {motive : M โ†’ Prop} {x : M} (hx : x โˆˆ โจ† (i : ฮน), p i) (mem : โˆ€ (i : ฮน), โˆ€ x โˆˆ p i, motive x) (zero : motive 0) (add : โˆ€ (x y : M), motive x โ†’ motive y โ†’ motive (x + y)) :
      motive x

      An induction principle for elements of โจ† i, p i. If C holds for 0 and all elements of p i for all i, and is preserved under addition, then it holds for all elements of the supremum of p.

      theorem Submodule.iSup_induction' {R : Type u_1} {M : Type u_4} [Semiring R] [AddCommMonoid M] [Module R M] {ฮน : Sort u_8} (p : ฮน โ†’ Submodule R M) {motive : (x : M) โ†’ x โˆˆ โจ† (i : ฮน), p i โ†’ Prop} (mem : โˆ€ (i : ฮน) (x : M) (hx : x โˆˆ p i), motive x โ‹ฏ) (zero : motive 0 โ‹ฏ) (add : โˆ€ (x y : M) (hx : x โˆˆ โจ† (i : ฮน), p i) (hy : y โˆˆ โจ† (i : ฮน), p i), motive x hx โ†’ motive y hy โ†’ motive (x + y) โ‹ฏ) {x : M} (hx : x โˆˆ โจ† (i : ฮน), p i) :
      motive x hx

      A dependent version of submodule.iSup_induction.

      theorem Submodule.finset_span_isCompactElement {R : Type u_1} {M : Type u_4} [Semiring R] [AddCommMonoid M] [Module R M] (S : Finset M) :
      IsCompactElement (span R โ†‘S)

      The span of a finite subset is compact in the lattice of submodules.

      theorem Submodule.finite_span_isCompactElement {R : Type u_1} {M : Type u_4} [Semiring R] [AddCommMonoid M] [Module R M] (S : Set M) (h : S.Finite) :

      The span of a finite subset is compact in the lattice of submodules.

      def Submodule.prod {R : Type u_1} {M : Type u_4} [Semiring R] [AddCommMonoid M] [Module R M] (p : Submodule R M) {M' : Type u_8} [AddCommMonoid M'] [Module R M'] (qโ‚ : Submodule R M') :
      Submodule R (M ร— M')

      The product of two submodules is a submodule.

      Equations
        Instances For
          @[simp]
          theorem Submodule.prod_coe {R : Type u_1} {M : Type u_4} [Semiring R] [AddCommMonoid M] [Module R M] (p : Submodule R M) {M' : Type u_8} [AddCommMonoid M'] [Module R M'] (qโ‚ : Submodule R M') :
          โ†‘(p.prod qโ‚) = โ†‘p ร—หข โ†‘qโ‚
          @[simp]
          theorem Submodule.mem_prod {R : Type u_1} {M : Type u_4} [Semiring R] [AddCommMonoid M] [Module R M] {M' : Type u_8} [AddCommMonoid M'] [Module R M'] {p : Submodule R M} {q : Submodule R M'} {x : M ร— M'} :
          theorem Submodule.span_prod_le {R : Type u_1} {M : Type u_4} [Semiring R] [AddCommMonoid M] [Module R M] {M' : Type u_8} [AddCommMonoid M'] [Module R M'] (s : Set M) (t : Set M') :
          span R (s ร—หข t) โ‰ค (span R s).prod (span R t)
          @[simp]
          theorem Submodule.prod_top {R : Type u_1} {M : Type u_4} [Semiring R] [AddCommMonoid M] [Module R M] {M' : Type u_8} [AddCommMonoid M'] [Module R M'] :
          @[simp]
          theorem Submodule.prod_bot {R : Type u_1} {M : Type u_4} [Semiring R] [AddCommMonoid M] [Module R M] {M' : Type u_8} [AddCommMonoid M'] [Module R M'] :
          theorem Submodule.prod_mono {R : Type u_1} {M : Type u_4} [Semiring R] [AddCommMonoid M] [Module R M] {M' : Type u_8} [AddCommMonoid M'] [Module R M'] {p p' : Submodule R M} {q q' : Submodule R M'} :
          p โ‰ค p' โ†’ q โ‰ค q' โ†’ p.prod q โ‰ค p'.prod q'
          @[simp]
          theorem Submodule.prod_inf_prod {R : Type u_1} {M : Type u_4} [Semiring R] [AddCommMonoid M] [Module R M] (p p' : Submodule R M) {M' : Type u_8} [AddCommMonoid M'] [Module R M'] (qโ‚ qโ‚' : Submodule R M') :
          p.prod qโ‚ โŠ“ p'.prod qโ‚' = (p โŠ“ p').prod (qโ‚ โŠ“ qโ‚')
          @[simp]
          theorem Submodule.prod_sup_prod {R : Type u_1} {M : Type u_4} [Semiring R] [AddCommMonoid M] [Module R M] (p p' : Submodule R M) {M' : Type u_8} [AddCommMonoid M'] [Module R M'] (qโ‚ qโ‚' : Submodule R M') :
          p.prod qโ‚ โŠ” p'.prod qโ‚' = (p โŠ” p').prod (qโ‚ โŠ” qโ‚')
          theorem LinearMap.BilinMap.apply_apply_mem_of_mem_span {R : Type u_9} {M : Type u_10} {N : Type u_11} {P : Type u_12} [CommSemiring R] [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid P] [Module R M] [Module R N] [Module R P] (P' : Submodule R P) (s : Set M) (t : Set N) (B : M โ†’โ‚—[R] N โ†’โ‚—[R] P) (hB : โˆ€ x โˆˆ s, โˆ€ y โˆˆ t, (B x) y โˆˆ P') (x : M) (y : N) (hx : x โˆˆ Submodule.span R s) (hy : y โˆˆ Submodule.span R t) :
          (B x) y โˆˆ P'

          If a bilinear map takes values in a submodule along two sets, then the same is true along the span of these sets.

          @[simp]
          theorem Submodule.biSup_comap_subtype_eq_top {R : Type u_1} {M : Type u_4} [Semiring R] [AddCommMonoid M] [Module R M] {ฮน : Type u_9} (s : Set ฮน) (p : ฮน โ†’ Submodule R M) :
          โจ† i โˆˆ s, comap (โจ† i โˆˆ s, p i).subtype (p i) = โŠค
          theorem LinearMap.exists_ne_zero_of_sSup_eq {R : Type u_1} {Rโ‚‚ : Type u_2} {M : Type u_4} {Mโ‚‚ : Type u_5} [Semiring R] [AddCommMonoid M] [Module R M] [Semiring Rโ‚‚] {ฯƒโ‚โ‚‚ : R โ†’+* Rโ‚‚} [AddCommMonoid Mโ‚‚] [Module Rโ‚‚ Mโ‚‚] {N : Submodule R M} {f : โ†ฅN โ†’โ‚›โ‚—[ฯƒโ‚โ‚‚] Mโ‚‚} (h : f โ‰  0) (s : Set (Submodule R M)) (hs : sSup s = N) :
          โˆƒ (m : Submodule R M) (h : m โˆˆ s), f โˆ˜โ‚›โ‚— Submodule.inclusion โ‹ฏ โ‰  0
          theorem Submodule.span_range_subtype_eq_top_iff {R : Type u_1} {M : Type u_4} [Semiring R] [AddCommMonoid M] [Module R M] {ฮน : Type u_9} (p : Submodule R M) {s : ฮน โ†’ M} (hs : โˆ€ (i : ฮน), s i โˆˆ p) :
          span R (Set.range fun (i : ฮน) => โŸจs i, โ‹ฏโŸฉ) = โŠค โ†” span R (Set.range s) = p
          theorem Submodule.comap_le_comap_iff_of_le_range {R : Type u_1} {Rโ‚‚ : Type u_2} {M : Type u_4} {Mโ‚‚ : Type u_5} [Semiring R] [AddCommMonoid M] [Module R M] [Semiring Rโ‚‚] {ฯƒโ‚โ‚‚ : R โ†’+* Rโ‚‚} [AddCommMonoid Mโ‚‚] [Module Rโ‚‚ Mโ‚‚] {f : M โ†’โ‚›โ‚—[ฯƒโ‚โ‚‚] Mโ‚‚} [RingHomSurjective ฯƒโ‚โ‚‚] {p q : Submodule Rโ‚‚ Mโ‚‚} (hp : p โ‰ค f.range) :
          theorem Submodule.comap_sup_of_injective {R : Type u_1} {Rโ‚‚ : Type u_2} {M : Type u_4} {Mโ‚‚ : Type u_5} [Semiring R] [AddCommMonoid M] [Module R M] [Semiring Rโ‚‚] {ฯƒโ‚โ‚‚ : R โ†’+* Rโ‚‚} [AddCommMonoid Mโ‚‚] [Module Rโ‚‚ Mโ‚‚] {f : M โ†’โ‚›โ‚—[ฯƒโ‚โ‚‚] Mโ‚‚} [RingHomSurjective ฯƒโ‚โ‚‚] {p q : Submodule Rโ‚‚ Mโ‚‚} (hf : Function.Injective โ‡‘f) (hp : p โ‰ค f.range) (hq : q โ‰ค f.range) :
          comap f (p โŠ” q) = comap f p โŠ” comap f q
          @[simp]
          theorem Submodule.span_neg {R : Type u_1} {M : Type u_4} [Ring R] [AddCommGroup M] [Module R M] (s : Set M) :
          span R (-s) = span R s
          theorem Submodule.isCompl_comap_subtype_of_isCompl_of_le {R : Type u_1} {M : Type u_4} [Ring R] [AddCommGroup M] [Module R M] {p q r : Submodule R M} (hโ‚ : IsCompl q r) (hโ‚‚ : q โ‰ค p) :
          theorem Submodule.comap_map_eq {R : Type u_1} {Rโ‚‚ : Type u_2} {M : Type u_4} {Mโ‚‚ : Type u_5} [Semiring R] [Semiring Rโ‚‚] [AddCommGroup M] [Module R M] [AddCommGroup Mโ‚‚] [Module Rโ‚‚ Mโ‚‚] {ฯ„โ‚โ‚‚ : R โ†’+* Rโ‚‚} [RingHomSurjective ฯ„โ‚โ‚‚] (f : M โ†’โ‚›โ‚—[ฯ„โ‚โ‚‚] Mโ‚‚) (p : Submodule R M) :
          comap f (map f p) = p โŠ” f.ker
          theorem Submodule.map_lt_map_of_le_of_sup_lt_sup {R : Type u_1} {Rโ‚‚ : Type u_2} {M : Type u_4} {Mโ‚‚ : Type u_5} [Semiring R] [Semiring Rโ‚‚] [AddCommGroup M] [Module R M] [AddCommGroup Mโ‚‚] [Module Rโ‚‚ Mโ‚‚] {ฯ„โ‚โ‚‚ : R โ†’+* Rโ‚‚} [RingHomSurjective ฯ„โ‚โ‚‚] {p p' : Submodule R M} {f : M โ†’โ‚›โ‚—[ฯ„โ‚โ‚‚] Mโ‚‚} (hab : p โ‰ค p') (h : p โŠ” f.ker < p' โŠ” f.ker) :
          map f p < map f p'
          theorem Submodule.comap_map_eq_self {R : Type u_1} {Rโ‚‚ : Type u_2} {M : Type u_4} {Mโ‚‚ : Type u_5} [Semiring R] [Semiring Rโ‚‚] [AddCommGroup M] [Module R M] [AddCommGroup Mโ‚‚] [Module Rโ‚‚ Mโ‚‚] {ฯ„โ‚โ‚‚ : R โ†’+* Rโ‚‚} [RingHomSurjective ฯ„โ‚โ‚‚] {f : M โ†’โ‚›โ‚—[ฯ„โ‚โ‚‚] Mโ‚‚} {p : Submodule R M} (h : f.ker โ‰ค p) :
          comap f (map f p) = p
          theorem Submodule.comap_map_sup_of_comap_le {R : Type u_1} {Rโ‚‚ : Type u_2} {M : Type u_4} {Mโ‚‚ : Type u_5} [Semiring R] [Semiring Rโ‚‚] [AddCommGroup M] [Module R M] [AddCommGroup Mโ‚‚] [Module Rโ‚‚ Mโ‚‚] {ฯ„โ‚โ‚‚ : R โ†’+* Rโ‚‚} [RingHomSurjective ฯ„โ‚โ‚‚] {f : M โ†’โ‚›โ‚—[ฯ„โ‚โ‚‚] Mโ‚‚} {p : Submodule R M} {q : Submodule Rโ‚‚ Mโ‚‚} (le : comap f q โ‰ค p) :
          comap f (map f p โŠ” q) = p
          theorem Submodule.isCoatom_comap_or_eq_top {R : Type u_1} {Rโ‚‚ : Type u_2} {M : Type u_4} {Mโ‚‚ : Type u_5} [Semiring R] [Semiring Rโ‚‚] [AddCommGroup M] [Module R M] [AddCommGroup Mโ‚‚] [Module Rโ‚‚ Mโ‚‚] {ฯ„โ‚โ‚‚ : R โ†’+* Rโ‚‚} [RingHomSurjective ฯ„โ‚โ‚‚] (f : M โ†’โ‚›โ‚—[ฯ„โ‚โ‚‚] Mโ‚‚) {p : Submodule Rโ‚‚ Mโ‚‚} (hp : IsCoatom p) :
          theorem Submodule.isCoatom_comap_iff {R : Type u_1} {Rโ‚‚ : Type u_2} {M : Type u_4} {Mโ‚‚ : Type u_5} [Semiring R] [Semiring Rโ‚‚] [AddCommGroup M] [Module R M] [AddCommGroup Mโ‚‚] [Module Rโ‚‚ Mโ‚‚] {ฯ„โ‚โ‚‚ : R โ†’+* Rโ‚‚} [RingHomSurjective ฯ„โ‚โ‚‚] {f : M โ†’โ‚›โ‚—[ฯ„โ‚โ‚‚] Mโ‚‚} (hf : Function.Surjective โ‡‘f) {p : Submodule Rโ‚‚ Mโ‚‚} :
          theorem Submodule.isCoatom_map_of_ker_le {R : Type u_1} {Rโ‚‚ : Type u_2} {M : Type u_4} {Mโ‚‚ : Type u_5} [Semiring R] [Semiring Rโ‚‚] [AddCommGroup M] [Module R M] [AddCommGroup Mโ‚‚] [Module Rโ‚‚ Mโ‚‚] {ฯ„โ‚โ‚‚ : R โ†’+* Rโ‚‚} [RingHomSurjective ฯ„โ‚โ‚‚] {f : M โ†’โ‚›โ‚—[ฯ„โ‚โ‚‚] Mโ‚‚} (hf : Function.Surjective โ‡‘f) {p : Submodule R M} (le : f.ker โ‰ค p) (hp : IsCoatom p) :
          theorem Submodule.map_iInf_of_ker_le {R : Type u_1} {Rโ‚‚ : Type u_2} {M : Type u_4} {Mโ‚‚ : Type u_5} [Semiring R] [Semiring Rโ‚‚] [AddCommGroup M] [Module R M] [AddCommGroup Mโ‚‚] [Module Rโ‚‚ Mโ‚‚] {ฯ„โ‚โ‚‚ : R โ†’+* Rโ‚‚} [RingHomSurjective ฯ„โ‚โ‚‚] {f : M โ†’โ‚›โ‚—[ฯ„โ‚โ‚‚] Mโ‚‚} (hf : Function.Surjective โ‡‘f) {ฮน : Sort u_8} {p : ฮน โ†’ Submodule R M} (h : f.ker โ‰ค โจ… (i : ฮน), p i) :
          map f (โจ… (i : ฮน), p i) = โจ… (i : ฮน), map f (p i)
          theorem Submodule.comap_covBy_of_surjective {R : Type u_1} {Rโ‚‚ : Type u_2} {M : Type u_4} {Mโ‚‚ : Type u_5} [Semiring R] [Semiring Rโ‚‚] [AddCommGroup M] [Module R M] [AddCommGroup Mโ‚‚] [Module Rโ‚‚ Mโ‚‚] {ฯ„โ‚โ‚‚ : R โ†’+* Rโ‚‚} [RingHomSurjective ฯ„โ‚โ‚‚] {f : M โ†’โ‚›โ‚—[ฯ„โ‚โ‚‚] Mโ‚‚} (hf : Function.Surjective โ‡‘f) {p q : Submodule Rโ‚‚ Mโ‚‚} (h : p โ‹– q) :
          theorem LinearMap.range_domRestrict_eq_range_iff {R : Type u_1} {Rโ‚‚ : Type u_2} {M : Type u_4} {Mโ‚‚ : Type u_5} [Semiring R] [Semiring Rโ‚‚] [AddCommGroup M] [Module R M] [AddCommGroup Mโ‚‚] [Module Rโ‚‚ Mโ‚‚] {ฯ„โ‚โ‚‚ : R โ†’+* Rโ‚‚} [RingHomSurjective ฯ„โ‚โ‚‚] {f : M โ†’โ‚›โ‚—[ฯ„โ‚โ‚‚] Mโ‚‚} {S : Submodule R M} :
          @[simp]
          theorem LinearMap.surjective_domRestrict_iff {R : Type u_1} {Rโ‚‚ : Type u_2} {M : Type u_4} {Mโ‚‚ : Type u_5} [Semiring R] [Semiring Rโ‚‚] [AddCommGroup M] [Module R M] [AddCommGroup Mโ‚‚] [Module Rโ‚‚ Mโ‚‚] {ฯ„โ‚โ‚‚ : R โ†’+* Rโ‚‚} [RingHomSurjective ฯ„โ‚โ‚‚] {f : M โ†’โ‚›โ‚—[ฯ„โ‚โ‚‚] Mโ‚‚} {S : Submodule R M} (hf : Function.Surjective โ‡‘f) :
          theorem Submodule.biSup_comap_eq_top_of_surjective {R : Type u_1} {Rโ‚‚ : Type u_2} {M : Type u_4} {Mโ‚‚ : Type u_5} [Semiring R] [Semiring Rโ‚‚] [AddCommGroup M] [Module R M] [AddCommGroup Mโ‚‚] [Module Rโ‚‚ Mโ‚‚] {ฯ„โ‚โ‚‚ : R โ†’+* Rโ‚‚} [RingHomSurjective ฯ„โ‚โ‚‚] {ฮน : Type u_8} (s : Set ฮน) (hs : s.Nonempty) (p : ฮน โ†’ Submodule Rโ‚‚ Mโ‚‚) (hp : โจ† i โˆˆ s, p i = โŠค) (f : M โ†’โ‚›โ‚—[ฯ„โ‚โ‚‚] Mโ‚‚) (hf : Function.Surjective โ‡‘f) :
          โจ† i โˆˆ s, comap f (p i) = โŠค
          theorem Submodule.biSup_comap_eq_top_of_range_eq_biSup {M : Type u_4} {Mโ‚‚ : Type u_5} [AddCommGroup M] [AddCommGroup Mโ‚‚] {R : Type u_8} {Rโ‚‚ : Type u_9} [Semiring R] [Ring Rโ‚‚] {ฯ„โ‚โ‚‚ : R โ†’+* Rโ‚‚} [RingHomSurjective ฯ„โ‚โ‚‚] [Module R M] [Module Rโ‚‚ Mโ‚‚] {ฮน : Type u_10} (s : Set ฮน) (hs : s.Nonempty) (p : ฮน โ†’ Submodule Rโ‚‚ Mโ‚‚) (f : M โ†’โ‚›โ‚—[ฯ„โ‚โ‚‚] Mโ‚‚) (hf : f.range = โจ† i โˆˆ s, p i) :
          โจ† i โˆˆ s, comap f (p i) = โŠค
          theorem Submodule.map_strict_mono_or_ker_sup_lt_ker_sup {R : Type u_1} {Rโ‚‚ : Type u_2} {M : Type u_4} {Mโ‚‚ : Type u_5} [Ring R] [Semiring Rโ‚‚] [AddCommGroup M] [Module R M] [AddCommGroup Mโ‚‚] [Module Rโ‚‚ Mโ‚‚] {ฯ„โ‚โ‚‚ : R โ†’+* Rโ‚‚} [RingHomSurjective ฯ„โ‚โ‚‚] {p p' : Submodule R M} (f : M โ†’โ‚›โ‚—[ฯ„โ‚โ‚‚] Mโ‚‚) (hab : p < p') :
          map f p < map f p' โˆจ f.ker โŠ“ p < f.ker โŠ“ p'
          theorem LinearMap.ker_inf_lt_ker_inf_of_map_eq_of_lt {R : Type u_1} {Rโ‚‚ : Type u_2} {M : Type u_4} {Mโ‚‚ : Type u_5} [Ring R] [Semiring Rโ‚‚] [AddCommGroup M] [Module R M] [AddCommGroup Mโ‚‚] [Module Rโ‚‚ Mโ‚‚] {ฯ„โ‚โ‚‚ : R โ†’+* Rโ‚‚} [RingHomSurjective ฯ„โ‚โ‚‚] {p p' : Submodule R M} {f : M โ†’โ‚›โ‚—[ฯ„โ‚โ‚‚] Mโ‚‚} (hab : p < p') (q : Submodule.map f p = Submodule.map f p') :
          f.ker โŠ“ p < f.ker โŠ“ p'
          theorem Submodule.map_strict_mono_of_ker_inf_eq {R : Type u_1} {Rโ‚‚ : Type u_2} {M : Type u_4} {Mโ‚‚ : Type u_5} [Ring R] [Semiring Rโ‚‚] [AddCommGroup M] [Module R M] [AddCommGroup Mโ‚‚] [Module Rโ‚‚ Mโ‚‚] {ฯ„โ‚โ‚‚ : R โ†’+* Rโ‚‚} [RingHomSurjective ฯ„โ‚โ‚‚] {p p' : Submodule R M} {f : M โ†’โ‚›โ‚—[ฯ„โ‚โ‚‚] Mโ‚‚} (hab : p < p') (q : f.ker โŠ“ p = f.ker โŠ“ p') :
          map f p < map f p'
          theorem Submodule.disjoint_span_singleton'' {R : Type u_1} {M : Type u_4} [Ring R] [AddCommGroup M] [Module R M] {s : Submodule R M} {x : M} :
          Disjoint s (R โˆ™ x) โ†” โˆ€ (r : R), r โ€ข x โˆˆ s โ†’ r โ€ข x = 0

          Version of disjoint_span_singleton that works when the scalars are not a field.

          theorem Submodule.wcovBy_span_singleton_sup {K : Type u_3} {V : Type u_6} [DivisionRing K] [AddCommGroup V] [Module K V] (x : V) (s : Submodule K V) :
          s โฉฟ K โˆ™ x โŠ” s

          There is no vector subspace between s and K โˆ™ x โŠ” s, WCovBy version.

          theorem Submodule.covBy_span_singleton_sup {K : Type u_3} {V : Type u_6} [DivisionRing K] [AddCommGroup V] [Module K V] {x : V} {s : Submodule K V} (h : x โˆ‰ s) :
          s โ‹– K โˆ™ x โŠ” s

          There is no vector subspace between s and K โˆ™ x โŠ” s, CovBy version.

          theorem Submodule.disjoint_span_singleton {K : Type u_3} {V : Type u_6} [DivisionRing K] [AddCommGroup V] [Module K V] {s : Submodule K V} {x : V} :
          Disjoint s (K โˆ™ x) โ†” x โˆˆ s โ†’ x = 0
          theorem Submodule.disjoint_span_singleton' {K : Type u_3} {V : Type u_6} [DivisionRing K] [AddCommGroup V] [Module K V] {s : Submodule K V} {x : V} (hx : x โ‰  0) :
          Disjoint s (K โˆ™ x) โ†” x โˆ‰ s
          theorem Submodule.disjoint_span_singleton_of_notMem {K : Type u_3} {V : Type u_6} [DivisionRing K] [AddCommGroup V] [Module K V] {s : Submodule K V} {x : V} (hx : x โˆ‰ s) :
          theorem Submodule.isCompl_span_singleton_of_isCoatom_of_notMem {K : Type u_3} {V : Type u_6} [DivisionRing K] [AddCommGroup V] [Module K V] {s : Submodule K V} {x : V} (hs : IsCoatom s) (hx : x โˆ‰ s) :
          theorem LinearMap.map_le_map_iff {R : Type u_1} {Rโ‚‚ : Type u_2} {M : Type u_4} {Mโ‚‚ : Type u_5} [Semiring R] [Semiring Rโ‚‚] [AddCommGroup M] [AddCommGroup Mโ‚‚] [Module R M] [Module Rโ‚‚ Mโ‚‚] {ฯ„โ‚โ‚‚ : R โ†’+* Rโ‚‚} [RingHomSurjective ฯ„โ‚โ‚‚] (f : M โ†’โ‚›โ‚—[ฯ„โ‚โ‚‚] Mโ‚‚) {p p' : Submodule R M} :
          theorem LinearMap.map_le_map_iff' {R : Type u_1} {Rโ‚‚ : Type u_2} {M : Type u_4} {Mโ‚‚ : Type u_5} [Semiring R] [Semiring Rโ‚‚] [AddCommGroup M] [AddCommGroup Mโ‚‚] [Module R M] [Module Rโ‚‚ Mโ‚‚] {ฯ„โ‚โ‚‚ : R โ†’+* Rโ‚‚} [RingHomSurjective ฯ„โ‚โ‚‚] {f : M โ†’โ‚›โ‚—[ฯ„โ‚โ‚‚] Mโ‚‚} (hf : f.ker = โŠฅ) {p p' : Submodule R M} :
          theorem LinearMap.map_injective {R : Type u_1} {Rโ‚‚ : Type u_2} {M : Type u_4} {Mโ‚‚ : Type u_5} [Semiring R] [Semiring Rโ‚‚] [AddCommGroup M] [AddCommGroup Mโ‚‚] [Module R M] [Module Rโ‚‚ Mโ‚‚] {ฯ„โ‚โ‚‚ : R โ†’+* Rโ‚‚} [RingHomSurjective ฯ„โ‚โ‚‚] {f : M โ†’โ‚›โ‚—[ฯ„โ‚โ‚‚] Mโ‚‚} (hf : f.ker = โŠฅ) :
          theorem LinearMap.map_eq_top_iff {R : Type u_1} {Rโ‚‚ : Type u_2} {M : Type u_4} {Mโ‚‚ : Type u_5} [Semiring R] [Semiring Rโ‚‚] [AddCommGroup M] [AddCommGroup Mโ‚‚] [Module R M] [Module Rโ‚‚ Mโ‚‚] {ฯ„โ‚โ‚‚ : R โ†’+* Rโ‚‚} [RingHomSurjective ฯ„โ‚โ‚‚] {f : M โ†’โ‚›โ‚—[ฯ„โ‚โ‚‚] Mโ‚‚} (hf : f.range = โŠค) {p : Submodule R M} :
          def LinearMap.toSpanSingleton (R : Type u_1) (M : Type u_4) [Semiring R] [AddCommMonoid M] [Module R M] (x : M) :

          Given an element x of a module M over R, the natural map from R to scalar multiples of x. See also LinearMap.ringLmapEquivSelf.

          Equations
            Instances For
              @[simp]
              theorem LinearMap.toSpanSingleton_apply (R : Type u_1) (M : Type u_4) [Semiring R] [AddCommMonoid M] [Module R M] (x : M) (b : R) :
              (toSpanSingleton R M x) b = b โ€ข x
              @[deprecated LinearMap.toSpanSingleton_apply_one (since := "2025-12-05")]
              theorem LinearMap.toSpanSingleton_one (R : Type u_1) (M : Type u_4) [Semiring R] [AddCommMonoid M] [Module R M] (x : M) :
              (toSpanSingleton R M x) 1 = x

              Alias of LinearMap.toSpanSingleton_apply_one.

              theorem LinearMap.toSpanSingleton_smul {R : Type u_1} {M : Type u_4} [Semiring R] [AddCommMonoid M] [Module R M] {S : Type u_8} [Monoid S] [DistribMulAction S M] [SMulCommClass R S M] (r : S) (x : M) :
              @[deprecated LinearMap.isIdempotentElem_map_one_iff (since := "2025-12-05")]

              Alias of LinearMap.isIdempotentElem_map_one_iff.

              theorem LinearMap.range_toSpanSingleton {R : Type u_1} {M : Type u_4} [Semiring R] [AddCommMonoid M] [Module R M] (x : M) :

              The range of toSpanSingleton x is the span of x.

              theorem LinearMap.comp_toSpanSingleton {R : Type u_1} {M : Type u_4} {Mโ‚‚ : Type u_5} [Semiring R] [AddCommMonoid M] [Module R M] [AddCommMonoid Mโ‚‚] [Module R Mโ‚‚] (f : M โ†’โ‚—[R] Mโ‚‚) (x : M) :
              theorem LinearMap.eqOn_span_iff {R : Type u_1} {Rโ‚‚ : Type u_2} {M : Type u_4} {Mโ‚‚ : Type u_5} [Semiring R] [AddCommMonoid M] [Module R M] [Semiring Rโ‚‚] [AddCommMonoid Mโ‚‚] [Module Rโ‚‚ Mโ‚‚] {ฯƒโ‚โ‚‚ : R โ†’+* Rโ‚‚} {s : Set M} {f g : M โ†’โ‚›โ‚—[ฯƒโ‚โ‚‚] Mโ‚‚} :
              Set.EqOn โ‡‘f โ‡‘g โ†‘(Submodule.span R s) โ†” Set.EqOn (โ‡‘f) (โ‡‘g) s

              Two linear maps are equal on Submodule.span s iff they are equal on s.

              theorem LinearMap.eqOn_span' {R : Type u_1} {Rโ‚‚ : Type u_2} {M : Type u_4} {Mโ‚‚ : Type u_5} [Semiring R] [AddCommMonoid M] [Module R M] [Semiring Rโ‚‚] [AddCommMonoid Mโ‚‚] [Module Rโ‚‚ Mโ‚‚] {ฯƒโ‚โ‚‚ : R โ†’+* Rโ‚‚} {s : Set M} {f g : M โ†’โ‚›โ‚—[ฯƒโ‚โ‚‚] Mโ‚‚} (H : Set.EqOn (โ‡‘f) (โ‡‘g) s) :
              Set.EqOn โ‡‘f โ‡‘g โ†‘(Submodule.span R s)

              If two linear maps are equal on a set s, then they are equal on Submodule.span s.

              This version uses Set.EqOn, and the hidden argument will expand to h : x โˆˆ (span R s : Set M). See LinearMap.eqOn_span for a version that takes h : x โˆˆ span R s as an argument.

              theorem LinearMap.eqOn_span {R : Type u_1} {Rโ‚‚ : Type u_2} {M : Type u_4} {Mโ‚‚ : Type u_5} [Semiring R] [AddCommMonoid M] [Module R M] [Semiring Rโ‚‚] [AddCommMonoid Mโ‚‚] [Module Rโ‚‚ Mโ‚‚] {ฯƒโ‚โ‚‚ : R โ†’+* Rโ‚‚} {s : Set M} {f g : M โ†’โ‚›โ‚—[ฯƒโ‚โ‚‚] Mโ‚‚} (H : Set.EqOn (โ‡‘f) (โ‡‘g) s) โฆƒx : Mโฆ„ (h : x โˆˆ Submodule.span R s) :
              f x = g x

              If two linear maps are equal on a set s, then they are equal on Submodule.span s.

              See also LinearMap.eqOn_span' for a version using Set.EqOn.

              theorem LinearMap.ext_on {R : Type u_1} {Rโ‚‚ : Type u_2} {M : Type u_4} {Mโ‚‚ : Type u_5} [Semiring R] [AddCommMonoid M] [Module R M] [Semiring Rโ‚‚] [AddCommMonoid Mโ‚‚] [Module Rโ‚‚ Mโ‚‚] {ฯƒโ‚โ‚‚ : R โ†’+* Rโ‚‚} {s : Set M} {f g : M โ†’โ‚›โ‚—[ฯƒโ‚โ‚‚] Mโ‚‚} (hv : Submodule.span R s = โŠค) (h : Set.EqOn (โ‡‘f) (โ‡‘g) s) :
              f = g

              If s generates the whole module and linear maps f, g are equal on s, then they are equal.

              theorem LinearMap.ext_on_range {R : Type u_1} {Rโ‚‚ : Type u_2} {M : Type u_4} {Mโ‚‚ : Type u_5} [Semiring R] [AddCommMonoid M] [Module R M] [Semiring Rโ‚‚] [AddCommMonoid Mโ‚‚] [Module Rโ‚‚ Mโ‚‚] {ฯƒโ‚โ‚‚ : R โ†’+* Rโ‚‚} {ฮน : Sort u_8} {v : ฮน โ†’ M} {f g : M โ†’โ‚›โ‚—[ฯƒโ‚โ‚‚] Mโ‚‚} (hv : Submodule.span R (Set.range v) = โŠค) (h : โˆ€ (i : ฮน), f (v i) = g (v i)) :
              f = g

              If the range of v : ฮน โ†’ M generates the whole module and linear maps f, g are equal at each v i, then they are equal.

              theorem LinearMap.span_singleton_sup_ker_eq_top {K : Type u_3} {V : Type u_6} [Field K] [AddCommGroup V] [Module K V] (f : V โ†’โ‚—[K] K) {x : V} (hx : f x โ‰  0) :
              K โˆ™ x โŠ” f.ker = โŠค
              noncomputable def LinearEquiv.toSpanNonzeroSingleton (R : Type u_1) (M : Type u_4) [Ring R] [IsDomain R] [AddCommGroup M] [Module R M] [Module.IsTorsionFree R M] (x : M) (h : x โ‰  0) :
              R โ‰ƒโ‚—[R] โ†ฅ(R โˆ™ x)

              Given a nonzero element x of a torsion-free module M over a ring R, the natural isomorphism from R to the span of x given by $r \mapsto r \cdot x$.

              Equations
                Instances For
                  @[simp]
                  theorem LinearEquiv.toSpanNonzeroSingleton_apply (R : Type u_1) (M : Type u_4) [Ring R] [IsDomain R] [AddCommGroup M] [Module R M] [Module.IsTorsionFree R M] (x : M) (h : x โ‰  0) (t : R) :
                  @[simp]
                  theorem LinearEquiv.toSpanNonzeroSingleton_symm_apply_smul (R : Type u_1) (M : Type u_4) [Ring R] [IsDomain R] [AddCommGroup M] [Module R M] [Module.IsTorsionFree R M] (x : M) (h : x โ‰  0) (m : โ†ฅ(R โˆ™ x)) :
                  (toSpanNonzeroSingleton R M x h).symm m โ€ข x = โ†‘m
                  @[reducible, inline]
                  noncomputable abbrev LinearEquiv.coord (R : Type u_1) (M : Type u_4) [Ring R] [IsDomain R] [AddCommGroup M] [Module R M] [Module.IsTorsionFree R M] (x : M) (h : x โ‰  0) :
                  โ†ฅ(R โˆ™ x) โ‰ƒโ‚—[R] R

                  Given a nonzero element x of a torsion-free module M over a ring R, the natural isomorphism from the span of x to R given by $r \cdot x \mapsto r$.

                  Equations
                    Instances For
                      theorem LinearEquiv.coord_self (R : Type u_1) (M : Type u_4) [Ring R] [IsDomain R] [AddCommGroup M] [Module R M] [Module.IsTorsionFree R M] (x : M) (h : x โ‰  0) :
                      (coord R M x h) โŸจx, โ‹ฏโŸฉ = 1
                      theorem LinearEquiv.coord_apply_smul (R : Type u_1) (M : Type u_4) [Ring R] [IsDomain R] [AddCommGroup M] [Module R M] [Module.IsTorsionFree R M] (x : M) (h : x โ‰  0) (y : โ†ฅ(R โˆ™ x)) :
                      (coord R M x h) y โ€ข x = โ†‘y