ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Subgroup.op_coe
@[to_additive (attr := simps)
"Pull an additive subgroup back to an opposite additive subgroup along `AddOpposite.unop`"]
protected def op (H : Subgroup G) : Subgroup Gᵐᵒᵖ 
Arguments: {G : Type u_2} [Group G] (H : Subgroup G)
Goal: ↑H.op = MulOpposite.unop ⁻¹' ↑H
-- AddSubgroup.mem_op
@[to_additive (attr := simp)]
theorem mem_op {x : Gᵐᵒᵖ} {S : Subgroup G} : x ∈ S.op ↔ x.unop ∈ S 
Arguments: {G : Type u_2} [AddGroup G] {x : Gᵃᵒᵖ} {S : AddSubgroup G}
Goal: x ∈ S.op ↔ AddOpposite.unop x ∈ S
-- Subgroup.mem_op
@[to_additive (attr := simp)]
theorem mem_op {x : Gᵐᵒᵖ} {S : Subgroup G} : x ∈ S.op ↔ x.unop ∈ S 
Arguments: {G : Type u_2} [Group G] {x : Gᵐᵒᵖ} {S : Subgroup G}
Goal: x ∈ S.op ↔ MulOpposite.unop x ∈ S
-- Subgroup.op_toSubmonoid
@[to_additive (attr := simp)] lemma op_toSubmonoid (H : Subgroup G) :
    H.op.toSubmonoid = H.toSubmonoid.op 
Arguments: {G : Type u_2} [Group G] (H : Subgroup G)
Goal: H.op.toSubmonoid = H.op
-- AddSubgroup.op_toAddSubmonoid
@[to_additive (attr := simp)] lemma op_toSubmonoid (H : Subgroup G) :
    H.op.toSubmonoid = H.toSubmonoid.op 
Arguments: {G : Type u_2} [AddGroup G] (H : AddSubgroup G)
Goal: H.op.toAddSubmonoid = H.op
-- Subgroup.unop_coe
@[to_additive (attr := simps)
"Pull an opposite additive subgroup back to an additive subgroup along `AddOpposite.op`"]
protected def unop (H : Subgroup Gᵐᵒᵖ) : Subgroup G 
Arguments: {G : Type u_2} [Group G] (H : Subgroup Gᵐᵒᵖ)
Goal: ↑H.unop = MulOpposite.op ⁻¹' ↑H
-- AddSubgroup.unop_coe
@[to_additive (attr := simps)
"Pull an opposite additive subgroup back to an additive subgroup along `AddOpposite.op`"]
protected def unop (H : Subgroup Gᵐᵒᵖ) : Subgroup G 
Arguments: {G : Type u_2} [AddGroup G] (H : AddSubgroup Gᵃᵒᵖ)
Goal: ↑H.unop = AddOpposite.op ⁻¹' ↑H
-- AddSubgroup.mem_unop
@[to_additive (attr := simp)]
theorem mem_unop {x : G} {S : Subgroup Gᵐᵒᵖ} : x ∈ S.unop ↔ MulOpposite.op x ∈ S 
Arguments: {G : Type u_2} [AddGroup G] {x : G} {S : AddSubgroup Gᵃᵒᵖ}
Goal: x ∈ S.unop ↔ AddOpposite.op x ∈ S
-- Subgroup.mem_unop
@[to_additive (attr := simp)]
theorem mem_unop {x : G} {S : Subgroup Gᵐᵒᵖ} : x ∈ S.unop ↔ MulOpposite.op x ∈ S 
Arguments: {G : Type u_2} [Group G] {x : G} {S : Subgroup Gᵐᵒᵖ}
Goal: x ∈ S.unop ↔ MulOpposite.op x ∈ S
-- Subgroup.unop_toSubmonoid
@[to_additive (attr := simp)] lemma unop_toSubmonoid (H : Subgroup Gᵐᵒᵖ) :
    H.unop.toSubmonoid = H.toSubmonoid.unop 
Arguments: {G : Type u_2} [Group G] (H : Subgroup Gᵐᵒᵖ)
Goal: H.unop.toSubmonoid = H.unop
-- AddSubgroup.unop_toAddSubmonoid
@[to_additive (attr := simp)] lemma unop_toSubmonoid (H : Subgroup Gᵐᵒᵖ) :
    H.unop.toSubmonoid = H.toSubmonoid.unop 
