ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- AddSubmonoid.unop_sSup
@[to_additive]
theorem unop_sSup (S : Set (Submonoid Mᵐᵒᵖ)) : (sSup S).unop = sSup (.op ⁻¹' S) 
Arguments: {M : Type u_2} [AddZeroClass M] (S : Set (AddSubmonoid Mᵃᵒᵖ))
Goal: (sSup S).unop = sSup (AddSubmonoid.op ⁻¹' S)
-- Submonoid.unop_sSup
@[to_additive]
theorem unop_sSup (S : Set (Submonoid Mᵐᵒᵖ)) : (sSup S).unop = sSup (.op ⁻¹' S) 
Arguments: {M : Type u_2} [MulOneClass M] (S : Set (Submonoid Mᵐᵒᵖ))
Goal: (sSup S).unop = sSup (Submonoid.op ⁻¹' S)
-- Submonoid.op_sInf
@[to_additive]
theorem op_sInf (S : Set (Submonoid M)) : (sInf S).op = sInf (.unop ⁻¹' S) 
Arguments: {M : Type u_2} [MulOneClass M] (S : Set (Submonoid M))
Goal: (sInf S).op = sInf (Submonoid.unop ⁻¹' S)
-- AddSubmonoid.op_sInf
@[to_additive]
theorem op_sInf (S : Set (Submonoid M)) : (sInf S).op = sInf (.unop ⁻¹' S) 
Arguments: {M : Type u_2} [AddZeroClass M] (S : Set (AddSubmonoid M))
Goal: (sInf S).op = sInf (AddSubmonoid.unop ⁻¹' S)
-- AddSubmonoid.unop_sInf
@[to_additive]
theorem unop_sInf (S : Set (Submonoid Mᵐᵒᵖ)) : (sInf S).unop = sInf (.op ⁻¹' S) 
Arguments: {M : Type u_2} [AddZeroClass M] (S : Set (AddSubmonoid Mᵃᵒᵖ))
Goal: (sInf S).unop = sInf (AddSubmonoid.op ⁻¹' S)
-- Submonoid.unop_sInf
@[to_additive]
theorem unop_sInf (S : Set (Submonoid Mᵐᵒᵖ)) : (sInf S).unop = sInf (.op ⁻¹' S) 
Arguments: {M : Type u_2} [MulOneClass M] (S : Set (Submonoid Mᵐᵒᵖ))
Goal: (sInf S).unop = sInf (Submonoid.op ⁻¹' S)
-- AddSubmonoid.op_iSup
@[to_additive]
theorem op_iSup (S : ι → Submonoid M) : (iSup S).op = ⨆ i, (S i).op 
Arguments: {ι : Sort u_1} {M : Type u_2} [AddZeroClass M] (S : ι → AddSubmonoid M)
Goal: (iSup S).op = ⨆ i, (S i).op
-- Submonoid.op_iSup
@[to_additive]
theorem op_iSup (S : ι → Submonoid M) : (iSup S).op = ⨆ i, (S i).op 
Arguments: {ι : Sort u_1} {M : Type u_2} [MulOneClass M] (S : ι → Submonoid M)
Goal: (iSup S).op = ⨆ i, (S i).op
-- AddSubmonoid.unop_iSup
@[to_additive]
theorem unop_iSup (S : ι → Submonoid Mᵐᵒᵖ) : (iSup S).unop = ⨆ i, (S i).unop 
Arguments: {ι : Sort u_1} {M : Type u_2} [AddZeroClass M] (S : ι → AddSubmonoid Mᵃᵒᵖ)
Goal: (iSup S).unop = ⨆ i, (S i).unop
-- Submonoid.unop_iSup
@[to_additive]
theorem unop_iSup (S : ι → Submonoid Mᵐᵒᵖ) : (iSup S).unop = ⨆ i, (S i).unop 
Arguments: {ι : Sort u_1} {M : Type u_2} [MulOneClass M] (S : ι → Submonoid Mᵐᵒᵖ)
Goal: (iSup S).unop = ⨆ i, (S i).unop
-- Submonoid.op_iInf
@[to_additive]
theorem op_iInf (S : ι → Submonoid M) : (iInf S).op = ⨅ i, (S i).op 
Arguments: {ι : Sort u_1} {M : Type u_2} [MulOneClass M] (S : ι → Submonoid M)
Goal: (iInf S).op = ⨅ i, (S i).op
-- AddSubmonoid.op_iInf
@[to_additive]
theorem op_iInf (S : ι → Submonoid M) : (iInf S).op = ⨅ i, (S i).op 
Arguments: {ι : Sort u_1} {M : Type u_2} [AddZeroClass M] (S : ι → AddSubmonoid M)
Goal: (iInf S).op = ⨅ i, (S i).op
-- Submonoid.unop_iInf
@[to_additive]
theorem unop_iInf (S : ι → Submonoid Mᵐᵒᵖ) : (iInf S).unop = ⨅ i, (S i).unop 
Arguments: {ι : Sort u_1} {M : Type u_2} [MulOneClass M] (S : ι → Submonoid Mᵐᵒᵖ)
Goal: (iInf S).unop = ⨅ i, (S i).unop
-- AddSubmonoid.unop_iInf
@[to_additive]
theorem unop_iInf (S : ι → Submonoid Mᵐᵒᵖ) : (iInf S).unop = ⨅ i, (S i).unop 
Arguments: {ι : Sort u_1} {M : Type u_2} [AddZeroClass M] (S : ι → AddSubmonoid Mᵃᵒᵖ)
Goal: (iInf S).unop = ⨅ i, (S i).unop
-- Submonoid.op_closure
@[to_additive]
theorem op_closure (s : Set M) : (closure s).op = closure (MulOpposite.unop ⁻¹' s) 
Arguments: {M : Type u_2} [MulOneClass M] (s : Set M)
Goal: (Submonoid.closure s).op = Submonoid.closure (MulOpposite.unop ⁻¹' s)
-- AddSubmonoid.op_closure
@[to_additive]
theorem op_closure (s : Set M) : (closure s).op = closure (MulOpposite.unop ⁻¹' s) 
Arguments: {M : Type u_2} [AddZeroClass M] (s : Set M)
Goal: (AddSubmonoid.closure s).op = AddSubmonoid.closure (AddOpposite.unop ⁻¹' s)
-- AddSubmonoid.unop_closure
@[to_additive]
theorem unop_closure (s : Set Mᵐᵒᵖ) : (closure s).unop = closure (MulOpposite.op ⁻¹' s) 
Arguments: {M : Type u_2} [AddZeroClass M] (s : Set Mᵃᵒᵖ)
Goal: (AddSubmonoid.closure s).unop = AddSubmonoid.closure (AddOpposite.op ⁻¹' s)
-- Submonoid.unop_closure
@[to_additive]
theorem unop_closure (s : Set Mᵐᵒᵖ) : (closure s).unop = closure (MulOpposite.op ⁻¹' s) 
Arguments: {M : Type u_2} [MulOneClass M] (s : Set Mᵐᵒᵖ)
Goal: (Submonoid.closure s).unop = Submonoid.closure (MulOpposite.op ⁻¹' s)
-- AddSubmonoid.equivOp_symm_apply_coe
@[to_additive (attr := simps!) "Bijection between an additive submonoid `H` and its opposite."]
def equivOp (H : Submonoid M) : H ≃ H.op 
Arguments: {M : Type u_2} [AddZeroClass M] (H : AddSubmonoid M) (b : { b // (fun x => x ∈ H.op) b })
Goal: ↑(H.equivOp.symm b) = AddOpposite.unop ↑b
-- AddSubmonoid.equivOp_apply_coe
@[to_additive (attr := simps!) "Bijection between an additive submonoid `H` and its opposite."]
def equivOp (H : Submonoid M) : H ≃ H.op 
Arguments: {M : Type u_2} [AddZeroClass M] (H : AddSubmonoid M) (a : { a // (fun x => x ∈ H) a })
Goal: ↑(H.equivOp a) = AddOpposite.op ↑a
-- Submonoid.equivOp_symm_apply_coe
@[to_additive (attr := simps!) "Bijection between an additive submonoid `H` and its opposite."]
def equivOp (H : Submonoid M) : H ≃ H.op 
Arguments: {M : Type u_2} [MulOneClass M] (H : Submonoid M) (b : { b // (fun x => x ∈ H.op) b })
Goal: ↑(H.equivOp.symm b) = MulOpposite.unop ↑b
-- Submonoid.equivOp_apply_coe
@[to_additive (attr := simps!) "Bijection between an additive submonoid `H` and its opposite."]
def equivOp (H : Submonoid M) : H ≃ H.op 
Arguments: {M : Type u_2} [MulOneClass M] (H : Submonoid M) (a : { a // (fun x => x ∈ H) a })
Goal: ↑(H.equivOp a) = MulOpposite.op ↑a
-- AddSubmonoid.addUnits_mono
@[to_additive]
lemma Submonoid.units_mono : Monotone (Submonoid.units (M := M)) 
Arguments: {M : Type u_1} [AddMonoid M]
Goal: Monotone AddSubmonoid.addUnits
-- Submonoid.units_mono
@[to_additive]
lemma Submonoid.units_mono : Monotone (Submonoid.units (M := M)) 
Arguments: {M : Type u_1} [Monoid M]
Goal: Monotone Submonoid.units
-- Submonoid.ofUnits_units_le
@[to_additive (attr := simp)]
lemma Submonoid.ofUnits_units_le (S : Submonoid M) : S.units.ofUnits ≤ S 
Arguments: {M : Type u_1} [Monoid M] (S : Submonoid M)
Goal: S.units.ofUnits ≤ S
-- AddSubmonoid.ofAddUnits_addUnits_le
@[to_additive (attr := simp)]
lemma Submonoid.ofUnits_units_le (S : Submonoid M) : S.units.ofUnits ≤ S 
Arguments: {M : Type u_1} [AddMonoid M] (S : AddSubmonoid M)
Goal: S.addUnits.ofAddUnits ≤ S
-- Subgroup.ofUnits_mono
@[to_additive]
lemma Subgroup.ofUnits_mono : Monotone (Subgroup.ofUnits (M := M)) 
Arguments: {M : Type u_1} [Monoid M]
Goal: Monotone Subgroup.ofUnits
-- AddSubgroup.ofAddUnits_mono
@[to_additive]
lemma Subgroup.ofUnits_mono : Monotone (Subgroup.ofUnits (M := M)) 
Arguments: {M : Type u_1} [AddMonoid M]
Goal: Monotone AddSubgroup.ofAddUnits
-- Subgroup.units_ofUnits_eq
@[to_additive (attr := simp)]
lemma Subgroup.units_ofUnits_eq (S : Subgroup Mˣ) : S.ofUnits.units = S 
Arguments: {M : Type u_1} [Monoid M] (S : Subgroup Mˣ)
Goal: S.ofUnits.units = S
-- AddSubgroup.addUnits_ofAddUnits_eq
@[to_additive (attr := simp)]
lemma Subgroup.units_ofUnits_eq (S : Subgroup Mˣ) : S.ofUnits.units = S 
Arguments: {M : Type u_1} [AddMonoid M] (S : AddSubgroup (AddUnits M))
Goal: S.ofAddUnits.addUnits = S
-- ofUnits_units_gc
@[to_additive]
lemma ofUnits_units_gc : GaloisConnection (Subgroup.ofUnits (M := M)) (Submonoid.units) 
Arguments: {M : Type u_1} [Monoid M]
Goal: GaloisConnection Subgroup.ofUnits Submonoid.units
-- ofAddUnits_addUnits_gc
@[to_additive]
lemma ofUnits_units_gc : GaloisConnection (Subgroup.ofUnits (M := M)) (Submonoid.units) 
Arguments: {M : Type u_1} [AddMonoid M]
Goal: GaloisConnection AddSubgroup.ofAddUnits AddSubmonoid.addUnits
-- ofUnits_le_iff_le_units
@[to_additive]
lemma ofUnits_le_iff_le_units (S : Submonoid M) (H : Subgroup Mˣ) :
    H.ofUnits ≤ S ↔ H ≤ S.units 
Arguments: {M : Type u_1} [Monoid M] (S : Submonoid M) (H : Subgroup Mˣ)
Goal: H.ofUnits ≤ S ↔ H ≤ S.units
-- ofAddUnits_le_iff_le_addUnits
@[to_additive]
lemma ofUnits_le_iff_le_units (S : Submonoid M) (H : Subgroup Mˣ) :
    H.ofUnits ≤ S ↔ H ≤ S.units 
Arguments: {M : Type u_1} [AddMonoid M] (S : AddSubmonoid M) (H : AddSubgroup (AddUnits M))
Goal: H.ofAddUnits ≤ S ↔ H ≤ S.addUnits
-- Submonoid.mem_units_iff
@[to_additive]
lemma mem_units_iff (S : Submonoid M) (x : Mˣ) : x ∈ S.units ↔
    ((x : M) ∈ S ∧ ((x⁻¹ : Mˣ) : M) ∈ S) 
Arguments: {M : Type u_1} [Monoid M] (S : Submonoid M) (x : Mˣ)
Goal: x ∈ S.units ↔ ↑x ∈ S ∧ ↑x⁻¹ ∈ S
-- AddSubmonoid.mem_addUnits_iff
@[to_additive]
lemma mem_units_iff (S : Submonoid M) (x : Mˣ) : x ∈ S.units ↔
    ((x : M) ∈ S ∧ ((x⁻¹ : Mˣ) : M) ∈ S) 
Arguments: {M : Type u_1} [AddMonoid M] (S : AddSubmonoid M) (x : AddUnits M)
Goal: x ∈ S.addUnits ↔ ↑x ∈ S ∧ ↑(-x) ∈ S
-- Submonoid.mem_units_of_val_mem_inv_val_mem
@[to_additive]
lemma mem_units_of_val_mem_inv_val_mem (S : Submonoid M) {x : Mˣ} (h₁ : (x : M) ∈ S)
    (h₂ : ((x⁻¹ : Mˣ) : M) ∈ S) : x ∈ S.units 
Arguments: {M : Type u_1} [Monoid M] (S : Submonoid M) {x : Mˣ} (h₁ : ↑x ∈ S) (h₂ : ↑x⁻¹ ∈ S)
Goal: x ∈ S.units
-- AddSubmonoid.mem_addUnits_of_val_mem_neg_val_mem
@[to_additive]
lemma mem_units_of_val_mem_inv_val_mem (S : Submonoid M) {x : Mˣ} (h₁ : (x : M) ∈ S)
    (h₂ : ((x⁻¹ : Mˣ) : M) ∈ S) : x ∈ S.units 
Arguments: {M : Type u_1} [AddMonoid M] (S : AddSubmonoid M) {x : AddUnits M} (h₁ : ↑x ∈ S) (h₂ : ↑(-x) ∈ S)
Goal: x ∈ S.addUnits
-- AddSubmonoid.val_mem_of_mem_addUnits
@[to_additive]
lemma val_mem_of_mem_units (S : Submonoid M) {x : Mˣ} (h : x ∈ S.units) : (x : M) ∈ S 
Arguments: {M : Type u_1} [AddMonoid M] (S : AddSubmonoid M) {x : AddUnits M} (h : x ∈ S.addUnits)
Goal: ↑x ∈ S
-- Submonoid.val_mem_of_mem_units
@[to_additive]
lemma val_mem_of_mem_units (S : Submonoid M) {x : Mˣ} (h : x ∈ S.units) : (x : M) ∈ S 
Arguments: {M : Type u_1} [Monoid M] (S : Submonoid M) {x : Mˣ} (h : x ∈ S.units)
Goal: ↑x ∈ S
-- AddSubmonoid.neg_val_mem_of_mem_addUnits
@[to_additive]
lemma inv_val_mem_of_mem_units (S : Submonoid M) {x : Mˣ} (h : x ∈ S.units) :
    ((x⁻¹ : Mˣ) : M) ∈ S 
Arguments: {M : Type u_1} [AddMonoid M] (S : AddSubmonoid M) {x : AddUnits M} (h : x ∈ S.addUnits)
Goal: ↑(-x) ∈ S
-- Submonoid.inv_val_mem_of_mem_units
@[to_additive]
lemma inv_val_mem_of_mem_units (S : Submonoid M) {x : Mˣ} (h : x ∈ S.units) :
    ((x⁻¹ : Mˣ) : M) ∈ S 
Arguments: {M : Type u_1} [Monoid M] (S : Submonoid M) {x : Mˣ} (h : x ∈ S.units)
Goal: ↑x⁻¹ ∈ S
-- Submonoid.coe_inv_val_mul_coe_val
@[to_additive]
lemma coe_inv_val_mul_coe_val (S : Submonoid M) {x : Sˣ} :
    ((x⁻¹ : Sˣ) : M) * ((x : Sˣ) : M) = 1 
Arguments: {M : Type u_1} [Monoid M] (S : Submonoid M) {x : (↥S)ˣ}
Goal: ↑↑x⁻¹ * ↑↑x = 1
-- AddSubmonoid.coe_neg_val_add_coe_val
@[to_additive]
lemma coe_inv_val_mul_coe_val (S : Submonoid M) {x : Sˣ} :
    ((x⁻¹ : Sˣ) : M) * ((x : Sˣ) : M) = 1 
Arguments: {M : Type u_1} [AddMonoid M] (S : AddSubmonoid M) {x : AddUnits ↥S}
Goal: ↑↑(-x) + ↑↑x = 0
-- Submonoid.coe_val_mul_coe_inv_val
@[to_additive]
lemma coe_val_mul_coe_inv_val (S : Submonoid M) {x : Sˣ} :
    ((x : Sˣ) : M) * ((x⁻¹ : Sˣ) : M) = 1 
Arguments: {M : Type u_1} [Monoid M] (S : Submonoid M) {x : (↥S)ˣ}
Goal: ↑↑x * ↑↑x⁻¹ = 1
-- AddSubmonoid.coe_val_add_coe_neg_val
@[to_additive]
lemma coe_val_mul_coe_inv_val (S : Submonoid M) {x : Sˣ} :
    ((x : Sˣ) : M) * ((x⁻¹ : Sˣ) : M) = 1 
Arguments: {M : Type u_1} [AddMonoid M] (S : AddSubmonoid M) {x : AddUnits ↥S}
Goal: ↑↑x + ↑↑(-x) = 0
-- Submonoid.mk_inv_mul_mk_eq_one
@[to_additive]
lemma mk_inv_mul_mk_eq_one (S : Submonoid M) {x : Mˣ} (h : x ∈ S.units) :
    (⟨_, h.2⟩ : S) * ⟨_, h.1⟩ = 1 
Arguments: {M : Type u_1} [Monoid M] (S : Submonoid M) {x : Mˣ} (h : x ∈ S.units)
Goal: ⟨(Units.coeHom M) x⁻¹, ⋯⟩ * ⟨(Units.coeHom M) x, ⋯⟩ = 1
-- AddSubmonoid.mk_neg_add_mk_eq_zero
@[to_additive]
lemma mk_inv_mul_mk_eq_one (S : Submonoid M) {x : Mˣ} (h : x ∈ S.units) :
    (⟨_, h.2⟩ : S) * ⟨_, h.1⟩ = 1 
Arguments: {M : Type u_1} [AddMonoid M] (S : AddSubmonoid M) {x : AddUnits M} (h : x ∈ S.addUnits)
Goal: ⟨(AddUnits.coeHom M) (-x), ⋯⟩ + ⟨(AddUnits.coeHom M) x, ⋯⟩ = 0
-- Submonoid.mk_mul_mk_inv_eq_one
@[to_additive]
lemma mk_mul_mk_inv_eq_one (S : Submonoid M) {x : Mˣ} (h : x ∈ S.units) :
    (⟨_, h.1⟩ : S) * ⟨_, h.2⟩ = 1 
Arguments: {M : Type u_1} [Monoid M] (S : Submonoid M) {x : Mˣ} (h : x ∈ S.units)
Goal: ⟨(Units.coeHom M) x, ⋯⟩ * ⟨(Units.coeHom M) x⁻¹, ⋯⟩ = 1
-- AddSubmonoid.mk_add_mk_neg_eq_zero
@[to_additive]
lemma mk_mul_mk_inv_eq_one (S : Submonoid M) {x : Mˣ} (h : x ∈ S.units) :
    (⟨_, h.1⟩ : S) * ⟨_, h.2⟩ = 1 
Arguments: {M : Type u_1} [AddMonoid M] (S : AddSubmonoid M) {x : AddUnits M} (h : x ∈ S.addUnits)
Goal: ⟨(AddUnits.coeHom M) x, ⋯⟩ + ⟨(AddUnits.coeHom M) (-x), ⋯⟩ = 0
-- AddSubmonoid.add_mem_addUnits
@[to_additive]
lemma mul_mem_units (S : Submonoid M) {x y : Mˣ} (h₁ : x ∈ S.units) (h₂ : y ∈ S.units) :
    x * y ∈ S.units 
Arguments: {M : Type u_1} [AddMonoid M] (S : AddSubmonoid M) {x y : AddUnits M} (h₁ : x ∈ S.addUnits) (h₂ : y ∈ S.addUnits)
Goal: x + y ∈ S.addUnits
-- Submonoid.mul_mem_units
@[to_additive]
lemma mul_mem_units (S : Submonoid M) {x y : Mˣ} (h₁ : x ∈ S.units) (h₂ : y ∈ S.units) :
    x * y ∈ S.units 
Arguments: {M : Type u_1} [Monoid M] (S : Submonoid M) {x y : Mˣ} (h₁ : x ∈ S.units) (h₂ : y ∈ S.units)
Goal: x * y ∈ S.units
-- Submonoid.inv_mem_units
@[to_additive]
lemma inv_mem_units (S : Submonoid M) {x : Mˣ} (h : x ∈ S.units) : x⁻¹ ∈ S.units 
Arguments: {M : Type u_1} [Monoid M] (S : Submonoid M) {x : Mˣ} (h : x ∈ S.units)
Goal: x⁻¹ ∈ S.units
-- AddSubmonoid.neg_mem_addUnits
@[to_additive]
lemma inv_mem_units (S : Submonoid M) {x : Mˣ} (h : x ∈ S.units) : x⁻¹ ∈ S.units 
Arguments: {M : Type u_1} [AddMonoid M] (S : AddSubmonoid M) {x : AddUnits M} (h : x ∈ S.addUnits)
Goal: -x ∈ S.addUnits
-- Submonoid.inv_mem_units_iff
@[to_additive]
lemma inv_mem_units_iff (S : Submonoid M) {x : Mˣ} : x⁻¹ ∈ S.units ↔ x ∈ S.units 
Arguments: {M : Type u_1} [Monoid M] (S : Submonoid M) {x : Mˣ}
Goal: x⁻¹ ∈ S.units ↔ x ∈ S.units
-- AddSubmonoid.neg_mem_addUnits_iff
@[to_additive]
lemma inv_mem_units_iff (S : Submonoid M) {x : Mˣ} : x⁻¹ ∈ S.units ↔ x ∈ S.units 
Arguments: {M : Type u_1} [AddMonoid M] (S : AddSubmonoid M) {x : AddUnits M}
Goal: -x ∈ S.addUnits ↔ x ∈ S.addUnits
-- Submonoid.units_top
@[to_additive (attr := simp)]
lemma units_top : (⊤ : Submonoid M).units = ⊤ 
Arguments: {M : Type u_1} [Monoid M]
Goal: ⊤.units = ⊤
-- AddSubmonoid.addUnits_top
@[to_additive (attr := simp)]
lemma units_top : (⊤ : Submonoid M).units = ⊤ 
Arguments: {M : Type u_1} [AddMonoid M]
Goal: ⊤.addUnits = ⊤
-- AddSubmonoid.addUnits_inf
@[to_additive]
lemma units_inf (S T : Submonoid M) : (S ⊓ T).units = S.units ⊓ T.units 
Arguments: {M : Type u_1} [AddMonoid M] (S T : AddSubmonoid M)
Goal: (S ⊓ T).addUnits = S.addUnits ⊓ T.addUnits
-- Submonoid.units_inf
@[to_additive]
lemma units_inf (S T : Submonoid M) : (S ⊓ T).units = S.units ⊓ T.units 
Arguments: {M : Type u_1} [Monoid M] (S T : Submonoid M)
Goal: (S ⊓ T).units = S.units ⊓ T.units
-- AddSubmonoid.addUnits_sInf
@[to_additive]
lemma units_sInf {s : Set (Submonoid M)} : (sInf s).units = ⨅ S ∈ s, S.units 
Arguments: {M : Type u_1} [AddMonoid M] {s : Set (AddSubmonoid M)}
Goal: (sInf s).addUnits = ⨅ S ∈ s, S.addUnits
-- Submonoid.units_sInf
@[to_additive]
lemma units_sInf {s : Set (Submonoid M)} : (sInf s).units = ⨅ S ∈ s, S.units 
Arguments: {M : Type u_1} [Monoid M] {s : Set (Submonoid M)}
Goal: (sInf s).units = ⨅ S ∈ s, S.units
-- AddSubmonoid.addUnits_iInf
@[to_additive]
lemma units_iInf {ι : Sort*} (f : ι → Submonoid M) : (iInf f).units = ⨅ (i : ι), (f i).units 
Arguments: {M : Type u_1} [AddMonoid M] {ι : Sort u_2} (f : ι → AddSubmonoid M)
Goal: (iInf f).addUnits = ⨅ i, (f i).addUnits
-- Submonoid.units_iInf
@[to_additive]
lemma units_iInf {ι : Sort*} (f : ι → Submonoid M) : (iInf f).units = ⨅ (i : ι), (f i).units 
Arguments: {M : Type u_1} [Monoid M] {ι : Sort u_2} (f : ι → Submonoid M)
Goal: (iInf f).units = ⨅ i, (f i).units
-- AddSubmonoid.addUnits_iInf₂
@[to_additive]
lemma units_iInf₂ {ι : Sort*} {κ : ι → Sort*} (f : (i : ι) → κ i → Submonoid M) :
    (⨅ (i : ι), ⨅ (j : κ i), f i j).units = ⨅ (i : ι), ⨅ (j : κ i), (f i j).units 
Arguments: {M : Type u_1} [AddMonoid M] {ι : Sort u_2} {κ : ι → Sort u_3} (f : (i : ι) → κ i → AddSubmonoid M)
Goal: (⨅ i, ⨅ j, f i j).addUnits = ⨅ i, ⨅ j, (f i j).addUnits
-- Submonoid.units_iInf₂
@[to_additive]
lemma units_iInf₂ {ι : Sort*} {κ : ι → Sort*} (f : (i : ι) → κ i → Submonoid M) :
    (⨅ (i : ι), ⨅ (j : κ i), f i j).units = ⨅ (i : ι), ⨅ (j : κ i), (f i j).units 
Arguments: {M : Type u_1} [Monoid M] {ι : Sort u_2} {κ : ι → Sort u_3} (f : (i : ι) → κ i → Submonoid M)
Goal: (⨅ i, ⨅ j, f i j).units = ⨅ i, ⨅ j, (f i j).units
-- AddSubmonoid.addUnits_bot
@[to_additive (attr := simp)]
lemma units_bot : (⊥ : Submonoid M).units = ⊥ 
Arguments: {M : Type u_1} [AddMonoid M]
Goal: ⊥.addUnits = ⊥
-- Submonoid.units_bot
@[to_additive (attr := simp)]
lemma units_bot : (⊥ : Submonoid M).units = ⊥ 
Arguments: {M : Type u_1} [Monoid M]
Goal: ⊥.units = ⊥
-- AddSubmonoid.addUnits_surjective
@[to_additive]
lemma units_surjective : Function.Surjective (units (M := M)) 
Arguments: {M : Type u_1} [AddMonoid M]
Goal: Function.Surjective AddSubmonoid.addUnits
-- Submonoid.units_surjective
@[to_additive]
lemma units_surjective : Function.Surjective (units (M := M)) 
Arguments: {M : Type u_1} [Monoid M]
Goal: Function.Surjective Submonoid.units
-- AddSubmonoid.addUnits_left_inverse
@[to_additive]
lemma units_left_inverse :
    Function.LeftInverse (units (M := M)) (Subgroup.ofUnits (M := M)) 
Arguments: {M : Type u_1} [AddMonoid M]
Goal: Function.LeftInverse AddSubmonoid.addUnits AddSubgroup.ofAddUnits
-- Submonoid.units_left_inverse
@[to_additive]
lemma units_left_inverse :
    Function.LeftInverse (units (M := M)) (Subgroup.ofUnits (M := M)) 
Arguments: {M : Type u_1} [Monoid M]
Goal: Function.LeftInverse Submonoid.units Subgroup.ofUnits
-- Subgroup.mem_ofUnits_iff
@[to_additive]
lemma mem_ofUnits_iff (S : Subgroup Mˣ) (x : M) : x ∈ S.ofUnits ↔ ∃ y ∈ S, y = x 
Arguments: {M : Type u_1} [Monoid M] (S : Subgroup Mˣ) (x : M)
Goal: x ∈ S.ofUnits ↔ ∃ y ∈ S, ↑y = x
-- AddSubgroup.mem_ofAddUnits_iff
@[to_additive]
lemma mem_ofUnits_iff (S : Subgroup Mˣ) (x : M) : x ∈ S.ofUnits ↔ ∃ y ∈ S, y = x 
Arguments: {M : Type u_1} [AddMonoid M] (S : AddSubgroup (AddUnits M)) (x : M)
Goal: x ∈ S.ofAddUnits ↔ ∃ y ∈ S, ↑y = x
-- Subgroup.mem_ofUnits
@[to_additive]
lemma mem_ofUnits (S : Subgroup Mˣ) {x : M} {y : Mˣ} (h₁ : y ∈ S) (h₂ : y = x) : x ∈ S.ofUnits 
Arguments: {M : Type u_1} [Monoid M] (S : Subgroup Mˣ) {x : M} {y : Mˣ} (h₁ : y ∈ S) (h₂ : ↑y = x)
Goal: x ∈ S.ofUnits
-- AddSubgroup.mem_ofAddUnits
@[to_additive]
lemma mem_ofUnits (S : Subgroup Mˣ) {x : M} {y : Mˣ} (h₁ : y ∈ S) (h₂ : y = x) : x ∈ S.ofUnits 
Arguments: {M : Type u_1} [AddMonoid M] (S : AddSubgroup (AddUnits M)) {x : M} {y : AddUnits M} (h₁ : y ∈ S) (h₂ : ↑y = x)
Goal: x ∈ S.ofAddUnits
-- AddSubgroup.exists_mem_ofAddUnits_val_eq
@[to_additive]
lemma exists_mem_ofUnits_val_eq (S : Subgroup Mˣ) {x : M} (h : x ∈ S.ofUnits) :
    ∃ y ∈ S, y = x 
Arguments: {M : Type u_1} [AddMonoid M] (S : AddSubgroup (AddUnits M)) {x : M} (h : x ∈ S.ofAddUnits)
Goal: ∃ y ∈ S, ↑y = x
-- Subgroup.exists_mem_ofUnits_val_eq
@[to_additive]
lemma exists_mem_ofUnits_val_eq (S : Subgroup Mˣ) {x : M} (h : x ∈ S.ofUnits) :
    ∃ y ∈ S, y = x 
Arguments: {M : Type u_1} [Monoid M] (S : Subgroup Mˣ) {x : M} (h : x ∈ S.ofUnits)
Goal: ∃ y ∈ S, ↑y = x
-- AddSubgroup.mem_of_mem_val_ofAddUnits
@[to_additive]
lemma mem_of_mem_val_ofUnits (S : Subgroup Mˣ) {y : Mˣ} (hy : (y : M) ∈ S.ofUnits) : y ∈ S 
Arguments: {M : Type u_1} [AddMonoid M] (S : AddSubgroup (AddUnits M)) {y : AddUnits M} (hy : ↑y ∈ S.ofAddUnits)
Goal: y ∈ S
-- Subgroup.mem_of_mem_val_ofUnits
@[to_additive]
lemma mem_of_mem_val_ofUnits (S : Subgroup Mˣ) {y : Mˣ} (hy : (y : M) ∈ S.ofUnits) : y ∈ S 
Arguments: {M : Type u_1} [Monoid M] (S : Subgroup Mˣ) {y : Mˣ} (hy : ↑y ∈ S.ofUnits)
Goal: y ∈ S
-- AddSubgroup.isAddUnit_of_mem_ofAddUnits
@[to_additive]
lemma isUnit_of_mem_ofUnits (S : Subgroup Mˣ) {x : M} (hx : x ∈ S.ofUnits) : IsUnit x 
Arguments: {M : Type u_1} [AddMonoid M] (S : AddSubgroup (AddUnits M)) {x : M} (hx : x ∈ S.ofAddUnits)
Goal: IsAddUnit x
-- Subgroup.isUnit_of_mem_ofUnits
@[to_additive]
lemma isUnit_of_mem_ofUnits (S : Subgroup Mˣ) {x : M} (hx : x ∈ S.ofUnits) : IsUnit x 
Arguments: {M : Type u_1} [Monoid M] (S : Subgroup Mˣ) {x : M} (hx : x ∈ S.ofUnits)
Goal: IsUnit x
-- AddSubgroup.addUnit_of_mem_ofAddUnits_spec_eq_of_val_mem
@[to_additive]
lemma unit_of_mem_ofUnits_spec_eq_of_val_mem (S : Subgroup Mˣ) {x : Mˣ} (h : (x : M) ∈ S.ofUnits) :
    S.unit_of_mem_ofUnits h = x 
Arguments: {M : Type u_1} [AddMonoid M] (S : AddSubgroup (AddUnits M)) {x : AddUnits M} (h : ↑x ∈ S.ofAddUnits)
Goal: S.addUnit_of_mem_ofAddUnits h = x
-- Subgroup.unit_of_mem_ofUnits_spec_eq_of_val_mem
@[to_additive]
lemma unit_of_mem_ofUnits_spec_eq_of_val_mem (S : Subgroup Mˣ) {x : Mˣ} (h : (x : M) ∈ S.ofUnits) :
    S.unit_of_mem_ofUnits h = x 
Arguments: {M : Type u_1} [Monoid M] (S : Subgroup Mˣ) {x : Mˣ} (h : ↑x ∈ S.ofUnits)
Goal: S.unit_of_mem_ofUnits h = x
-- AddSubgroup.addUnit_of_mem_ofAddUnits_spec_val_eq_of_mem
@[to_additive]
lemma unit_of_mem_ofUnits_spec_val_eq_of_mem (S : Subgroup Mˣ) {x : M} (h : x ∈ S.ofUnits) :
    S.unit_of_mem_ofUnits h = x 
Arguments: {M : Type u_1} [AddMonoid M] (S : AddSubgroup (AddUnits M)) {x : M} (h : x ∈ S.ofAddUnits)
Goal: ↑(S.addUnit_of_mem_ofAddUnits h) = x
-- Subgroup.unit_of_mem_ofUnits_spec_val_eq_of_mem
@[to_additive]
lemma unit_of_mem_ofUnits_spec_val_eq_of_mem (S : Subgroup Mˣ) {x : M} (h : x ∈ S.ofUnits) :
    S.unit_of_mem_ofUnits h = x 
Arguments: {M : Type u_1} [Monoid M] (S : Subgroup Mˣ) {x : M} (h : x ∈ S.ofUnits)
Goal: ↑(S.unit_of_mem_ofUnits h) = x
-- Subgroup.unit_of_mem_ofUnits_spec_mem
@[to_additive]
lemma unit_of_mem_ofUnits_spec_mem (S : Subgroup Mˣ) {x : M} {h : x ∈ S.ofUnits} :
    S.unit_of_mem_ofUnits h ∈ S 
Arguments: {M : Type u_1} [Monoid M] (S : Subgroup Mˣ) {x : M} {h : x ∈ S.ofUnits}
Goal: S.unit_of_mem_ofUnits h ∈ S
-- AddSubgroup.addUnit_of_mem_ofAddUnits_spec_mem
@[to_additive]
lemma unit_of_mem_ofUnits_spec_mem (S : Subgroup Mˣ) {x : M} {h : x ∈ S.ofUnits} :
    S.unit_of_mem_ofUnits h ∈ S 
Arguments: {M : Type u_1} [AddMonoid M] (S : AddSubgroup (AddUnits M)) {x : M} {h : x ∈ S.ofAddUnits}
Goal: S.addUnit_of_mem_ofAddUnits h ∈ S
-- AddSubgroup.addUnit_eq_addUnit_of_mem_ofAddUnits
@[to_additive]
lemma unit_eq_unit_of_mem_ofUnits (S : Subgroup Mˣ) {x : M} (h₁ : IsUnit x)
    (h₂ : x ∈ S.ofUnits) : h₁.unit = S.unit_of_mem_ofUnits h₂ 
Arguments: {M : Type u_1} [AddMonoid M] (S : AddSubgroup (AddUnits M)) {x : M} (h₁ : IsAddUnit x) (h₂ : x ∈ S.ofAddUnits)
Goal: h₁.addUnit = S.addUnit_of_mem_ofAddUnits h₂
-- Subgroup.unit_eq_unit_of_mem_ofUnits
@[to_additive]
lemma unit_eq_unit_of_mem_ofUnits (S : Subgroup Mˣ) {x : M} (h₁ : IsUnit x)
    (h₂ : x ∈ S.ofUnits) : h₁.unit = S.unit_of_mem_ofUnits h₂ 
Arguments: {M : Type u_1} [Monoid M] (S : Subgroup Mˣ) {x : M} (h₁ : IsUnit x) (h₂ : x ∈ S.ofUnits)
Goal: h₁.unit = S.unit_of_mem_ofUnits h₂
-- AddSubgroup.addUnit_mem_of_mem_ofAddUnits
@[to_additive]
lemma unit_mem_of_mem_ofUnits (S : Subgroup Mˣ) {x : M} {h₁ : IsUnit x}
    (h₂ : x ∈ S.ofUnits) : h₁.unit ∈ S 
Arguments: {M : Type u_1} [AddMonoid M] (S : AddSubgroup (AddUnits M)) {x : M} {h₁ : IsAddUnit x} (h₂ : x ∈ S.ofAddUnits)
Goal: h₁.addUnit ∈ S
-- Subgroup.unit_mem_of_mem_ofUnits
@[to_additive]
lemma unit_mem_of_mem_ofUnits (S : Subgroup Mˣ) {x : M} {h₁ : IsUnit x}
    (h₂ : x ∈ S.ofUnits) : h₁.unit ∈ S 
Arguments: {M : Type u_1} [Monoid M] (S : Subgroup Mˣ) {x : M} {h₁ : IsUnit x} (h₂ : x ∈ S.ofUnits)
Goal: h₁.unit ∈ S
-- AddSubgroup.mem_ofAddUnits_of_isAddUnit_of_addUnit_mem
@[to_additive]
lemma mem_ofUnits_of_isUnit_of_unit_mem (S : Subgroup Mˣ) {x : M} (h₁ : IsUnit x)
    (h₂ : h₁.unit ∈ S) : x ∈ S.ofUnits 
Arguments: {M : Type u_1} [AddMonoid M] (S : AddSubgroup (AddUnits M)) {x : M} (h₁ : IsAddUnit x) (h₂ : h₁.addUnit ∈ S)
Goal: x ∈ S.ofAddUnits
-- Subgroup.mem_ofUnits_of_isUnit_of_unit_mem
@[to_additive]
lemma mem_ofUnits_of_isUnit_of_unit_mem (S : Subgroup Mˣ) {x : M} (h₁ : IsUnit x)
    (h₂ : h₁.unit ∈ S) : x ∈ S.ofUnits 
Arguments: {M : Type u_1} [Monoid M] (S : Subgroup Mˣ) {x : M} (h₁ : IsUnit x) (h₂ : h₁.unit ∈ S)
Goal: x ∈ S.ofUnits