Documentation

Mathlib.Algebra.Group.Subgroup.MulOpposite

Mul-opposite subgroups #

Tags #

subgroup, subgroups

theorem AddSubgroup.op.proof_1 {G : Type u_1} [AddGroup G] (H : AddSubgroup G) :
∀ {a b : Gᵃᵒᵖ}, a AddOpposite.unop ⁻¹' Hb AddOpposite.unop ⁻¹' HAddOpposite.unop b + AddOpposite.unop a H

Pull an additive subgroup back to an opposite additive subgroup along AddOpposite.unop

Equations
  • H.op = { carrier := AddOpposite.unop ⁻¹' H, add_mem' := , zero_mem' := , neg_mem' := }
Instances For
@[simp]
theorem Subgroup.op_coe {G : Type u_2} [Group G] (H : Subgroup G) :
H.op = MulOpposite.unop ⁻¹' H
@[simp]
theorem AddSubgroup.op_coe {G : Type u_2} [AddGroup G] (H : AddSubgroup G) :
H.op = AddOpposite.unop ⁻¹' H
def Subgroup.op {G : Type u_2} [Group G] (H : Subgroup G) :

Pull a subgroup back to an opposite subgroup along MulOpposite.unop

Equations
  • H.op = { carrier := MulOpposite.unop ⁻¹' H, mul_mem' := , one_mem' := , inv_mem' := }
Instances For
instance AddSubgroup.instVAdd {G : Type u_2} [AddGroup G] (H : AddSubgroup G) :
VAdd (↥H.op) G
Equations
  • H.instVAdd = H.op.vadd
instance Subgroup.instSMul {G : Type u_2} [Group G] (H : Subgroup G) :
SMul (↥H.op) G
Equations
  • H.instSMul = H.op.smul
@[simp]
theorem AddSubgroup.mem_op {G : Type u_2} [AddGroup G] {x : Gᵃᵒᵖ} {S : AddSubgroup G} :
@[simp]
theorem Subgroup.mem_op {G : Type u_2} [Group G] {x : Gᵐᵒᵖ} {S : Subgroup G} :
@[simp]
theorem AddSubgroup.op_toAddSubmonoid {G : Type u_2} [AddGroup G] (H : AddSubgroup G) :
H.op.toAddSubmonoid = H.op
@[simp]
theorem Subgroup.op_toSubmonoid {G : Type u_2} [Group G] (H : Subgroup G) :
H.op.toSubmonoid = H.op
theorem AddSubgroup.unop.proof_1 {G : Type u_1} [AddGroup G] (H : AddSubgroup Gᵃᵒᵖ) :
∀ {a b : G}, a AddOpposite.op ⁻¹' Hb AddOpposite.op ⁻¹' H{ unop' := b } + { unop' := a } H

Pull an opposite additive subgroup back to an additive subgroup along AddOpposite.op

Equations
  • H.unop = { carrier := AddOpposite.op ⁻¹' H, add_mem' := , zero_mem' := , neg_mem' := }
Instances For
@[simp]
theorem Subgroup.unop_coe {G : Type u_2} [Group G] (H : Subgroup Gᵐᵒᵖ) :
H.unop = MulOpposite.op ⁻¹' H
@[simp]
theorem AddSubgroup.unop_coe {G : Type u_2} [AddGroup G] (H : AddSubgroup Gᵃᵒᵖ) :
H.unop = AddOpposite.op ⁻¹' H
def Subgroup.unop {G : Type u_2} [Group G] (H : Subgroup Gᵐᵒᵖ) :

Pull an opposite subgroup back to a subgroup along MulOpposite.op

Equations
  • H.unop = { carrier := MulOpposite.op ⁻¹' H, mul_mem' := , one_mem' := , inv_mem' := }