Arguments: {G : Type u_2} [AddGroup G] (H : AddSubgroup Gᵃᵒᵖ)
Goal: H.unop.toAddSubmonoid = H.unop
-- AddSubgroup.unop_op
@[to_additive (attr := simp)]
theorem unop_op (S : Subgroup G) : S.op.unop = S 
Arguments: {G : Type u_2} [AddGroup G] (S : AddSubgroup G)
Goal: S.op.unop = S
-- Subgroup.unop_op
@[to_additive (attr := simp)]
theorem unop_op (S : Subgroup G) : S.op.unop = S 
Arguments: {G : Type u_2} [Group G] (S : Subgroup G)
Goal: S.op.unop = S
-- AddSubgroup.op_unop
@[to_additive (attr := simp)]
theorem op_unop (S : Subgroup Gᵐᵒᵖ) : S.unop.op = S 
Arguments: {G : Type u_2} [AddGroup G] (S : AddSubgroup Gᵃᵒᵖ)
Goal: S.unop.op = S
-- Subgroup.op_unop
@[to_additive (attr := simp)]
theorem op_unop (S : Subgroup Gᵐᵒᵖ) : S.unop.op = S 
Arguments: {G : Type u_2} [Group G] (S : Subgroup Gᵐᵒᵖ)
Goal: S.unop.op = S
-- Subgroup.op_le_iff
@[to_additive]
theorem op_le_iff {S₁ : Subgroup G} {S₂ : Subgroup Gᵐᵒᵖ} : S₁.op ≤ S₂ ↔ S₁ ≤ S₂.unop 
Arguments: {G : Type u_2} [Group G] {S₁ : Subgroup G} {S₂ : Subgroup Gᵐᵒᵖ}
Goal: S₁.op ≤ S₂ ↔ S₁ ≤ S₂.unop
-- AddSubgroup.op_le_iff
@[to_additive]
theorem op_le_iff {S₁ : Subgroup G} {S₂ : Subgroup Gᵐᵒᵖ} : S₁.op ≤ S₂ ↔ S₁ ≤ S₂.unop 
Arguments: {G : Type u_2} [AddGroup G] {S₁ : AddSubgroup G} {S₂ : AddSubgroup Gᵃᵒᵖ}
Goal: S₁.op ≤ S₂ ↔ S₁ ≤ S₂.unop
-- AddSubgroup.le_op_iff
@[to_additive]
theorem le_op_iff {S₁ : Subgroup Gᵐᵒᵖ} {S₂ : Subgroup G} : S₁ ≤ S₂.op ↔ S₁.unop ≤ S₂ 
Arguments: {G : Type u_2} [AddGroup G] {S₁ : AddSubgroup Gᵃᵒᵖ} {S₂ : AddSubgroup G}
Goal: S₁ ≤ S₂.op ↔ S₁.unop ≤ S₂
-- Subgroup.le_op_iff
@[to_additive]
theorem le_op_iff {S₁ : Subgroup Gᵐᵒᵖ} {S₂ : Subgroup G} : S₁ ≤ S₂.op ↔ S₁.unop ≤ S₂ 
Arguments: {G : Type u_2} [Group G] {S₁ : Subgroup Gᵐᵒᵖ} {S₂ : Subgroup G}
Goal: S₁ ≤ S₂.op ↔ S₁.unop ≤ S₂
-- AddSubgroup.op_le_op_iff
@[to_additive (attr := simp)]
theorem op_le_op_iff {S₁ S₂ : Subgroup G} : S₁.op ≤ S₂.op ↔ S₁ ≤ S₂ 
Arguments: {G : Type u_2} [AddGroup G] {S₁ S₂ : AddSubgroup G}
Goal: S₁.op ≤ S₂.op ↔ S₁ ≤ S₂
-- Subgroup.op_le_op_iff
@[to_additive (attr := simp)]
theorem op_le_op_iff {S₁ S₂ : Subgroup G} : S₁.op ≤ S₂.op ↔ S₁ ≤ S₂ 
Arguments: {G : Type u_2} [Group G] {S₁ S₂ : Subgroup G}
Goal: S₁.op ≤ S₂.op ↔ S₁ ≤ S₂
-- AddSubgroup.unop_le_unop_iff
@[to_additive (attr := simp)]
theorem unop_le_unop_iff {S₁ S₂ : Subgroup Gᵐᵒᵖ} : S₁.unop ≤ S₂.unop ↔ S₁ ≤ S₂ 
Arguments: {G : Type u_2} [AddGroup G] {S₁ S₂ : AddSubgroup Gᵃᵒᵖ}
Goal: S₁.unop ≤ S₂.unop ↔ S₁ ≤ S₂
-- Subgroup.unop_le_unop_iff
@[to_additive (attr := simp)]
theorem unop_le_unop_iff {S₁ S₂ : Subgroup Gᵐᵒᵖ} : S₁.unop ≤ S₂.unop ↔ S₁ ≤ S₂ 
Arguments: {G : Type u_2} [Group G] {S₁ S₂ : Subgroup Gᵐᵒᵖ}
Goal: S₁.unop ≤ S₂.unop ↔ S₁ ≤ S₂
-- AddSubgroup.opEquiv_symm_apply
@[to_additive (attr := simps) "An additive subgroup `H` of `G` determines an additive subgroup
`H.op` of the opposite additive group `Gᵃᵒᵖ`."]
def opEquiv : Subgroup G ≃o Subgroup Gᵐᵒᵖ 
Arguments: {G : Type u_2} [AddGroup G] (H : AddSubgroup Gᵃᵒᵖ)
Goal: (RelIso.symm AddSubgroup.opEquiv) H = H.unop
-- AddSubgroup.opEquiv_apply
@[to_additive (attr := simps) "An additive subgroup `H` of `G` determines an additive subgroup
`H.op` of the opposite additive group `Gᵃᵒᵖ`."]
def opEquiv : Subgroup G ≃o Subgroup Gᵐᵒᵖ 
Arguments: {G : Type u_2} [AddGroup G] (H : AddSubgroup G)
Goal: AddSubgroup.opEquiv H = H.op
-- Subgroup.opEquiv_symm_apply
@[to_additive (attr := simps) "An additive subgroup `H` of `G` determines an additive subgroup
`H.op` of the opposite additive group `Gᵃᵒᵖ`."]
def opEquiv : Subgroup G ≃o Subgroup Gᵐᵒᵖ 
Arguments: {G : Type u_2} [Group G] (H : Subgroup Gᵐᵒᵖ)
Goal: (RelIso.symm Subgroup.opEquiv) H = H.unop
-- Subgroup.opEquiv_apply
@[to_additive (attr := simps) "An additive subgroup `H` of `G` determines an additive subgroup
`H.op` of the opposite additive group `Gᵃᵒᵖ`."]
def opEquiv : Subgroup G ≃o Subgroup Gᵐᵒᵖ 
Arguments: {G : Type u_2} [Group G] (H : Subgroup G)
Goal: Subgroup.opEquiv H = H.op
-- AddSubgroup.op_bot
@[to_additive (attr := simp)]
theorem op_bot : (⊥ : Subgroup G).op = ⊥ 
Arguments: {G : Type u_2} [AddGroup G]
Goal: ⊥.op = ⊥
-- Subgroup.op_bot
@[to_additive (attr := simp)]
theorem op_bot : (⊥ : Subgroup G).op = ⊥ 
Arguments: {G : Type u_2} [Group G]
Goal: ⊥.op = ⊥
-- Subgroup.unop_bot
@[to_additive (attr := simp)]
theorem unop_bot : (⊥ : Subgroup Gᵐᵒᵖ).unop = ⊥ 
Arguments: {G : Type u_2} [Group G]
Goal: ⊥.unop = ⊥
-- AddSubgroup.unop_bot
@[to_additive (attr := simp)]
theorem unop_bot : (⊥ : Subgroup Gᵐᵒᵖ).unop = ⊥ 
Arguments: {G : Type u_2} [AddGroup G]
Goal: ⊥.unop = ⊥
-- Subgroup.op_top
@[to_additive (attr := simp)]
theorem op_top : (⊤ : Subgroup G).op = ⊤ 
Arguments: {G : Type u_2} [Group G]
Goal: ⊤.op = ⊤
-- AddSubgroup.op_top
@[to_additive (attr := simp)]
theorem op_top : (⊤ : Subgroup G).op = ⊤ 
Arguments: {G : Type u_2} [AddGroup G]
Goal: ⊤.op = ⊤
-- AddSubgroup.unop_top
@[to_additive (attr := simp)]
theorem unop_top : (⊤ : Subgroup Gᵐᵒᵖ).unop = ⊤ 
Arguments: {G : Type u_2} [AddGroup G]
Goal: ⊤.unop = ⊤
-- Subgroup.unop_top
@[to_additive (attr := simp)]
theorem unop_top : (⊤ : Subgroup Gᵐᵒᵖ).unop = ⊤ 
Arguments: {G : Type u_2} [Group G]
Goal: ⊤.unop = ⊤
-- Subgroup.op_sup
@[to_additive]
theorem op_sup (S₁ S₂ : Subgroup G) : (S₁ ⊔ S₂).op = S₁.op ⊔ S₂.op 
Arguments: {G : Type u_2} [Group G] (S₁ S₂ : Subgroup G)
Goal: (S₁ ⊔ S₂).op = S₁.op ⊔ S₂.op
-- AddSubgroup.op_sup
@[to_additive]
theorem op_sup (S₁ S₂ : Subgroup G) : (S₁ ⊔ S₂).op = S₁.op ⊔ S₂.op 
Arguments: {G : Type u_2} [AddGroup G] (S₁ S₂ : AddSubgroup G)
Goal: (S₁ ⊔ S₂).op = S₁.op ⊔ S₂.op
-- Subgroup.unop_sup
@[to_additive]
theorem unop_sup (S₁ S₂ : Subgroup Gᵐᵒᵖ) : (S₁ ⊔ S₂).unop = S₁.unop ⊔ S₂.unop 
Arguments: {G : Type u_2} [Group G] (S₁ S₂ : Subgroup Gᵐᵒᵖ)
Goal: (S₁ ⊔ S₂).unop = S₁.unop ⊔ S₂.unop
-- AddSubgroup.unop_sup
@[to_additive]
theorem unop_sup (S₁ S₂ : Subgroup Gᵐᵒᵖ) : (S₁ ⊔ S₂).unop = S₁.unop ⊔ S₂.unop 
Arguments: {G : Type u_2} [AddGroup G] (S₁ S₂ : AddSubgroup Gᵃᵒᵖ)
Goal: (S₁ ⊔ S₂).unop = S₁.unop ⊔ S₂.unop
-- Subgroup.op_inf
@[to_additive]
theorem op_inf (S₁ S₂ : Subgroup G) : (S₁ ⊓ S₂).op = S₁.op ⊓ S₂.op 
Arguments: {G : Type u_2} [Group G] (S₁ S₂ : Subgroup G)
Goal: (S₁ ⊓ S₂).op = S₁.op ⊓ S₂.op
-- AddSubgroup.op_inf
@[to_additive]
theorem op_inf (S₁ S₂ : Subgroup G) : (S₁ ⊓ S₂).op = S₁.op ⊓ S₂.op 
Arguments: {G : Type u_2} [AddGroup G] (S₁ S₂ : AddSubgroup G)
Goal: (S₁ ⊓ S₂).op = S₁.op ⊓ S₂.op
-- AddSubgroup.unop_inf
@[to_additive]
theorem unop_inf (S₁ S₂ : Subgroup Gᵐᵒᵖ) : (S₁ ⊓ S₂).unop = S₁.unop ⊓ S₂.unop 
Arguments: {G : Type u_2} [AddGroup G] (S₁ S₂ : AddSubgroup Gᵃᵒᵖ)
Goal: (S₁ ⊓ S₂).unop = S₁.unop ⊓ S₂.unop
-- Subgroup.unop_inf
@[to_additive]
theorem unop_inf (S₁ S₂ : Subgroup Gᵐᵒᵖ) : (S₁ ⊓ S₂).unop = S₁.unop ⊓ S₂.unop 
Arguments: {G : Type u_2} [Group G] (S₁ S₂ : Subgroup Gᵐᵒᵖ)
Goal: (S₁ ⊓ S₂).unop = S₁.unop ⊓ S₂.unop
-- AddSubgroup.op_sSup
@[to_additive]
theorem op_sSup (S : Set (Subgroup G)) : (sSup S).op = sSup (.unop ⁻¹' S) 
Arguments: {G : Type u_2} [AddGroup G] (S : Set (AddSubgroup G))
Goal: (sSup S).op = sSup (AddSubgroup.unop ⁻¹' S)
-- Subgroup.op_sSup
@[to_additive]
theorem op_sSup (S : Set (Subgroup G)) : (sSup S).op = sSup (.unop ⁻¹' S) 
Arguments: {G : Type u_2} [Group G] (S : Set (Subgroup G))
Goal: (sSup S).op = sSup (Subgroup.unop ⁻¹' S)
-- AddSubgroup.unop_sSup
@[to_additive]
theorem unop_sSup (S : Set (Subgroup Gᵐᵒᵖ)) : (sSup S).unop = sSup (.op ⁻¹' S) 
Arguments: {G : Type u_2} [AddGroup G] (S : Set (AddSubgroup Gᵃᵒᵖ))
Goal: (sSup S).unop = sSup (AddSubgroup.op ⁻¹' S)
-- Subgroup.unop_sSup
@[to_additive]
theorem unop_sSup (S : Set (Subgroup Gᵐᵒᵖ)) : (sSup S).unop = sSup (.op ⁻¹' S) 
Arguments: {G : Type u_2} [Group G] (S : Set (Subgroup Gᵐᵒᵖ))
Goal: (sSup S).unop = sSup (Subgroup.op ⁻¹' S)
-- Subgroup.op_sInf
@[to_additive]
theorem op_sInf (S : Set (Subgroup G)) : (sInf S).op = sInf (.unop ⁻¹' S) 
Arguments: {G : Type u_2} [Group G] (S : Set (Subgroup G))
Goal: (sInf S).op = sInf (Subgroup.unop ⁻¹' S)
-- AddSubgroup.op_sInf
@[to_additive]
theorem op_sInf (S : Set (Subgroup G)) : (sInf S).op = sInf (.unop ⁻¹' S) 
Arguments: {G : Type u_2} [AddGroup G] (S : Set (AddSubgroup G))
Goal: (sInf S).op = sInf (AddSubgroup.unop ⁻¹' S)
-- AddSubgroup.unop_sInf
@[to_additive]
theorem unop_sInf (S : Set (Subgroup Gᵐᵒᵖ)) : (sInf S).unop = sInf (.op ⁻¹' S) 
Arguments: {G : Type u_2} [AddGroup G] (S : Set (AddSubgroup Gᵃᵒᵖ))
Goal: (sInf S).unop = sInf (AddSubgroup.op ⁻¹' S)
-- Subgroup.unop_sInf
@[to_additive]
theorem unop_sInf (S : Set (Subgroup Gᵐᵒᵖ)) : (sInf S).unop = sInf (.op ⁻¹' S) 
Arguments: {G : Type u_2} [Group G] (S : Set (Subgroup Gᵐᵒᵖ))
Goal: (sInf S).unop = sInf (Subgroup.op ⁻¹' S)
-- Subgroup.op_iSup
@[to_additive]
theorem op_iSup (S : ι → Subgroup G) : (iSup S).op = ⨆ i, (S i).op 
Arguments: {ι : Sort u_1} {G : Type u_2} [Group G] (S : ι → Subgroup G)
Goal: (iSup S).op = ⨆ i, (S i).op
-- AddSubgroup.op_iSup
@[to_additive]
theorem op_iSup (S : ι → Subgroup G) : (iSup S).op = ⨆ i, (S i).op 
Arguments: {ι : Sort u_1} {G : Type u_2} [AddGroup G] (S : ι → AddSubgroup G)
Goal: (iSup S).op = ⨆ i, (S i).op
-- Subgroup.unop_iSup
@[to_additive]
theorem unop_iSup (S : ι → Subgroup Gᵐᵒᵖ) : (iSup S).unop = ⨆ i, (S i).unop 
Arguments: {ι : Sort u_1} {G : Type u_2} [Group G] (S : ι → Subgroup Gᵐᵒᵖ)
Goal: (iSup S).unop = ⨆ i, (S i).unop
-- AddSubgroup.unop_iSup
@[to_additive]
theorem unop_iSup (S : ι → Subgroup Gᵐᵒᵖ) : (iSup S).unop = ⨆ i, (S i).unop 
Arguments: {ι : Sort u_1} {G : Type u_2} [AddGroup G] (S : ι → AddSubgroup Gᵃᵒᵖ)
Goal: (iSup S).unop = ⨆ i, (S i).unop
-- Subgroup.op_iInf
@[to_additive]
theorem op_iInf (S : ι → Subgroup G) : (iInf S).op = ⨅ i, (S i).op 
Arguments: {ι : Sort u_1} {G : Type u_2} [Group G] (S : ι → Subgroup G)
Goal: (iInf S).op = ⨅ i, (S i).op
-- AddSubgroup.op_iInf
@[to_additive]
theorem op_iInf (S : ι → Subgroup G) : (iInf S).op = ⨅ i, (S i).op 
Arguments: {ι : Sort u_1} {G : Type u_2} [AddGroup G] (S : ι → AddSubgroup G)
Goal: (iInf S).op = ⨅ i, (S i).op
-- AddSubgroup.unop_iInf
@[to_additive]
theorem unop_iInf (S : ι → Subgroup Gᵐᵒᵖ) : (iInf S).unop = ⨅ i, (S i).unop 
Arguments: {ι : Sort u_1} {G : Type u_2} [AddGroup G] (S : ι → AddSubgroup Gᵃᵒᵖ)
Goal: (iInf S).unop = ⨅ i, (S i).unop
-- Subgroup.unop_iInf
@[to_additive]
theorem unop_iInf (S : ι → Subgroup Gᵐᵒᵖ) : (iInf S).unop = ⨅ i, (S i).unop 
Arguments: {ι : Sort u_1} {G : Type u_2} [Group G] (S : ι → Subgroup Gᵐᵒᵖ)
Goal: (iInf S).unop = ⨅ i, (S i).unop
-- AddSubgroup.op_closure
@[to_additive]
theorem op_closure (s : Set G) : (closure s).op = closure (MulOpposite.unop ⁻¹' s) 
Arguments: {G : Type u_2} [AddGroup G] (s : Set G)
Goal: (AddSubgroup.closure s).op = AddSubgroup.closure (AddOpposite.unop ⁻¹' s)
-- Subgroup.op_closure
@[to_additive]
theorem op_closure (s : Set G) : (closure s).op = closure (MulOpposite.unop ⁻¹' s) 
Arguments: {G : Type u_2} [Group G] (s : Set G)
Goal: (Subgroup.closure s).op = Subgroup.closure (MulOpposite.unop ⁻¹' s)
-- Subgroup.unop_closure
@[to_additive]
theorem unop_closure (s : Set Gᵐᵒᵖ) : (closure s).unop = closure (MulOpposite.op ⁻¹' s) 
Arguments: {G : Type u_2} [Group G] (s : Set Gᵐᵒᵖ)
Goal: (Subgroup.closure s).unop = Subgroup.closure (MulOpposite.op ⁻¹' s)
-- AddSubgroup.unop_closure
@[to_additive]
theorem unop_closure (s : Set Gᵐᵒᵖ) : (closure s).unop = closure (MulOpposite.op ⁻¹' s) 
Arguments: {G : Type u_2} [AddGroup G] (s : Set Gᵃᵒᵖ)
Goal: (AddSubgroup.closure s).unop = AddSubgroup.closure (AddOpposite.op ⁻¹' s)
-- AddSubgroup.equivOp_symm_apply_coe
@[to_additive (attr := simps!) "Bijection between an additive subgroup `H` and its opposite."]
def equivOp (H : Subgroup G) : H ≃ H.op 
Arguments: {G : Type u_2} [AddGroup G] (H : AddSubgroup G) (b : { b // (fun x => x ∈ H.op) b })
Goal: ↑(H.equivOp.symm b) = AddOpposite.unop ↑b
-- AddSubgroup.equivOp_apply_coe
@[to_additive (attr := simps!) "Bijection between an additive subgroup `H` and its opposite."]
def equivOp (H : Subgroup G) : H ≃ H.op 
Arguments: {G : Type u_2} [AddGroup G] (H : AddSubgroup G) (a : { a // (fun x => x ∈ H) a })
Goal: ↑(H.equivOp a) = AddOpposite.op ↑a
-- Subgroup.equivOp_symm_apply_coe
@[to_additive (attr := simps!) "Bijection between an additive subgroup `H` and its opposite."]
def equivOp (H : Subgroup G) : H ≃ H.op 
Arguments: {G : Type u_2} [Group G] (H : Subgroup G) (b : { b // (fun x => x ∈ H.op) b })
Goal: ↑(H.equivOp.symm b) = MulOpposite.unop ↑b
-- Subgroup.equivOp_apply_coe
@[to_additive (attr := simps!) "Bijection between an additive subgroup `H` and its opposite."]
def equivOp (H : Subgroup G) : H ≃ H.op 
Arguments: {G : Type u_2} [Group G] (H : Subgroup G) (a : { a // (fun x => x ∈ H) a })
Goal: ↑(H.equivOp a) = MulOpposite.op ↑a
-- Subgroup.smul_opposite_mul
@[to_additive]
theorem smul_opposite_mul {H : Subgroup G} (x g : G) (h : H.op) :
    h • (g * x) = g * h • x 
Arguments: {G : Type u_2} [Group G] {H : Subgroup G} (x g : G) (h : ↥H.op)
Goal: h • (g * x) = g * h • x
-- AddSubgroup.vadd_opposite_add
@[to_additive]
theorem smul_opposite_mul {H : Subgroup G} (x g : G) (h : H.op) :
    h • (g * x) = g * h • x 
Arguments: {G : Type u_2} [AddGroup G] {H : AddSubgroup G} (x g : G) (h : ↥H.op)
Goal: h +ᵥ (g + x) = g + (h +ᵥ x)
-- abs_mem_iff
@[simp] theorem abs_mem_iff {S G} [AddGroup G] [LinearOrder G] {_ : SetLike S G}
    [NegMemClass S G] {H : S} {x : G} : |x| ∈ H ↔ x ∈ H 
Arguments: {S : Type u_1} {G : Type u_2} [AddGroup G] [LinearOrder G]
Goal: ∀ {x : SetLike S G} [inst : NegMemClass S G] {H : S} {x_1 : G}, |x_1| ∈ H ↔ x_1 ∈ H
-- Subgroup.NormalizerCondition.normal_of_coatom
theorem NormalizerCondition.normal_of_coatom (hnc : NormalizerCondition G) (hmax : IsCoatom H) :
    H.Normal 
Arguments: {G : Type u_1} [Group G] (H : Subgroup G) (hnc : NormalizerCondition G) (hmax : IsCoatom H)
Goal: H.Normal
-- Subgroup.isCoatom_comap
@[simp]
theorem isCoatom_comap {H : Type*} [Group H] (f : G ≃* H) {K : Subgroup H} :
    IsCoatom (Subgroup.comap (f : G →* H) K) ↔ IsCoatom K 
Arguments: {G : Type u_1} [Group G] {H : Type u_2} [Group H] (f : G ≃* H) {K : Subgroup H}
Goal: IsCoatom (Subgroup.comap (↑f) K) ↔ IsCoatom K
-- Subgroup.isCoatom_map
@[simp]
theorem isCoatom_map (f : G ≃* H) {K : Subgroup G} :
    IsCoatom (Subgroup.map (f : G →* H) K) ↔ IsCoatom K 
Arguments: {G : Type u_1} [Group G] (H : Subgroup G) (f : G ≃* ↥H) {K : Subgroup G}
Goal: IsCoatom (Subgroup.map (↑f) K) ↔ IsCoatom K
-- Subgroup.isCoatom_comap_of_surjective
lemma isCoatom_comap_of_surjective
    {H : Type*} [Group H] {φ : G →* H} (hφ : Function.Surjective φ)
    {M : Subgroup H} (hM : IsCoatom M) : IsCoatom (M.comap φ) 
Arguments: {G : Type u_1} [Group G] {H : Type u_2} [Group H] {φ : G →* H} (hφ : Function.Surjective ⇑φ) {M : Subgroup H} (hM : IsCoatom M)
Goal: IsCoatom (Subgroup.comap φ M)
-- SemiconjBy.map
@[to_additive (attr := simp)]
protected theorem SemiconjBy.map [MulHomClass F M N] (h : SemiconjBy a x y) (f : F) :
    SemiconjBy (f a) (f x) (f y) 
Arguments: {F : Type u_1} {M : Type u_2} {N : Type u_3} [Mul M] [Mul N] {a x y : M} [FunLike F M N] [MulHomClass F M N] (h : SemiconjBy a x y) (f : F)
Goal: SemiconjBy (f a) (f x) (f y)
-- AddSemiconjBy.map
@[to_additive (attr := simp)]
protected theorem SemiconjBy.map [MulHomClass F M N] (h : SemiconjBy a x y) (f : F) :
    SemiconjBy (f a) (f x) (f y) 
Arguments: {F : Type u_1} {M : Type u_2} {N : Type u_3} [Add M] [Add N] {a x y : M} [FunLike F M N] [AddHomClass F M N] (h : AddSemiconjBy a x y) (f : F)
Goal: AddSemiconjBy (f a) (f x) (f y)
-- Commute.map
@[to_additive (attr := simp)]
protected theorem Commute.map [MulHomClass F M N] (h : Commute x y) (f : F) : Commute (f x) (f y) 
Arguments: {F : Type u_1} {M : Type u_2} {N : Type u_3} [Mul M] [Mul N] {x y : M} [FunLike F M N] [MulHomClass F M N] (h : Commute x y) (f : F)
Goal: Commute (f x) (f y)
-- AddCommute.map
@[to_additive (attr := simp)]
protected theorem Commute.map [MulHomClass F M N] (h : Commute x y) (f : F) : Commute (f x) (f y) 
Arguments: {F : Type u_1} {M : Type u_2} {N : Type u_3} [Add M] [Add N] {x y : M} [FunLike F M N] [AddHomClass F M N] (h : AddCommute x y) (f : F)
Goal: AddCommute (f x) (f y)
-- SemiconjBy.of_map
@[to_additive (attr := simp)]
protected theorem SemiconjBy.of_map [MulHomClass F M N] (f : F) (hf : Function.Injective f)
    (h : SemiconjBy (f a) (f x) (f y)) : SemiconjBy a x y 
Arguments: {F : Type u_1} {M : Type u_2} {N : Type u_3} [Mul M] [Mul N] {a x y : M} [FunLike F M N] [MulHomClass F M N] (f : F) (hf : Function.Injective ⇑f) (h : SemiconjBy (f a) (f x) (f y))
Goal: SemiconjBy a x y
-- AddSemiconjBy.of_map
@[to_additive (attr := simp)]
protected theorem SemiconjBy.of_map [MulHomClass F M N] (f : F) (hf : Function.Injective f)
    (h : SemiconjBy (f a) (f x) (f y)) : SemiconjBy a x y 
Arguments: {F : Type u_1} {M : Type u_2} {N : Type u_3} [Add M] [Add N] {a x y : M} [FunLike F M N] [AddHomClass F M N] (f : F) (hf : Function.Injective ⇑f) (h : AddSemiconjBy (f a) (f x) (f y))
Goal: AddSemiconjBy a x y
-- AddCommute.of_map
@[to_additive (attr := simp)]
theorem Commute.of_map [MulHomClass F M N] {f : F} (hf : Function.Injective f)
    (h : Commute (f x) (f y)) : Commute x y 
Arguments: {F : Type u_1} {M : Type u_2} {N : Type u_3} [Add M] [Add N] {x y : M} [FunLike F M N] [AddHomClass F M N] {f : F} (hf : Function.Injective ⇑f) (h : AddCommute (f x) (f y))
Goal: AddCommute x y
-- Commute.of_map
@[to_additive (attr := simp)]
theorem Commute.of_map [MulHomClass F M N] {f : F} (hf : Function.Injective f)
    (h : Commute (f x) (f y)) : Commute x y 
Arguments: {F : Type u_1} {M : Type u_2} {N : Type u_3} [Mul M] [Mul N] {x y : M} [FunLike F M N] [MulHomClass F M N] {f : F} (hf : Function.Injective ⇑f) (h : Commute (f x) (f y))
Goal: Commute x y
-- Commute.inv_inv
@[to_additive]
protected theorem inv_inv : Commute a b → Commute a⁻¹ b⁻¹ 
Arguments: {G : Type u_1} [DivisionMonoid G] {a b : G}
Goal: Commute a b → Commute a⁻¹ b⁻¹
-- AddCommute.neg_neg
@[to_additive]
protected theorem inv_inv : Commute a b → Commute a⁻¹ b⁻¹ 
Arguments: {G : Type u_1} [SubtractionMonoid G] {a b : G}
Goal: AddCommute a b → AddCommute (-a) (-b)
-- AddCommute.neg_neg_iff
@[to_additive (attr := simp)]
theorem inv_inv_iff : Commute a⁻¹ b⁻¹ ↔ Commute a b 
Arguments: {G : Type u_1} [SubtractionMonoid G] {a b : G}
Goal: AddCommute (-a) (-b) ↔ AddCommute a b
-- Commute.inv_inv_iff
@[to_additive (attr := simp)]
theorem inv_inv_iff : Commute a⁻¹ b⁻¹ ↔ Commute a b 
Arguments: {G : Type u_1} [DivisionMonoid G] {a b : G}
Goal: Commute a⁻¹ b⁻¹ ↔ Commute a b
-- Commute.div_mul_div_comm
@[to_additive]
protected theorem div_mul_div_comm (hbd : Commute b d) (hbc : Commute b⁻¹ c) :
    a / b * (c / d) = a * c / (b * d) 
Arguments: {G : Type u_1} [DivisionMonoid G] {a b c d : G} (hbd : Commute b d) (hbc : Commute b⁻¹ c)
Goal: a / b * (c / d) = a * c / (b * d)
-- AddCommute.sub_add_sub_comm
@[to_additive]
protected theorem div_mul_div_comm (hbd : Commute b d) (hbc : Commute b⁻¹ c) :
    a / b * (c / d) = a * c / (b * d) 
Arguments: {G : Type u_1} [SubtractionMonoid G] {a b c d : G} (hbd : AddCommute b d) (hbc : AddCommute (-b) c)
Goal: a - b + (c - d) = a + c - (b + d)
-- AddCommute.add_sub_add_comm
@[to_additive]
protected theorem mul_div_mul_comm (hcd : Commute c d) (hbc : Commute b c⁻¹) :
    a * b / (c * d) = a / c * (b / d) 
Arguments: {G : Type u_1} [SubtractionMonoid G] {a b c d : G} (hcd : AddCommute c d) (hbc : AddCommute b (-c))
Goal: a + b - (c + d) = a - c + (b - d)
-- Commute.mul_div_mul_comm
@[to_additive]
protected theorem mul_div_mul_comm (hcd : Commute c d) (hbc : Commute b c⁻¹) :
    a * b / (c * d) = a / c * (b / d) 
Arguments: {G : Type u_1} [DivisionMonoid G] {a b c d : G} (hcd : Commute c d) (hbc : Commute b c⁻¹)
Goal: a * b / (c * d) = a / c * (b / d)
-- Commute.div_div_div_comm
@[to_additive]
protected theorem div_div_div_comm (hbc : Commute b c) (hbd : Commute b⁻¹ d) (hcd : Commute c⁻¹ d) :
    a / b / (c / d) = a / c / (b / d) 
Arguments: {G : Type u_1} [DivisionMonoid G] {a b c d : G} (hbc : Commute b c) (hbd : Commute b⁻¹ d) (hcd : Commute c⁻¹ d)
Goal: a / b / (c / d) = a / c / (b / d)
-- AddCommute.sub_sub_sub_comm
@[to_additive]
protected theorem div_div_div_comm (hbc : Commute b c) (hbd : Commute b⁻¹ d) (hcd : Commute c⁻¹ d) :
    a / b / (c / d) = a / c / (b / d) 
Arguments: {G : Type u_1} [SubtractionMonoid G] {a b c d : G} (hbc : AddCommute b c) (hbd : AddCommute (-b) d) (hcd : AddCommute (-c) d)
Goal: a - b - (c - d) = a - c - (b - d)
-- Commute.inv_left_iff
@[to_additive (attr := simp)]
lemma inv_left_iff : Commute a⁻¹ b ↔ Commute a b 
Arguments: {G : Type u_1} [Group G] {a b : G}
Goal: Commute a⁻¹ b ↔ Commute a b
-- AddCommute.neg_left_iff
@[to_additive (attr := simp)]
lemma inv_left_iff : Commute a⁻¹ b ↔ Commute a b 
Arguments: {G : Type u_1} [AddGroup G] {a b : G}
Goal: AddCommute (-a) b ↔ AddCommute a b
-- AddCommute.neg_right_iff
@[to_additive (attr := simp)]
lemma inv_right_iff : Commute a b⁻¹ ↔ Commute a b 
Arguments: {G : Type u_1} [AddGroup G] {a b : G}
Goal: AddCommute a (-b) ↔ AddCommute a b
-- Commute.inv_right_iff
@[to_additive (attr := simp)]
lemma inv_right_iff : Commute a b⁻¹ ↔ Commute a b 
Arguments: {G : Type u_1} [Group G] {a b : G}
Goal: Commute a b⁻¹ ↔ Commute a b
-- Commute.inv_mul_cancel
@[to_additive]
protected lemma inv_mul_cancel (h : Commute a b) : a⁻¹ * b * a = b 
Arguments: {G : Type u_1} [Group G] {a b : G} (h : Commute a b)
Goal: a⁻¹ * b * a = b
-- AddCommute.neg_add_cancel
@[to_additive]
protected lemma inv_mul_cancel (h : Commute a b) : a⁻¹ * b * a = b 
Arguments: {G : Type u_1} [AddGroup G] {a b : G} (h : AddCommute a b)
Goal: -a + b + a = b
-- AddCommute.neg_add_cancel_assoc
@[to_additive]
lemma inv_mul_cancel_assoc (h : Commute a b) : a⁻¹ * (b * a) = b 
Arguments: {G : Type u_1} [AddGroup G] {a b : G} (h : AddCommute a b)
Goal: -a + (b + a) = b