Supports of submonoids #
Let G be an (additive) group, and let M be a submonoid of G.
The support of M is M ∩ -M, the largest subgroup of M.
When M ∪ -M = G, the support of M forms an ideal.
We define supports and prove how they interact with operations.
Main definitions #
AddSubmonoid.supportAddSubgroup: the support of a submonoid as a subgroup.AddSubmonoid.support: the support of a submonoid as an ideal.AddSubmonoid.HasMemOrNegMem: typeclass for submonoids satisfyingM ∪ -M = G.
Typeclass for submonoids M of a group G such that M ∪ -M = G.
Instances
theorem
Submonoid.HasMemOrInvMem.of_le
{G : Type u_1}
[Group G]
{M N : Submonoid G}
[M.HasMemOrInvMem]
(h : M ≤ N)
:
theorem
AddSubmonoid.HasMemOrNegMem.of_le
{G : Type u_1}
[AddGroup G]
{M N : AddSubmonoid G}
[M.HasMemOrNegMem]
(h : M ≤ N)
:
The support of a submonoid M of a group G is M ∩ -M,
the largest subgroup contained in M.
Equations
Instances For
theorem
AddSubmonoid.mem_supportAddSubgroup
{G : Type u_1}
[AddGroup G]
{M : AddSubmonoid G}
{x : G}
:
Typeclass to track when the support of a submonoid forms an ideal.
Instances
theorem
AddSubmonoid.smul_mem
{R : Type u_1}
[Ring R]
(M : AddSubmonoid R)
[M.HasIdealSupport]
(x : R)
{a : R}
(h₁a : a ∈ M)
(h₂a : -a ∈ M)
:
theorem
AddSubmonoid.neg_smul_mem
{R : Type u_1}
[Ring R]
(M : AddSubmonoid R)
[M.HasIdealSupport]
(x : R)
{a : R}
(h₁a : a ∈ M)
(h₂a : -a ∈ M)
:
The support M ∩ -M of a submonoid M of a ring R, as an ideal.
Equations
- M.support = { toAddSubmonoid := M.supportAddSubgroup.toAddSubmonoid, smul_mem' := ⋯ }
Instances For
theorem
AddSubmonoid.mem_support
{R : Type u_1}
[Ring R]
{M : AddSubmonoid R}
[M.HasIdealSupport]
{x : R}
:
@[simp]
theorem
AddSubmonoid.supportAddSubgroup_eq
{R : Type u_1}
[Ring R]
(M : AddSubmonoid R)
[M.HasIdealSupport]
:
instance
Subsemiring.instHasIdealSupportToAddSubmonoidOfHasMemOrNegMem
{R : Type u_1}
[Ring R]
(M : Subsemiring R)
[M.toAddSubmonoid.HasMemOrNegMem]
:
@[simp]
theorem
Subsemiring.comap_toSubmonoid'
{R : Type u_1}
{S : Type u_2}
[Semiring R]
[Semiring S]
(f : R →+* S)
(Q : Subsemiring S)
:
@[simp]
theorem
Subsemiring.comap_toAddSubmonoid
{R : Type u_1}
{S : Type u_2}
[Semiring R]
[Semiring S]
(f : R →+* S)
(Q : Subsemiring S)
:
@[simp]
theorem
Subsemiring.map_toSubmonoid'
{R : Type u_1}
{S : Type u_2}
[Semiring R]
[Semiring S]
(f : R →+* S)
(P : Subsemiring R)
:
@[simp]
theorem
Subsemiring.map_toAddSubmonoid
{R : Type u_1}
{S : Type u_2}
[Semiring R]
[Semiring S]
(f : R →+* S)
(P : Subsemiring R)
:
theorem
AddSubmonoid.supportAddSubgroup_mono
{G : Type u_1}
[AddGroup G]
{M N : AddSubmonoid G}
(h : M ≤ N)
:
@[simp]
@[simp]
@[simp]
@[simp]
theorem
AddSubmonoid.supportAddSubgroup_sInf
{G : Type u_1}
[AddGroup G]
(s : Set (AddSubmonoid G))
:
instance
Submonoid.instHasMemOrInvMemComapMonoidHom
{G : Type u_1}
{H : Type u_2}
[Group G]
[Group H]
(f : G →* H)
(M' : Submonoid H)
[M'.HasMemOrInvMem]
:
(comap f M').HasMemOrInvMem
instance
AddSubmonoid.instHasMemOrNegMemComapAddMonoidHom
{G : Type u_1}
{H : Type u_2}
[AddGroup G]
[AddGroup H]
(f : G →+ H)
(M' : AddSubmonoid H)
[M'.HasMemOrNegMem]
:
(comap f M').HasMemOrNegMem
@[simp]
theorem
AddSubmonoid.comap_supportAddSubgroup
{G : Type u_1}
{H : Type u_2}
[AddGroup G]
[AddGroup H]
(f : G →+ H)
(M' : AddSubmonoid H)
:
theorem
Submonoid.HasMemOrNegMem.map
{G : Type u_1}
{H : Type u_2}
[Group G]
[Group H]
{f : G →* H}
(M : Submonoid G)
[M.HasMemOrInvMem]
(hf : Function.Surjective ⇑f)
:
(Submonoid.map f M).HasMemOrInvMem
theorem
AddSubmonoid.HasMemOrNegMem.map
{G : Type u_1}
{H : Type u_2}
[AddGroup G]
[AddGroup H]
{f : G →+ H}
(M : AddSubmonoid G)
[M.HasMemOrNegMem]
(hf : Function.Surjective ⇑f)
:
@[simp]
theorem
Submonoid.map_supportSubgroup
{G : Type u_1}
{H : Type u_2}
[CommGroup G]
[CommGroup H]
{f : G →* H}
{M : Submonoid G}
(hsupp : f.ker ≤ M.supportSubgroup)
:
@[simp]
theorem
AddSubmonoid.map_supportAddSubgroup
{G : Type u_1}
{H : Type u_2}
[AddCommGroup G]
[AddCommGroup H]
{f : G →+ H}
{M : AddSubmonoid G}
(hsupp : f.ker ≤ M.supportAddSubgroup)
:
theorem
AddSubmonoid.support_mono
{R : Type u_1}
[Ring R]
{M N : AddSubmonoid R}
[M.HasIdealSupport]
[N.HasIdealSupport]
(h : M ≤ N)
:
instance
AddSubmonoid.instHasIdealSupportMin
{R : Type u_1}
[Ring R]
(M N : AddSubmonoid R)
[M.HasIdealSupport]
[N.HasIdealSupport]
:
(M ⊓ N).HasIdealSupport
@[simp]
theorem
AddSubmonoid.support_inf
{R : Type u_1}
[Ring R]
(M N : AddSubmonoid R)
[M.HasIdealSupport]
[N.HasIdealSupport]
:
theorem
AddSubmonoid.HasIdealSupport.sInf
{R : Type u_1}
[Ring R]
{s : Set (AddSubmonoid R)}
(h : ∀ M ∈ s, M.HasIdealSupport)
:
@[simp]
theorem
AddSubmonoid.support_sInf
{R : Type u_1}
[Ring R]
{s : Set (AddSubmonoid R)}
(h : ∀ M ∈ s, M.HasIdealSupport)
:
@[simp]
theorem
AddSubmonoid.supportAddSubgroup_sSup
{R : Type u_1}
[Ring R]
{s : Set (AddSubmonoid R)}
(hsn : s.Nonempty)
(hsd : DirectedOn (fun (x1 x2 : AddSubmonoid R) => x1 ≤ x2) s)
:
theorem
AddSubmonoid.HasIdealSupport.sSup
{R : Type u_1}
[Ring R]
{s : Set (AddSubmonoid R)}
(hsn : s.Nonempty)
(hsd : DirectedOn (fun (x1 x2 : AddSubmonoid R) => x1 ≤ x2) s)
(h : ∀ M ∈ s, M.HasIdealSupport)
:
(sSup s).HasIdealSupport
@[simp]
theorem
AddSubmonoid.support_sSup
{R : Type u_1}
[Ring R]
{s : Set (AddSubmonoid R)}
(hsn : s.Nonempty)
(hsd : DirectedOn (fun (x1 x2 : AddSubmonoid R) => x1 ≤ x2) s)
(h : ∀ M ∈ s, M.HasIdealSupport)
:
instance
AddSubmonoid.instHasIdealSupportComapAddMonoidHomToAddMonoidHom
{R : Type u_1}
{S : Type u_2}
[Ring R]
[Ring S]
(f : R →+* S)
(M' : AddSubmonoid S)
[M'.HasIdealSupport]
:
(comap f.toAddMonoidHom M').HasIdealSupport
@[simp]
theorem
AddSubmonoid.comap_support
{R : Type u_1}
{S : Type u_2}
[Ring R]
[Ring S]
(f : R →+* S)
(M' : AddSubmonoid S)
[M'.HasIdealSupport]
:
theorem
AddSubmonoid.HasIdealSupport.map
{R : Type u_1}
{S : Type u_2}
[Ring R]
[Ring S]
{f : R →+* S}
{M : AddSubmonoid R}
[M.HasIdealSupport]
(hf : Function.Surjective ⇑f)
(hsupp : f.toAddMonoidHom.ker ≤ M.supportAddSubgroup)
:
@[simp]
theorem
AddSubmonoid.map_support
{R : Type u_1}
{S : Type u_2}
[Ring R]
[Ring S]
{f : R →+* S}
{M : AddSubmonoid R}
[M.HasIdealSupport]
(hf : Function.Surjective ⇑f)
(hsupp : f.toAddMonoidHom.ker ≤ M.supportAddSubgroup)
: