Documentation

Mathlib.Algebra.Module.Submodule.Pointwise

Pointwise instances on Submodules #

This file provides:

and the actions

which matches the action of Set.mulActionSet.

This file also provides:

These actions are available in the Pointwise locale.

Implementation notes #

For an R-module M, the action of a subset of R acting on a submodule of M introduced in section set_acting_on_submodules does not have a counterpart in the files Mathlib/Algebra/Group/Submonoid/Pointwise.lean and Mathlib/Algebra/GroupWithZero/Submonoid/Pointwise.lean.

Other than section set_acting_on_submodules, most of the lemmas in this file are direct copies of lemmas from the file Mathlib/Algebra/Group/Submonoid/Pointwise.lean.

def Submodule.pointwiseNeg {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommGroup M] [Module R M] :

The submodule with every element negated. Note if R is a ring and not just a semiring, this is a no-op, as shown by Submodule.neg_eq_self.

Recall that When R is the semiring corresponding to the nonnegative elements of R', Submodule R' M is the type of cones of M. This instance reflects such cones about 0.

This is available as an instance in the Pointwise locale.

Equations
    Instances For
      @[simp]
      theorem Submodule.coe_set_neg {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommGroup M] [Module R M] (S : Submodule R M) :
      ↑(-S) = -↑S
      @[simp]
      theorem Submodule.mem_neg {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommGroup M] [Module R M] {g : M} {S : Submodule R M} :

      Submodule.pointwiseNeg is involutive.

      This is available as an instance in the Pointwise locale.

      Equations
        Instances For
          @[simp]
          theorem Submodule.neg_le_neg {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommGroup M] [Module R M] (S T : Submodule R M) :
          theorem Submodule.neg_le {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommGroup M] [Module R M] (S T : Submodule R M) :
          def Submodule.negOrderIso {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommGroup M] [Module R M] :

          Submodule.pointwiseNeg as an order isomorphism.

          Equations
            Instances For
              theorem Submodule.span_neg_eq_neg {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommGroup M] [Module R M] (s : Set M) :
              span R (-s) = -span R s
              @[simp]
              theorem Submodule.neg_inf {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommGroup M] [Module R M] (S T : Submodule R M) :
              -(S βŠ“ T) = -S βŠ“ -T
              @[simp]
              theorem Submodule.neg_sup {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommGroup M] [Module R M] (S T : Submodule R M) :
              -(S βŠ” T) = -S βŠ” -T
              @[simp]
              theorem Submodule.neg_bot {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommGroup M] [Module R M] :
              @[simp]
              theorem Submodule.neg_top {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommGroup M] [Module R M] :
              @[simp]
              theorem Submodule.neg_iInf {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommGroup M] [Module R M] {ΞΉ : Sort u_4} (S : ΞΉ β†’ Submodule R M) :
              -β¨… (i : ΞΉ), S i = β¨… (i : ΞΉ), -S i
              @[simp]
              theorem Submodule.neg_iSup {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommGroup M] [Module R M] {ΞΉ : Sort u_4} (S : ΞΉ β†’ Submodule R M) :
              -⨆ (i : ΞΉ), S i = ⨆ (i : ΞΉ), -S i
              @[simp]
              theorem Submodule.neg_eq_self {R : Type u_2} {M : Type u_3} [Ring R] [AddCommGroup M] [Module R M] (p : Submodule R M) :
              -p = p
              instance Submodule.pointwiseZero {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] :
              Equations
                instance Submodule.pointwiseAdd {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] :
                Equations
                  @[simp]
                  theorem Submodule.add_eq_sup {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] (p q : Submodule R M) :
                  p + q = p βŠ” q
                  @[simp]
                  theorem Submodule.zero_eq_bot {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] :
                  def Submodule.pointwiseDistribMulAction {Ξ± : Type u_1} {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] [Monoid Ξ±] [DistribMulAction Ξ± M] [SMulCommClass Ξ± R M] :

                  The action on a submodule corresponding to applying the action to every element.

                  This is available as an instance in the Pointwise locale.

                  Equations
                    Instances For
                      @[simp]
                      theorem Submodule.coe_pointwise_smul {Ξ± : Type u_1} {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] [Monoid Ξ±] [DistribMulAction Ξ± M] [SMulCommClass Ξ± R M] (a : Ξ±) (S : Submodule R M) :
                      ↑(a β€’ S) = a β€’ ↑S
                      @[simp]
                      theorem Submodule.pointwise_smul_toAddSubmonoid {Ξ± : Type u_1} {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] [Monoid Ξ±] [DistribMulAction Ξ± M] [SMulCommClass Ξ± R M] (a : Ξ±) (S : Submodule R M) :
                      @[simp]
                      theorem Submodule.pointwise_smul_toAddSubgroup {Ξ± : Type u_1} [Monoid Ξ±] {R : Type u_4} {M : Type u_5} [Ring R] [AddCommGroup M] [DistribMulAction Ξ± M] [Module R M] [SMulCommClass Ξ± R M] (a : Ξ±) (S : Submodule R M) :
                      theorem Submodule.mem_smul_pointwise_iff_exists {Ξ± : Type u_1} {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] [Monoid Ξ±] [DistribMulAction Ξ± M] [SMulCommClass Ξ± R M] (m : M) (a : Ξ±) (S : Submodule R M) :
                      m ∈ a β€’ S ↔ βˆƒ b ∈ S, a β€’ b = m
                      theorem Submodule.smul_mem_pointwise_smul {Ξ± : Type u_1} {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] [Monoid Ξ±] [DistribMulAction Ξ± M] [SMulCommClass Ξ± R M] (m : M) (a : Ξ±) (S : Submodule R M) :
                      m ∈ S β†’ a β€’ m ∈ a β€’ S
                      @[simp]
                      theorem Submodule.smul_bot' {Ξ± : Type u_1} {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] [Monoid Ξ±] [DistribMulAction Ξ± M] [SMulCommClass Ξ± R M] (a : Ξ±) :

                      See also Submodule.smul_bot.

                      theorem Submodule.smul_sup' {Ξ± : Type u_1} {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] [Monoid Ξ±] [DistribMulAction Ξ± M] [SMulCommClass Ξ± R M] (a : Ξ±) (S T : Submodule R M) :
                      a β€’ (S βŠ” T) = a β€’ S βŠ” a β€’ T

                      See also Submodule.smul_sup.

                      theorem Submodule.smul_iSup' {Ξ± : Type u_1} {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] [Monoid Ξ±] [DistribMulAction Ξ± M] [SMulCommClass Ξ± R M] (a : Ξ±) {ΞΉ : Sort u_4} (f : ΞΉ β†’ Submodule R M) :
                      a β€’ ⨆ (i : ΞΉ), f i = ⨆ (i : ΞΉ), a β€’ f i

                      See also Submodule.smul_iSup.

                      theorem Submodule.smul_span {Ξ± : Type u_1} {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] [Monoid Ξ±] [DistribMulAction Ξ± M] [SMulCommClass Ξ± R M] (a : Ξ±) (s : Set M) :
                      a β€’ span R s = span R (a β€’ s)
                      theorem Submodule.smul_def {Ξ± : Type u_1} {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] [Monoid Ξ±] [DistribMulAction Ξ± M] [SMulCommClass Ξ± R M] (a : Ξ±) (S : Submodule R M) :
                      a β€’ S = span R (a β€’ ↑S)
                      theorem Submodule.span_smul {Ξ± : Type u_1} {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] [Monoid Ξ±] [DistribMulAction Ξ± M] [SMulCommClass Ξ± R M] (a : Ξ±) (s : Set M) :
                      span R (a β€’ s) = a β€’ span R s
                      @[simp]
                      theorem Submodule.smul_le_self_of_tower {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] {Ξ± : Type u_4} [Monoid Ξ±] [SMul Ξ± R] [DistribMulAction Ξ± M] [SMulCommClass Ξ± R M] [IsScalarTower Ξ± R M] (a : Ξ±) (S : Submodule R M) :
                      def Submodule.pointwiseMulActionWithZero {Ξ± : Type u_1} {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] [Semiring Ξ±] [Module Ξ± M] [SMulCommClass Ξ± R M] :

                      The action on a submodule corresponding to applying the action to every element.

                      This is available as an instance in the Pointwise locale.

                      This is a stronger version of Submodule.pointwiseDistribMulAction. Note that add_smul does not hold so this cannot be stated as a Module.

                      Equations
                        Instances For

                          Sets acting on Submodules #

                          Let R be a (semi)ring and M an R-module. Let S be a monoid which acts on M distributively, then subsets of S can act on submodules of M. For subset s βŠ† S and submodule N ≀ M, we define s β€’ N to be the smallest submodule containing all r β€’ n where r ∈ s and n ∈ N.

                          Results #

                          For arbitrary monoids S acting distributively on M, there is an induction principle for s β€’ N: To prove P holds for all s β€’ N, it is enough to prove:

                          To invoke this induction principle, use induction x, hx using Submodule.set_smul_inductionOn where x : M and hx : x ∈ s β€’ N

                          When we consider subset of R acting on M

                          Notes #

                          def Submodule.pointwiseSetSMul {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] {S : Type u_4} [Monoid S] [DistribMulAction S M] :
                          SMul (Set S) (Submodule R M)

                          Let s βŠ† R be a set and N ≀ M be a submodule, then s β€’ N is the smallest submodule containing all r β€’ n where r ∈ s and n ∈ N.

                          Equations
                            Instances For
                              theorem Submodule.mem_set_smul_def {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] {S : Type u_4} [Monoid S] [DistribMulAction S M] (s : Set S) (N : Submodule R M) (x : M) :
                              x ∈ s β€’ N ↔ x ∈ sInf {p : Submodule R M | βˆ€ ⦃r : S⦄ {n : M}, r ∈ s β†’ n ∈ N β†’ r β€’ n ∈ p}
                              theorem Submodule.mem_set_smul_of_mem_mem {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] {S : Type u_4} [Monoid S] [DistribMulAction S M] {s : Set S} {N : Submodule R M} {r : S} {m : M} (mem1 : r ∈ s) (mem2 : m ∈ N) :
                              theorem Submodule.set_smul_le {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] {S : Type u_4} [Monoid S] [DistribMulAction S M] (s : Set S) (N p : Submodule R M) (closed_under_smul : βˆ€ ⦃r : S⦄ ⦃n : M⦄, r ∈ s β†’ n ∈ N β†’ r β€’ n ∈ p) :
                              theorem Submodule.set_smul_le_iff {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] {S : Type u_4} [Monoid S] [DistribMulAction S M] (s : Set S) (N p : Submodule R M) :
                              s β€’ N ≀ p ↔ βˆ€ ⦃r : S⦄ ⦃n : M⦄, r ∈ s β†’ n ∈ N β†’ r β€’ n ∈ p
                              theorem Submodule.set_smul_eq_of_le {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] {S : Type u_4} [Monoid S] [DistribMulAction S M] (s : Set S) (N p : Submodule R M) (closed_under_smul : βˆ€ ⦃r : S⦄ ⦃n : M⦄, r ∈ s β†’ n ∈ N β†’ r β€’ n ∈ p) (le : p ≀ s β€’ N) :
                              s β€’ N = p
                              theorem Submodule.set_smul_mono_left {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] {S : Type u_4} [Monoid S] [DistribMulAction S M] (N : Submodule R M) {s t : Set S} (le : s ≀ t) :
                              theorem Submodule.set_smul_le_of_le_le {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] {S : Type u_4} [Monoid S] [DistribMulAction S M] {s t : Set S} {p q : Submodule R M} (le_set : s ≀ t) (le_submodule : p ≀ q) :
                              theorem Submodule.set_smul_eq_iSup {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] {S : Type u_4} [Monoid S] [DistribMulAction S M] [SMulCommClass S R M] (s : Set S) (N : Submodule R M) :
                              s β€’ N = ⨆ a ∈ s, a β€’ N
                              theorem Submodule.set_smul_span {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] {S : Type u_4} [Monoid S] [DistribMulAction S M] [SMulCommClass S R M] (s : Set S) (t : Set M) :
                              s β€’ span R t = span R (s β€’ t)
                              theorem Submodule.span_set_smul {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] {S : Type u_4} [Monoid S] [DistribMulAction S M] [SMulCommClass S R M] (s : Set S) (t : Set M) :
                              span R (s β€’ t) = s β€’ span R t
                              theorem Submodule.set_smul_inductionOn {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] {S : Type u_4} [Monoid S] [DistribMulAction S M] {s : Set S} {N : Submodule R M} {motive : (x : M) β†’ x ∈ s β€’ N β†’ Prop} (x : M) (hx : x ∈ s β€’ N) (smulβ‚€ : βˆ€ ⦃r : S⦄ ⦃n : M⦄ (mem₁ : r ∈ s) (memβ‚‚ : n ∈ N), motive (r β€’ n) β‹―) (smul₁ : βˆ€ (r : R) ⦃m : M⦄ (mem : m ∈ s β€’ N), motive m mem β†’ motive (r β€’ m) β‹―) (add : βˆ€ ⦃m₁ mβ‚‚ : M⦄ (mem₁ : m₁ ∈ s β€’ N) (memβ‚‚ : mβ‚‚ ∈ s β€’ N), motive m₁ mem₁ β†’ motive mβ‚‚ memβ‚‚ β†’ motive (m₁ + mβ‚‚) β‹―) (zero : motive 0 β‹―) :
                              motive x hx

                              Induction principle for set acting on submodules. To prove P holds for all s β€’ N, it is enough to prove:

                              • for all r ∈ s and n ∈ N, P (r β€’ n);
                              • for all r and m ∈ s β€’ N, P (r β€’ n);
                              • for all m₁, mβ‚‚, P m₁ and P mβ‚‚ implies P (m₁ + mβ‚‚);
                              • P 0.

                              To invoke this induction principle, use induction x, hx using Submodule.set_smul_inductionOn where x : M and hx : x ∈ s β€’ N

                              theorem Submodule.set_smul_eq_map {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] (sR : Set R) (N : Submodule R M) [SMulCommClass R R β†₯N] :
                              theorem Submodule.mem_set_smul {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] (sR : Set R) (N : Submodule R M) (x : M) [SMulCommClass R R β†₯N] :
                              x ∈ sR β€’ N ↔ βˆƒ (c : R β†’β‚€ β†₯N), ↑c.support βŠ† sR ∧ x = ↑(c.sum fun (r : R) (m : β†₯N) => r β€’ m)
                              @[simp]
                              theorem Submodule.empty_set_smul {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] {S : Type u_4} [Monoid S] [DistribMulAction S M] (N : Submodule R M) :
                              @[simp]
                              theorem Submodule.set_smul_bot {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] {S : Type u_4} [Monoid S] [DistribMulAction S M] (s : Set S) :
                              theorem Submodule.singleton_set_smul {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] {S : Type u_4} [Monoid S] [DistribMulAction S M] (N : Submodule R M) [SMulCommClass S R M] (r : S) :
                              theorem Submodule.mem_singleton_set_smul {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] {S : Type u_4} [Monoid S] [DistribMulAction S M] (N : Submodule R M) [SMulCommClass R S M] (r : S) (x : M) :
                              x ∈ {r} β€’ N ↔ βˆƒ m ∈ N, x = r β€’ m
                              theorem Submodule.smul_inductionOn_pointwise {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] {S : Type u_4} [Monoid S] [DistribMulAction S M] (N : Submodule R M) [SMulCommClass S R M] {a : S} {p : (x : M) β†’ x ∈ a β€’ N β†’ Prop} (smulβ‚€ : βˆ€ (s : M) (hs : s ∈ N), p (a β€’ s) β‹―) (smul₁ : βˆ€ (r : R) (m : M) (mem : m ∈ a β€’ N), p m mem β†’ p (r β€’ m) β‹―) (add : βˆ€ (x y : M) (hx : x ∈ a β€’ N) (hy : y ∈ a β€’ N), p x hx β†’ p y hy β†’ p (x + y) β‹―) (zero : p 0 β‹―) {x : M} (hx : x ∈ a β€’ N) :
                              p x hx
                              noncomputable def Submodule.pointwiseSetMulAction {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] [SMulCommClass R R M] :

                              A subset of a ring R has a multiplicative action on submodules of a module over R.

                              Equations
                                Instances For
                                  noncomputable def Submodule.pointwiseSetDistribMulAction {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] [SMulCommClass R R M] :

                                  In a ring, sets acts on submodules.

                                  Equations
                                    Instances For
                                      theorem Submodule.sup_set_smul {R : Type u_2} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] {S : Type u_4} [Monoid S] [DistribMulAction S M] (N : Submodule R M) (s t : Set S) :
                                      (s βŠ” t) β€’ N = s β€’ N βŠ” t β€’ N