Instances For
@[simp]
theorem AddSubgroup.mem_unop {G : Type u_2} [AddGroup G] {x : G} {S : AddSubgroup Gᵃᵒᵖ} :
x S.unop AddOpposite.op x S
@[simp]
theorem Subgroup.mem_unop {G : Type u_2} [Group G] {x : G} {S : Subgroup Gᵐᵒᵖ} :
x S.unop MulOpposite.op x S
@[simp]
theorem AddSubgroup.unop_toAddSubmonoid {G : Type u_2} [AddGroup G] (H : AddSubgroup Gᵃᵒᵖ) :
H.unop.toAddSubmonoid = H.unop
@[simp]
theorem Subgroup.unop_toSubmonoid {G : Type u_2} [Group G] (H : Subgroup Gᵐᵒᵖ) :
H.unop.toSubmonoid = H.unop
@[simp]
theorem AddSubgroup.unop_op {G : Type u_2} [AddGroup G] (S : AddSubgroup G) :
S.op.unop = S
@[simp]
theorem Subgroup.unop_op {G : Type u_2} [Group G] (S : Subgroup G) :
S.op.unop = S
@[simp]
theorem AddSubgroup.op_unop {G : Type u_2} [AddGroup G] (S : AddSubgroup Gᵃᵒᵖ) :
S.unop.op = S
@[simp]
theorem Subgroup.op_unop {G : Type u_2} [Group G] (S : Subgroup Gᵐᵒᵖ) :
S.unop.op = S

Lattice results #

theorem AddSubgroup.op_le_iff {G : Type u_2} [AddGroup G] {S₁ : AddSubgroup G} {S₂ : AddSubgroup Gᵃᵒᵖ} :
S₁.op S₂ S₁ S₂.unop
theorem Subgroup.op_le_iff {G : Type u_2} [Group G] {S₁ : Subgroup G} {S₂ : Subgroup Gᵐᵒᵖ} :
S₁.op S₂ S₁ S₂.unop
theorem AddSubgroup.le_op_iff {G : Type u_2} [AddGroup G] {S₁ : AddSubgroup Gᵃᵒᵖ} {S₂ : AddSubgroup G} :
S₁ S₂.op S₁.unop S₂
theorem Subgroup.le_op_iff {G : Type u_2} [Group G] {S₁ : Subgroup Gᵐᵒᵖ} {S₂ : Subgroup G} :
S₁ S₂.op S₁.unop S₂
@[simp]
theorem AddSubgroup.op_le_op_iff {G : Type u_2} [AddGroup G] {S₁ : AddSubgroup G} {S₂ : AddSubgroup G} :
S₁.op S₂.op S₁ S₂
@[simp]
theorem Subgroup.op_le_op_iff {G : Type u_2} [Group G] {S₁ : Subgroup G} {S₂ : Subgroup G} :
S₁.op S₂.op S₁ S₂
@[simp]
theorem AddSubgroup.unop_le_unop_iff {G : Type u_2} [AddGroup G] {S₁ : AddSubgroup Gᵃᵒᵖ} {S₂ : AddSubgroup Gᵃᵒᵖ} :
S₁.unop S₂.unop S₁ S₂
@[simp]
theorem Subgroup.unop_le_unop_iff {G : Type u_2} [Group G] {S₁ : Subgroup Gᵐᵒᵖ} {S₂ : Subgroup Gᵐᵒᵖ} :
S₁.unop S₂.unop S₁ S₂

An additive subgroup H of G determines an additive subgroup H.op of the opposite additive group Gᵃᵒᵖ.

