Documentation

Mathlib.RingTheory.Ideal.Colon

The colon ideal #

This file defines Submodule.colon N P as the ideal of all elements r : R such that r โ€ข P โІ N. The normal notation for this would be N : P which has already been taken by type theory.

def Submodule.colon {R : Type u_1} {M : Type u_2} [Semiring R] [AddCommMonoid M] [Module R M] (N : Submodule R M) (S : Set M) :

N.colon P is the ideal of all elements r : R such that r โ€ข P โІ N. We treat it as an infix in lemma names.

Equations
    Instances For
      theorem Submodule.mem_colon {R : Type u_1} {M : Type u_2} [Semiring R] [AddCommMonoid M] [Module R M] {N : Submodule R M} {S : Set M} {r : R} :
      r โˆˆ N.colon S โ†” โˆ€ s โˆˆ S, r โ€ข s โˆˆ N
      @[simp]
      theorem Submodule.mem_colon_singleton {R : Type u_1} {M : Type u_2} [Semiring R] [AddCommMonoid M] [Module R M] {N : Submodule R M} {x : M} {r : R} :
      @[instance 100]
      instance Submodule.instIsTwoSidedColonCoe {R : Type u_1} {M : Type u_2} [Semiring R] [AddCommMonoid M] [Module R M] {N : Submodule R M} (P : Submodule R M) :
      (N.colon โ†‘P).IsTwoSided
      @[deprecated Submodule.colon_univ (since := "2026-01-11")]
      theorem Submodule.colon_top {R : Type u_1} [Semiring R] {I : Ideal R} [I.IsTwoSided] :

      Alias of Submodule.colon_univ.

      @[simp]
      theorem Submodule.bot_colon {R : Type u_1} {M : Type u_2} [Semiring R] [AddCommMonoid M] [Module R M] {N : Submodule R M} :
      theorem Submodule.colon_mono {R : Type u_1} {M : Type u_2} [Semiring R] [AddCommMonoid M] [Module R M] {Nโ‚ Nโ‚‚ : Submodule R M} {Sโ‚ Sโ‚‚ : Set M} (hn : Nโ‚ โ‰ค Nโ‚‚) (hs : Sโ‚ โІ Sโ‚‚) :
      Nโ‚.colon Sโ‚‚ โ‰ค Nโ‚‚.colon Sโ‚
      theorem Submodule.iInf_colon_iUnion {R : Type u_1} {M : Type u_2} [Semiring R] [AddCommMonoid M] [Module R M] (ฮนโ‚ : Sort u_3) (f : ฮนโ‚ โ†’ Submodule R M) (ฮนโ‚‚ : Sort u_4) (g : ฮนโ‚‚ โ†’ Set M) :
      (โจ… (i : ฮนโ‚), f i).colon (โ‹ƒ (j : ฮนโ‚‚), g j) = โจ… (i : ฮนโ‚), โจ… (j : ฮนโ‚‚), (f i).colon (g j)
      @[deprecated Submodule.iInf_colon_iUnion (since := "2026-01-11")]
      theorem Submodule.iInf_colon_iSup {R : Type u_1} {M : Type u_2} [Semiring R] [AddCommMonoid M] [Module R M] (ฮนโ‚ : Sort u_3) (f : ฮนโ‚ โ†’ Submodule R M) (ฮนโ‚‚ : Sort u_4) (g : ฮนโ‚‚ โ†’ Set M) :
      (โจ… (i : ฮนโ‚), f i).colon (โ‹ƒ (j : ฮนโ‚‚), g j) = โจ… (i : ฮนโ‚), โจ… (j : ฮนโ‚‚), (f i).colon (g j)

      Alias of Submodule.iInf_colon_iUnion.

      theorem Submodule.colon_inf_eq_left_of_subset {R : Type u_1} {M : Type u_2} [Semiring R] [AddCommMonoid M] [Module R M] {Nโ‚ Nโ‚‚ : Submodule R M} {S : Set M} (h : S โІ โ†‘Nโ‚‚) :
      (Nโ‚ โŠ“ Nโ‚‚).colon S = Nโ‚.colon S

      If S โІ Nโ‚‚, then intersecting with Nโ‚‚ does not change the colon ideal.

      @[simp]
      theorem Submodule.colon_eq_top_iff_subset {R : Type u_1} {M : Type u_2} [Semiring R] [AddCommMonoid M] [Module R M] {N : Submodule R M} (S : Set M) :
      N.colon S = โŠค โ†” S โІ โ†‘N
      @[simp]
      theorem Submodule.inf_colon {R : Type u_1} {M : Type u_2} [Semiring R] [AddCommMonoid M] [Module R M] {Nโ‚ Nโ‚‚ : Submodule R M} {S : Set M} :
      (Nโ‚ โŠ“ Nโ‚‚).colon S = Nโ‚.colon S โŠ“ Nโ‚‚.colon S
      @[simp]
      theorem Submodule.iInf_colon {R : Type u_1} {M : Type u_2} [Semiring R] [AddCommMonoid M] [Module R M] {S : Set M} {ฮน : Sort u_3} (f : ฮน โ†’ Submodule R M) :
      (โจ… (i : ฮน), f i).colon S = โจ… (i : ฮน), (f i).colon S
      @[simp]
      theorem Submodule.colon_finsetInf {R : Type u_1} {M : Type u_2} [Semiring R] [AddCommMonoid M] [Module R M] {S : Set M} {ฮน : Type u_3} (s : Finset ฮน) (f : ฮน โ†’ Submodule R M) :
      (s.inf f).colon S = s.inf fun (i : ฮน) => (f i).colon S
      @[simp]
      theorem Submodule.top_colon {R : Type u_1} {M : Type u_2} [Semiring R] [AddCommMonoid M] [Module R M] {S : Set M} :
      @[simp]
      theorem Submodule.colon_union {R : Type u_1} {M : Type u_2} [Semiring R] [AddCommMonoid M] [Module R M] {N : Submodule R M} {Sโ‚ Sโ‚‚ : Set M} :
      N.colon (Sโ‚ โˆช Sโ‚‚) = N.colon Sโ‚ โŠ“ N.colon Sโ‚‚
      @[simp]
      theorem Submodule.colon_iUnion {R : Type u_1} {M : Type u_2} [Semiring R] [AddCommMonoid M] [Module R M] {N : Submodule R M} {ฮน : Sort u_3} (f : ฮน โ†’ Set M) :
      N.colon (โ‹ƒ (i : ฮน), f i) = โจ… (i : ฮน), N.colon (f i)
      @[simp]
      theorem Submodule.colon_empty {R : Type u_1} {M : Type u_2} [Semiring R] [AddCommMonoid M] [Module R M] {N : Submodule R M} :
      theorem Submodule.colon_bot {R : Type u_1} {M : Type u_2} [Semiring R] [AddCommMonoid M] [Module R M] {N : Submodule R M} :
      @[deprecated Submodule.mem_colon (since := "2026-01-15")]
      theorem Submodule.mem_colon' {R : Type u_1} {M : Type u_2} [CommSemiring R] [AddCommMonoid M] [Module R M] {N : Submodule R M} {S : Set M} {r : R} :
      theorem Submodule.mem_colon_iff_le {R : Type u_1} {M : Type u_2} [CommSemiring R] [AddCommMonoid M] [Module R M] {N N' : Submodule R M} {r : R} :
      r โˆˆ N.colon โ†‘N' โ†” r โ€ข N' โ‰ค N
      theorem Submodule.bot_colon' {R : Type u_1} {M : Type u_2} [CommSemiring R] [AddCommMonoid M] [Module R M] {S : Set M} :

      A variant for arbitrary sets in commutative semirings

      @[simp]
      theorem Submodule.colon_span {R : Type u_1} {M : Type u_2} [CommSemiring R] [AddCommMonoid M] [Module R M] {N : Submodule R M} {S : Set M} :
      N.colon โ†‘(span R S) = N.colon S
      @[simp]
      theorem Ideal.colon_span {R : Type u_1} [CommSemiring R] {I : Ideal R} {S : Set R} :
      theorem Submodule.mem_colon_span_singleton {R : Type u_1} {M : Type u_2} [CommSemiring R] [AddCommMonoid M] [Module R M] {N : Submodule R M} {x : M} {r : R} :
      r โˆˆ N.colon โ†‘(R โˆ™ x) โ†” r โ€ข x โˆˆ N
      @[simp]
      theorem Submodule.annihilator_map_mkQ_eq_colon {R : Type u_1} {M : Type u_2} [Ring R] [AddCommGroup M] [Module R M] {N P : Submodule R M} :
      (map N.mkQ P).annihilator = N.colon โ†‘P