Equations
  • AddSubgroup.opEquiv = { toFun := AddSubgroup.op, invFun := AddSubgroup.unop, left_inv := , right_inv := , map_rel_iff' := }
@[simp]
theorem AddSubgroup.opEquiv_apply {G : Type u_2} [AddGroup G] (H : AddSubgroup G) :
AddSubgroup.opEquiv H = H.op
@[simp]
theorem AddSubgroup.opEquiv_symm_apply {G : Type u_2} [AddGroup G] (H : AddSubgroup Gᵃᵒᵖ) :
(RelIso.symm AddSubgroup.opEquiv) H = H.unop
@[simp]
theorem Subgroup.opEquiv_apply {G : Type u_2} [Group G] (H : Subgroup G) :
Subgroup.opEquiv H = H.op
@[simp]
theorem Subgroup.opEquiv_symm_apply {G : Type u_2} [Group G] (H : Subgroup Gᵐᵒᵖ) :
(RelIso.symm Subgroup.opEquiv) H = H.unop

A subgroup H of G determines a subgroup H.op of the opposite group Gᵐᵒᵖ.

Equations
  • Subgroup.opEquiv = { toFun := Subgroup.op, invFun := Subgroup.unop, left_inv := , right_inv := , map_rel_iff' := }
theorem AddSubgroup.op_injective {G : Type u_2} [AddGroup G] :
Function.Injective AddSubgroup.op
theorem Subgroup.op_injective {G : Type u_2} [Group G] :
Function.Injective Subgroup.op
theorem AddSubgroup.unop_injective {G : Type u_2} [AddGroup G] :
Function.Injective AddSubgroup.unop
theorem Subgroup.unop_injective {G : Type u_2} [Group G] :
Function.Injective Subgroup.unop
@[simp]
theorem AddSubgroup.op_inj {G : Type u_2} [AddGroup G] {S : AddSubgroup G} {T : AddSubgroup G} :
S.op = T.op S = T
@[simp]
theorem Subgroup.op_inj {G : Type u_2} [Group G] {S : Subgroup G} {T : Subgroup G} :
S.op = T.op S = T
@[simp]
theorem AddSubgroup.unop_inj {G : Type u_2} [AddGroup G] {S : AddSubgroup Gᵃᵒᵖ} {T : AddSubgroup Gᵃᵒᵖ} :
S.unop = T.unop S = T
@[simp]
theorem Subgroup.unop_inj {G : Type u_2} [Group G] {S : Subgroup Gᵐᵒᵖ} {T : Subgroup Gᵐᵒᵖ} :
S.unop = T.unop S = T
@[simp]
theorem AddSubgroup.op_bot {G : Type u_2} [AddGroup G] :
.op =
@[simp]
theorem Subgroup.op_bot {G : Type u_2} [Group G] :
.op =
@[simp]
theorem AddSubgroup.op_eq_bot {G : Type u_2} [AddGroup G] {S : AddSubgroup G} :
S.op = S =
@[simp]
theorem Subgroup.op_eq_bot {G : Type u_2} [Group G] {S : Subgroup G} :
S.op = S =
@[simp]
theorem AddSubgroup.unop_bot {G : Type u_2} [AddGroup G] :
.unop =
@[simp]
theorem Subgroup.unop_bot {G : Type u_2} [Group G] :
.unop =
@[simp]
theorem AddSubgroup.unop_eq_bot {G : Type u_2} [AddGroup G] {S : AddSubgroup Gᵃᵒᵖ} :
S.unop = S =
@[simp]
theorem Subgroup.unop_eq_bot {G : Type u_2} [Group G] {S : Subgroup Gᵐᵒᵖ} :
S.unop = S =
@[simp]
theorem AddSubgroup.op_top {G : Type u_2} [AddGroup G] :
.op =
@[simp]
theorem Subgroup.op_top {G : Type u_2} [Group G] :
.op =
@[simp]
theorem AddSubgroup.op_eq_top {G : Type u_2} [AddGroup G] {S : AddSubgroup G} :
S.op = S =
@[simp]
theorem Subgroup.op_eq_top {G : Type u_2} [Group G] {S : Subgroup G} :
S.op = S =
@[simp]
theorem AddSubgroup.unop_top {G : Type u_2} [AddGroup G] :
.unop =
@[simp]
theorem Subgroup.unop_top {G : Type u_2} [Group G] :
.unop =
@[simp]
theorem AddSubgroup.unop_eq_top {G : Type u_2} [AddGroup G] {S : AddSubgroup Gᵃᵒᵖ} :
S.unop = S =
@[simp]
theorem Subgroup.unop_eq_top {G : Type u_2} [Group G] {S : Subgroup Gᵐᵒᵖ} :
S.unop = S =
theorem AddSubgroup.op_sup {G : Type u_2} [AddGroup G] (S₁ : AddSubgroup G) (S₂ : AddSubgroup G) :
(S₁ S₂).op = S₁.op S₂.op
theorem Subgroup.op_sup {G : Type u_2} [Group G] (S₁ : Subgroup G) (S₂ : Subgroup G) :
(S₁ S₂).op = S₁.op S₂.op
theorem AddSubgroup.unop_sup {G : Type u_2} [AddGroup G] (S₁ : AddSubgroup Gᵃᵒᵖ) (S₂ : AddSubgroup Gᵃᵒᵖ) :
(S₁ S₂).unop = S₁.unop S₂.unop
theorem Subgroup.unop_sup {G : Type u_2} [Group G] (S₁ : Subgroup Gᵐᵒᵖ) (S₂ : Subgroup Gᵐᵒᵖ) :
(S₁ S₂).unop = S₁.unop S₂.unop
theorem AddSubgroup.op_inf {G : Type u_2} [AddGroup G] (S₁ : AddSubgroup G) (S₂ : AddSubgroup G) :
(S₁ S₂).op = S₁.op S₂.op
theorem Subgroup.op_inf {G : Type u_2} [Group G] (S₁ : Subgroup G) (S₂ : Subgroup G) :
(S₁ S₂).op = S₁.op S₂.op
theorem AddSubgroup.unop_inf {G : Type u_2} [AddGroup G] (S₁ : AddSubgroup Gᵃᵒᵖ) (S₂ : AddSubgroup Gᵃᵒᵖ) :
(S₁ S₂).unop = S₁.unop S₂.unop
theorem Subgroup.unop_inf {G : Type u_2} [Group G] (S₁ : Subgroup Gᵐᵒᵖ) (S₂ : Subgroup Gᵐᵒᵖ) :
(S₁ S₂).unop = S₁.unop S₂.unop
theorem AddSubgroup.op_sSup {G : Type u_2} [AddGroup G] (S : Set (AddSubgroup G)) :
(sSup S).op = sSup (AddSubgroup.unop ⁻¹' S)
theorem Subgroup.op_sSup {G : Type u_2} [Group G] (S : Set (Subgroup G)) :
(sSup S).op = sSup (Subgroup.unop ⁻¹' S)
theorem AddSubgroup.unop_sSup {G : Type u_2} [AddGroup G] (S : Set (AddSubgroup Gᵃᵒᵖ)) :
(sSup S).unop = sSup (AddSubgroup.op ⁻¹' S)
theorem Subgroup.unop_sSup {G : Type u_2} [Group G] (S : Set (Subgroup Gᵐᵒᵖ)) :
(sSup S).unop = sSup (Subgroup.op ⁻¹' S)
theorem AddSubgroup.op_sInf {G : Type u_2} [AddGroup G] (S : Set (AddSubgroup G)) :
(sInf S).op = sInf (AddSubgroup.unop ⁻¹' S)
theorem Subgroup.op_sInf {G : Type u_2} [Group G] (S : Set (Subgroup G)) :
(sInf S).op = sInf (Subgroup.unop ⁻¹' S)
theorem AddSubgroup.unop_sInf {G : Type u_2} [AddGroup G] (S : Set (AddSubgroup Gᵃᵒᵖ)) :
(sInf S).unop = sInf (AddSubgroup.op ⁻¹' S)
theorem Subgroup.unop_sInf {G : Type u_2} [Group G] (S : Set (Subgroup Gᵐᵒᵖ)) :
(sInf S).unop = sInf (Subgroup.op ⁻¹' S)
theorem AddSubgroup.op_iSup {ι : Sort u_1} {G : Type u_2} [AddGroup G] (S : ιAddSubgroup G) :
(iSup S).op = ⨆ (i : ι), (S i).op
theorem Subgroup.op_iSup {ι : Sort u_1} {G : Type u_2} [Group G] (S : ιSubgroup G) :
(iSup S).op = ⨆ (i : ι), (S i).op
theorem AddSubgroup.unop_iSup {ι : Sort u_1} {G : Type u_2} [AddGroup G] (S : ιAddSubgroup Gᵃᵒᵖ) :
(iSup S).unop = ⨆ (i : ι), (S i).unop
theorem Subgroup.unop_iSup {ι : Sort u_1} {G : Type u_2} [Group G] (S : ιSubgroup Gᵐᵒᵖ) :
(iSup S).unop = ⨆ (i : ι), (S i).unop
theorem AddSubgroup.op_iInf {ι : Sort u_1} {G : Type u_2} [AddGroup G] (S : ιAddSubgroup G) :
(iInf S).op = ⨅ (i : ι), (S i).op
theorem Subgroup.op_iInf {ι : Sort u_1} {G : Type u_2} [Group G] (S : ιSubgroup G) :
(iInf S).op = ⨅ (i : ι), (S i).op
theorem AddSubgroup.unop_iInf {ι : Sort u_1} {G : Type u_2} [AddGroup G] (S : ιAddSubgroup Gᵃᵒᵖ) :
(iInf S).unop = ⨅ (i : ι), (S i).unop
theorem Subgroup.unop_iInf {ι : Sort u_1} {G : Type u_2} [Group G] (S : ιSubgroup Gᵐᵒᵖ) :
(iInf S).unop = ⨅ (i : ι), (S i).unop
theorem AddSubgroup.op_closure {G : Type u_2} [AddGroup G] (s : Set G) :
(AddSubgroup.closure s).op = AddSubgroup.closure (AddOpposite.unop ⁻¹' s)
theorem Subgroup.op_closure {G : Type u_2} [Group G] (s : Set G) :
(Subgroup.closure s).op = Subgroup.closure (MulOpposite.unop ⁻¹' s)
theorem AddSubgroup.unop_closure {G : Type u_2} [AddGroup G] (s : Set Gᵃᵒᵖ) :
(AddSubgroup.closure s).unop = AddSubgroup.closure (AddOpposite.op ⁻¹' s)
theorem Subgroup.unop_closure {G : Type u_2} [Group G] (s : Set Gᵐᵒᵖ) :
(Subgroup.closure s).unop = Subgroup.closure (MulOpposite.op ⁻¹' s)
theorem AddSubgroup.equivOp.proof_1 {G : Type u_1} [AddGroup G] (H : AddSubgroup G) :
∀ (x : G), x H x H
def AddSubgroup.equivOp {G : Type u_2} [AddGroup G] (H : AddSubgroup G) :
H H.op

Bijection between an additive subgroup H and its opposite.

Equations
  • H.equivOp = AddOpposite.opEquiv.subtypeEquiv
@[simp]
theorem AddSubgroup.equivOp_symm_apply_coe {G : Type u_2} [AddGroup G] (H : AddSubgroup G) (b : H.op) :
(H.equivOp.symm b) = AddOpposite.unop b
@[simp]
theorem Subgroup.equivOp_symm_apply_coe {G : Type u_2} [Group G] (H : Subgroup G) (b : H.op) :
(H.equivOp.symm b) = MulOpposite.unop b
@[simp]
theorem Subgroup.equivOp_apply_coe {G : Type u_2} [Group G] (H : Subgroup G) (a : H) :
(H.equivOp a) = MulOpposite.op a
@[simp]
theorem AddSubgroup.equivOp_apply_coe {G : Type u_2} [AddGroup G] (H : AddSubgroup G) (a : H) :
(H.equivOp a) = AddOpposite.op a
def Subgroup.equivOp {G : Type u_2} [Group G] (H : Subgroup G) :
H H.op

Bijection between a subgroup H and its opposite.

Equations
  • H.equivOp = MulOpposite.opEquiv.subtypeEquiv
Equations
Equations
Equations
  • =
Equations
  • =
theorem AddSubgroup.vadd_opposite_add {G : Type u_2} [AddGroup G] {H : AddSubgroup G} (x : G) (g : G) (h : H.op) :
h +ᵥ (g + x) = g + (h +ᵥ x)
theorem Subgroup.smul_opposite_mul {G : Type u_2} [Group G] {H : Subgroup G} (x : G) (g : G) (h : H.op) :
h (g * x) = g * h x
theorem AddSubgroup.op_normalizer {G : Type u_2} [AddGroup G] (H : AddSubgroup G) :
H.normalizer.op = H.op.normalizer
theorem Subgroup.op_normalizer {G : Type u_2} [Group G] (H : Subgroup G) :
H.normalizer.op = H.op.normalizer
theorem AddSubgroup.unop_normalizer {G : Type u_2} [AddGroup G] (H : AddSubgroup Gᵃᵒᵖ) :
H.normalizer.unop = H.unop.normalizer
theorem Subgroup.unop_normalizer {G : Type u_2} [Group G] (H : Subgroup Gᵐᵒᵖ) :
H.normalizer.unop = H.unop.normalizer
@[simp]
theorem AddSubgroup.normal_op {G : Type u_2} [AddGroup G] {H : AddSubgroup G} :
H.op.Normal H.Normal
@[simp]
theorem Subgroup.normal_op {G : Type u_2} [Group G] {H : Subgroup G} :
H.op.Normal H.Normal
theorem Subgroup.Normal.op {G : Type u_2} [Group G] {H : Subgroup G} :
H.NormalH.op.Normal

Alias of the reverse direction of Subgroup.normal_op.

theorem Subgroup.Normal.of_op {G : Type u_2} [Group G] {H : Subgroup G} :
H.op.NormalH.Normal

Alias of the forward direction of Subgroup.normal_op.

theorem AddSubgroup.Normal.op {G : Type u_2} [AddGroup G] {H : AddSubgroup G} :
H.NormalH.op.Normal
theorem AddSubgroup.Normal.of_op {G : Type u_2} [AddGroup G] {H : AddSubgroup G} :
H.op.NormalH.Normal
instance AddSubgroup.op.instNormal {G : Type u_2} [AddGroup G] {H : AddSubgroup G} [H.Normal] :
H.op.Normal
Equations
  • =
instance Subgroup.op.instNormal {G : Type u_2} [Group G] {H : Subgroup G} [H.Normal] :
H.op.Normal
Equations
  • =
@[simp]
theorem AddSubgroup.normal_unop {G : Type u_2} [AddGroup G] {H : AddSubgroup Gᵃᵒᵖ} :
H.unop.Normal H.Normal
@[simp]
theorem Subgroup.normal_unop {G : Type u_2} [Group G] {H : Subgroup Gᵐᵒᵖ} :
H.unop.Normal H.Normal
theorem Subgroup.Normal.unop {G : Type u_2} [Group G] {H : Subgroup Gᵐᵒᵖ} :
H.NormalH.unop.Normal

Alias of the reverse direction of Subgroup.normal_unop.

theorem Subgroup.Normal.of_unop {G : Type u_2} [Group G] {H : Subgroup Gᵐᵒᵖ} :
H.unop.NormalH.Normal

Alias of the forward direction of Subgroup.normal_unop.

theorem AddSubgroup.Normal.unop {G : Type u_2} [AddGroup G] {H : AddSubgroup Gᵃᵒᵖ} :
H.NormalH.unop.Normal
theorem AddSubgroup.Normal.of_unop {G : Type u_2} [AddGroup G] {H : AddSubgroup Gᵃᵒᵖ} :
H.unop.NormalH.Normal
instance AddSubgroup.unop.instNormal {G : Type u_2} [AddGroup G] {H : AddSubgroup Gᵃᵒᵖ} [H.Normal] :
H.unop.Normal
Equations
  • =
instance Subgroup.unop.instNormal {G : Type u_2} [Group G] {H : Subgroup Gᵐᵒᵖ} [H.Normal] :
H.unop.Normal
Equations
  • =