ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Submonoid.inv_sup
@[to_additive (attr := simp)]
theorem inv_sup (S T : Submonoid G) : (S ⊔ T)⁻¹ = S⁻¹ ⊔ T⁻¹ 
Arguments: {G : Type u_2} [Group G] (S T : Submonoid G)
Goal: (S ⊔ T)⁻¹ = S⁻¹ ⊔ T⁻¹
-- AddSubmonoid.neg_sup
@[to_additive (attr := simp)]
theorem inv_sup (S T : Submonoid G) : (S ⊔ T)⁻¹ = S⁻¹ ⊔ T⁻¹ 
Arguments: {G : Type u_2} [AddGroup G] (S T : AddSubmonoid G)
Goal: -(S ⊔ T) = -S ⊔ -T
-- Submonoid.inv_bot
@[to_additive (attr := simp)]
theorem inv_bot : (⊥ : Submonoid G)⁻¹ = ⊥ 
Arguments: {G : Type u_2} [Group G]
Goal: ⊥⁻¹ = ⊥
-- AddSubmonoid.neg_bot
@[to_additive (attr := simp)]
theorem inv_bot : (⊥ : Submonoid G)⁻¹ = ⊥ 
Arguments: {G : Type u_2} [AddGroup G]
Goal: -⊥ = ⊥
-- AddSubmonoid.neg_top
@[to_additive (attr := simp)]
theorem inv_top : (⊤ : Submonoid G)⁻¹ = ⊤ 
Arguments: {G : Type u_2} [AddGroup G]
Goal: -⊤ = ⊤
-- Submonoid.inv_top
@[to_additive (attr := simp)]
theorem inv_top : (⊤ : Submonoid G)⁻¹ = ⊤ 
Arguments: {G : Type u_2} [Group G]
Goal: ⊤⁻¹ = ⊤
-- Submonoid.inv_iInf
@[to_additive (attr := simp)]
theorem inv_iInf {ι : Sort*} (S : ι → Submonoid G) : (⨅ i, S i)⁻¹ = ⨅ i, (S i)⁻¹ 
Arguments: {G : Type u_2} [Group G] {ι : Sort u_6} (S : ι → Submonoid G)
Goal: (⨅ i, S i)⁻¹ = ⨅ i, (S i)⁻¹
-- AddSubmonoid.neg_iInf
@[to_additive (attr := simp)]
theorem inv_iInf {ι : Sort*} (S : ι → Submonoid G) : (⨅ i, S i)⁻¹ = ⨅ i, (S i)⁻¹ 
Arguments: {G : Type u_2} [AddGroup G] {ι : Sort u_6} (S : ι → AddSubmonoid G)
Goal: -⨅ i, S i = ⨅ i, -S i
-- AddSubmonoid.neg_iSup
@[to_additive (attr := simp)]
theorem inv_iSup {ι : Sort*} (S : ι → Submonoid G) : (⨆ i, S i)⁻¹ = ⨆ i, (S i)⁻¹ 
Arguments: {G : Type u_2} [AddGroup G] {ι : Sort u_6} (S : ι → AddSubmonoid G)
Goal: -⨆ i, S i = ⨆ i, -S i
-- Submonoid.inv_iSup
@[to_additive (attr := simp)]
theorem inv_iSup {ι : Sort*} (S : ι → Submonoid G) : (⨆ i, S i)⁻¹ = ⨆ i, (S i)⁻¹ 
Arguments: {G : Type u_2} [Group G] {ι : Sort u_6} (S : ι → Submonoid G)
Goal: (⨆ i, S i)⁻¹ = ⨆ i, (S i)⁻¹
-- Submonoid.coe_pointwise_smul
@[simp]
theorem coe_pointwise_smul (a : α) (S : Submonoid M) : ↑(a • S) = a • (S : Set M) 
Arguments: {α : Type u_1} {M : Type u_3} [Monoid M] [Monoid α] [MulDistribMulAction α M] (a : α) (S : Submonoid M)
Goal: ↑(a • S) = a • ↑S
-- Submonoid.smul_mem_pointwise_smul
theorem smul_mem_pointwise_smul (m : M) (a : α) (S : Submonoid M) : m ∈ S → a • m ∈ a • S 
Arguments: {α : Type u_1} {M : Type u_3} [Monoid M] [Monoid α] [MulDistribMulAction α M] (m : M) (a : α) (S : Submonoid M)
Goal: m ∈ S → a • m ∈ a • S
-- Submonoid.mem_smul_pointwise_iff_exists
theorem mem_smul_pointwise_iff_exists (m : M) (a : α) (S : Submonoid M) :
    m ∈ a • S ↔ ∃ s : M, s ∈ S ∧ a • s = m 
Arguments: {α : Type u_1} {M : Type u_3} [Monoid M] [Monoid α] [MulDistribMulAction α M] (m : M) (a : α) (S : Submonoid M)
Goal: m ∈ a • S ↔ ∃ s ∈ S, a • s = m
-- Submonoid.smul_bot
@[simp]
theorem smul_bot (a : α) : a • (⊥ : Submonoid M) = ⊥ 
Arguments: {α : Type u_1} {M : Type u_3} [Monoid M] [Monoid α] [MulDistribMulAction α M] (a : α)
Goal: a • ⊥ = ⊥
-- Submonoid.smul_sup
theorem smul_sup (a : α) (S T : Submonoid M) : a • (S ⊔ T) = a • S ⊔ a • T 
Arguments: {α : Type u_1} {M : Type u_3} [Monoid M] [Monoid α] [MulDistribMulAction α M] (a : α) (S T : Submonoid M)
Goal: a • (S ⊔ T) = a • S ⊔ a • T
-- Submonoid.smul_closure
theorem smul_closure (a : α) (s : Set M) : a • closure s = closure (a • s) 
Arguments: {α : Type u_1} {M : Type u_3} [Monoid M] [Monoid α] [MulDistribMulAction α M] (a : α) (s : Set M)
Goal: a • Submonoid.closure s = Submonoid.closure (a • s)
-- Submonoid.pointwise_isCentralScalar
lemma pointwise_isCentralScalar [MulDistribMulAction αᵐᵒᵖ M] [IsCentralScalar α M] :
    IsCentralScalar α (Submonoid M) 
Arguments: {α : Type u_1} {M : Type u_3} [Monoid M] [Monoid α] [MulDistribMulAction α M] [MulDistribMulAction αᵐᵒᵖ M] [IsCentralScalar α M]
Goal: IsCentralScalar α (Submonoid M)
-- Submonoid.smul_mem_pointwise_smul_iff
@[simp]
theorem smul_mem_pointwise_smul_iff {a : α} {S : Submonoid M} {x : M} : a • x ∈ a • S ↔ x ∈ S 
Arguments: {α : Type u_1} {M : Type u_3} [Monoid M] [Group α] [MulDistribMulAction α M] {a : α} {S : Submonoid M} {x : M}
Goal: a • x ∈ a • S ↔ x ∈ S
-- Submonoid.mem_pointwise_smul_iff_inv_smul_mem
theorem mem_pointwise_smul_iff_inv_smul_mem {a : α} {S : Submonoid M} {x : M} :
    x ∈ a • S ↔ a⁻¹ • x ∈ S 
Arguments: {α : Type u_1} {M : Type u_3} [Monoid M] [Group α] [MulDistribMulAction α M] {a : α} {S : Submonoid M} {x : M}
Goal: x ∈ a • S ↔ a⁻¹ • x ∈ S
-- Submonoid.mem_inv_pointwise_smul_iff
theorem mem_inv_pointwise_smul_iff {a : α} {S : Submonoid M} {x : M} : x ∈ a⁻¹ • S ↔ a • x ∈ S 
Arguments: {α : Type u_1} {M : Type u_3} [Monoid M] [Group α] [MulDistribMulAction α M] {a : α} {S : Submonoid M} {x : M}
Goal: x ∈ a⁻¹ • S ↔ a • x ∈ S
-- Submonoid.pointwise_smul_le_pointwise_smul_iff
@[simp]
theorem pointwise_smul_le_pointwise_smul_iff {a : α} {S T : Submonoid M} : a • S ≤ a • T ↔ S ≤ T 
Arguments: {α : Type u_1} {M : Type u_3} [Monoid M] [Group α] [MulDistribMulAction α M] {a : α} {S T : Submonoid M}
Goal: a • S ≤ a • T ↔ S ≤ T
-- Submonoid.pointwise_smul_subset_iff
theorem pointwise_smul_subset_iff {a : α} {S T : Submonoid M} : a • S ≤ T ↔ S ≤ a⁻¹ • T 
Arguments: {α : Type u_1} {M : Type u_3} [Monoid M] [Group α] [MulDistribMulAction α M] {a : α} {S T : Submonoid M}
Goal: a • S ≤ T ↔ S ≤ a⁻¹ • T
-- Submonoid.subset_pointwise_smul_iff
theorem subset_pointwise_smul_iff {a : α} {S T : Submonoid M} : S ≤ a • T ↔ a⁻¹ • S ≤ T 
Arguments: {α : Type u_1} {M : Type u_3} [Monoid M] [Group α] [MulDistribMulAction α M] {a : α} {S T : Submonoid M}
Goal: S ≤ a • T ↔ a⁻¹ • S ≤ T
-- Submonoid.smul_mem_pointwise_smul_iff₀
@[simp]
theorem smul_mem_pointwise_smul_iff₀ {a : α} (ha : a ≠ 0) (S : Submonoid M) (x : M) :
    a • x ∈ a • S ↔ x ∈ S 
Arguments: {α : Type u_1} {M : Type u_3} [Monoid M] [GroupWithZero α] [MulDistribMulAction α M] {a : α} (ha : a ≠ 0) (S : Submonoid M) (x : M)
Goal: a • x ∈ a • S ↔ x ∈ S
-- Submonoid.mem_pointwise_smul_iff_inv_smul_mem₀
theorem mem_pointwise_smul_iff_inv_smul_mem₀ {a : α} (ha : a ≠ 0) (S : Submonoid M) (x : M) :
    x ∈ a • S ↔ a⁻¹ • x ∈ S 
Arguments: {α : Type u_1} {M : Type u_3} [Monoid M] [GroupWithZero α] [MulDistribMulAction α M] {a : α} (ha : a ≠ 0) (S : Submonoid M) (x : M)
Goal: x ∈ a • S ↔ a⁻¹ • x ∈ S
-- Submonoid.mem_inv_pointwise_smul_iff₀
theorem mem_inv_pointwise_smul_iff₀ {a : α} (ha : a ≠ 0) (S : Submonoid M) (x : M) :
    x ∈ a⁻¹ • S ↔ a • x ∈ S 
Arguments: {α : Type u_1} {M : Type u_3} [Monoid M] [GroupWithZero α] [MulDistribMulAction α M] {a : α} (ha : a ≠ 0) (S : Submonoid M) (x : M)
Goal: x ∈ a⁻¹ • S ↔ a • x ∈ S
-- Submonoid.pointwise_smul_le_pointwise_smul_iff₀
@[simp]
theorem pointwise_smul_le_pointwise_smul_iff₀ {a : α} (ha : a ≠ 0) {S T : Submonoid M} :
    a • S ≤ a • T ↔ S ≤ T 
Arguments: {α : Type u_1} {M : Type u_3} [Monoid M] [GroupWithZero α] [MulDistribMulAction α M] {a : α} (ha : a ≠ 0) {S T : Submonoid M}
Goal: a • S ≤ a • T ↔ S ≤ T
-- Submonoid.pointwise_smul_le_iff₀
theorem pointwise_smul_le_iff₀ {a : α} (ha : a ≠ 0) {S T : Submonoid M} : a • S ≤ T ↔ S ≤ a⁻¹ • T 
Arguments: {α : Type u_1} {M : Type u_3} [Monoid M] [GroupWithZero α] [MulDistribMulAction α M] {a : α} (ha : a ≠ 0) {S T : Submonoid M}
Goal: a • S ≤ T ↔ S ≤ a⁻¹ • T
-- Submonoid.le_pointwise_smul_iff₀
theorem le_pointwise_smul_iff₀ {a : α} (ha : a ≠ 0) {S T : Submonoid M} : S ≤ a • T ↔ a⁻¹ • S ≤ T 
Arguments: {α : Type u_1} {M : Type u_3} [Monoid M] [GroupWithZero α] [MulDistribMulAction α M] {a : α} (ha : a ≠ 0) {S T : Submonoid M}
Goal: S ≤ a • T ↔ a⁻¹ • S ≤ T
-- Submonoid.mem_closure_inv
@[to_additive]
theorem mem_closure_inv {G : Type*} [Group G] (S : Set G) (x : G) :
    x ∈ Submonoid.closure S⁻¹ ↔ x⁻¹ ∈ Submonoid.closure S 
Arguments: {G : Type u_6} [Group G] (S : Set G) (x : G)
Goal: x ∈ Submonoid.closure S⁻¹ ↔ x⁻¹ ∈ Submonoid.closure S
-- AddSubmonoid.mem_closure_neg
@[to_additive]
theorem mem_closure_inv {G : Type*} [Group G] (S : Set G) (x : G) :
    x ∈ Submonoid.closure S⁻¹ ↔ x⁻¹ ∈ Submonoid.closure S 
Arguments: {G : Type u_6} [AddGroup G] (S : Set G) (x : G)
Goal: x ∈ AddSubmonoid.closure (-S) ↔ -x ∈ AddSubmonoid.closure S
-- AddSubmonoid.coe_pointwise_smul
@[simp]
theorem coe_pointwise_smul (a : α) (S : AddSubmonoid A) : ↑(a • S) = a • (S : Set A) 
Arguments: {α : Type u_1} {A : Type u_5} [AddMonoid A] [Monoid α] [DistribMulAction α A] (a : α) (S : AddSubmonoid A)
Goal: ↑(a • S) = a • ↑S
-- AddSubmonoid.smul_mem_pointwise_smul
theorem smul_mem_pointwise_smul (m : A) (a : α) (S : AddSubmonoid A) : m ∈ S → a • m ∈ a • S 
Arguments: {α : Type u_1} {A : Type u_5} [AddMonoid A] [Monoid α] [DistribMulAction α A] (m : A) (a : α) (S : AddSubmonoid A)
Goal: m ∈ S → a • m ∈ a • S
-- AddSubmonoid.mem_smul_pointwise_iff_exists
theorem mem_smul_pointwise_iff_exists (m : A) (a : α) (S : AddSubmonoid A) :
    m ∈ a • S ↔ ∃ s : A, s ∈ S ∧ a • s = m 
Arguments: {α : Type u_1} {A : Type u_5} [AddMonoid A] [Monoid α] [DistribMulAction α A] (m : A) (a : α) (S : AddSubmonoid A)
Goal: m ∈ a • S ↔ ∃ s ∈ S, a • s = m
-- AddSubmonoid.smul_bot
@[simp]
theorem smul_bot (a : α) : a • (⊥ : AddSubmonoid A) = ⊥ 
Arguments: {α : Type u_1} {A : Type u_5} [AddMonoid A] [Monoid α] [DistribMulAction α A] (a : α)
Goal: a • ⊥ = ⊥
-- AddSubmonoid.smul_sup
theorem smul_sup (a : α) (S T : AddSubmonoid A) : a • (S ⊔ T) = a • S ⊔ a • T 
Arguments: {α : Type u_1} {A : Type u_5} [AddMonoid A] [Monoid α] [DistribMulAction α A] (a : α) (S T : AddSubmonoid A)
Goal: a • (S ⊔ T) = a • S ⊔ a • T
-- AddSubmonoid.smul_closure
@[simp]
theorem smul_closure (a : α) (s : Set A) : a • closure s = closure (a • s) 
Arguments: {α : Type u_1} {A : Type u_5} [AddMonoid A] [Monoid α] [DistribMulAction α A] (a : α) (s : Set A)
Goal: a • AddSubmonoid.closure s = AddSubmonoid.closure (a • s)
-- AddSubmonoid.pointwise_isCentralScalar
lemma pointwise_isCentralScalar [DistribMulAction αᵐᵒᵖ A] [IsCentralScalar α A] :
    IsCentralScalar α (AddSubmonoid A) 
Arguments: {α : Type u_1} {A : Type u_5} [AddMonoid A] [Monoid α] [DistribMulAction α A] [DistribMulAction αᵐᵒᵖ A] [IsCentralScalar α A]
Goal: IsCentralScalar α (AddSubmonoid A)
-- AddSubmonoid.smul_mem_pointwise_smul_iff
@[simp]
theorem smul_mem_pointwise_smul_iff {a : α} {S : AddSubmonoid A} {x : A} : a • x ∈ a • S ↔ x ∈ S 
Arguments: {α : Type u_1} {A : Type u_5} [AddMonoid A] [Group α] [DistribMulAction α A] {a : α} {S : AddSubmonoid A} {x : A}
Goal: a • x ∈ a • S ↔ x ∈ S
-- AddSubmonoid.mem_pointwise_smul_iff_inv_smul_mem
theorem mem_pointwise_smul_iff_inv_smul_mem {a : α} {S : AddSubmonoid A} {x : A} :
    x ∈ a • S ↔ a⁻¹ • x ∈ S 
Arguments: {α : Type u_1} {A : Type u_5} [AddMonoid A] [Group α] [DistribMulAction α A] {a : α} {S : AddSubmonoid A} {x : A}
Goal: x ∈ a • S ↔ a⁻¹ • x ∈ S
-- AddSubmonoid.mem_inv_pointwise_smul_iff
theorem mem_inv_pointwise_smul_iff {a : α} {S : AddSubmonoid A} {x : A} : x ∈ a⁻¹ • S ↔ a • x ∈ S 
Arguments: {α : Type u_1} {A : Type u_5} [AddMonoid A] [Group α] [DistribMulAction α A] {a : α} {S : AddSubmonoid A} {x : A}
Goal: x ∈ a⁻¹ • S ↔ a • x ∈ S
-- AddSubmonoid.pointwise_smul_le_pointwise_smul_iff
@[simp]
theorem pointwise_smul_le_pointwise_smul_iff {a : α} {S T : AddSubmonoid A} :
    a • S ≤ a • T ↔ S ≤ T 
Arguments: {α : Type u_1} {A : Type u_5} [AddMonoid A] [Group α] [DistribMulAction α A] {a : α} {S T : AddSubmonoid A}
Goal: a • S ≤ a • T ↔ S ≤ T
-- AddSubmonoid.pointwise_smul_le_iff
theorem pointwise_smul_le_iff {a : α} {S T : AddSubmonoid A} : a • S ≤ T ↔ S ≤ a⁻¹ • T 
Arguments: {α : Type u_1} {A : Type u_5} [AddMonoid A] [Group α] [DistribMulAction α A] {a : α} {S T : AddSubmonoid A}
Goal: a • S ≤ T ↔ S ≤ a⁻¹ • T
-- AddSubmonoid.le_pointwise_smul_iff
theorem le_pointwise_smul_iff {a : α} {S T : AddSubmonoid A} : S ≤ a • T ↔ a⁻¹ • S ≤ T 
Arguments: {α : Type u_1} {A : Type u_5} [AddMonoid A] [Group α] [DistribMulAction α A] {a : α} {S T : AddSubmonoid A}
Goal: S ≤ a • T ↔ a⁻¹ • S ≤ T
-- AddSubmonoid.smul_mem_pointwise_smul_iff₀
@[simp]
theorem smul_mem_pointwise_smul_iff₀ {a : α} (ha : a ≠ 0) (S : AddSubmonoid A) (x : A) :
    a • x ∈ a • S ↔ x ∈ S 
Arguments: {α : Type u_1} {A : Type u_5} [AddMonoid A] [GroupWithZero α] [DistribMulAction α A] {a : α} (ha : a ≠ 0) (S : AddSubmonoid A) (x : A)
Goal: a • x ∈ a • S ↔ x ∈ S
-- AddSubmonoid.mem_pointwise_smul_iff_inv_smul_mem₀
theorem mem_pointwise_smul_iff_inv_smul_mem₀ {a : α} (ha : a ≠ 0) (S : AddSubmonoid A) (x : A) :
    x ∈ a • S ↔ a⁻¹ • x ∈ S 
Arguments: {α : Type u_1} {A : Type u_5} [AddMonoid A] [GroupWithZero α] [DistribMulAction α A] {a : α} (ha : a ≠ 0) (S : AddSubmonoid A) (x : A)
Goal: x ∈ a • S ↔ a⁻¹ • x ∈ S
-- AddSubmonoid.mem_inv_pointwise_smul_iff₀
theorem mem_inv_pointwise_smul_iff₀ {a : α} (ha : a ≠ 0) (S : AddSubmonoid A) (x : A) :
    x ∈ a⁻¹ • S ↔ a • x ∈ S 
Arguments: {α : Type u_1} {A : Type u_5} [AddMonoid A] [GroupWithZero α] [DistribMulAction α A] {a : α} (ha : a ≠ 0) (S : AddSubmonoid A) (x : A)
Goal: x ∈ a⁻¹ • S ↔ a • x ∈ S
-- AddSubmonoid.pointwise_smul_le_pointwise_smul_iff₀
@[simp]
theorem pointwise_smul_le_pointwise_smul_iff₀ {a : α} (ha : a ≠ 0) {S T : AddSubmonoid A} :
    a • S ≤ a • T ↔ S ≤ T 
Arguments: {α : Type u_1} {A : Type u_5} [AddMonoid A] [GroupWithZero α] [DistribMulAction α A] {a : α} (ha : a ≠ 0) {S T : AddSubmonoid A}
Goal: a • S ≤ a • T ↔ S ≤ T
-- AddSubmonoid.pointwise_smul_le_iff₀
theorem pointwise_smul_le_iff₀ {a : α} (ha : a ≠ 0) {S T : AddSubmonoid A} :
    a • S ≤ T ↔ S ≤ a⁻¹ • T 
Arguments: {α : Type u_1} {A : Type u_5} [AddMonoid A] [GroupWithZero α] [DistribMulAction α A] {a : α} (ha : a ≠ 0) {S T : AddSubmonoid A}
Goal: a • S ≤ T ↔ S ≤ a⁻¹ • T
-- AddSubmonoid.le_pointwise_smul_iff₀
theorem le_pointwise_smul_iff₀ {a : α} (ha : a ≠ 0) {S T : AddSubmonoid A} :
    S ≤ a • T ↔ a⁻¹ • S ≤ T 
Arguments: {α : Type u_1} {A : Type u_5} [AddMonoid A] [GroupWithZero α] [DistribMulAction α A] {a : α} (ha : a ≠ 0) {S T : AddSubmonoid A}
Goal: S ≤ a • T ↔ a⁻¹ • S ≤ T
-- AddSubmonoid.one_eq_mrange
theorem one_eq_mrange : (1 : AddSubmonoid R) = AddMonoidHom.mrange (Nat.castAddMonoidHom R) 
Arguments: {R : Type u_4} [AddMonoidWithOne R]
Goal: 1 = AddMonoidHom.mrange (Nat.castAddMonoidHom R)
-- AddSubmonoid.natCast_mem_one
theorem natCast_mem_one (n : ℕ) : (n : R) ∈ (1 : AddSubmonoid R) 
Arguments: {R : Type u_4} [AddMonoidWithOne R] (n : ℕ)
Goal: ↑n ∈ 1
-- AddSubmonoid.mem_one
@[simp]
theorem mem_one {x : R} : x ∈ (1 : AddSubmonoid R) ↔ ∃ n : ℕ, ↑n = x 
Arguments: {R : Type u_4} [AddMonoidWithOne R] {x : R}
Goal: x ∈ 1 ↔ ∃ n, ↑n = x
-- AddSubmonoid.one_eq_closure
theorem one_eq_closure : (1 : AddSubmonoid R) = closure {1} 
Arguments: {R : Type u_4} [AddMonoidWithOne R]
Goal: 1 = AddSubmonoid.closure {1}
-- AddSubmonoid.one_eq_closure_one_set
theorem one_eq_closure_one_set : (1 : AddSubmonoid R) = closure 1 
Arguments: {R : Type u_4} [AddMonoidWithOne R]
Goal: 1 = AddSubmonoid.closure 1
-- AddSubmonoid.mul_mem_mul
theorem mul_mem_mul {M N : AddSubmonoid R} {m n : R} (hm : m ∈ M) (hn : n ∈ N) : m * n ∈ M * N 
Arguments: {R : Type u_4} [NonUnitalNonAssocSemiring R] {M N : AddSubmonoid R} {m n : R} (hm : m ∈ M) (hn : n ∈ N)
Goal: m * n ∈ M * N
-- AddSubmonoid.mul_le
theorem mul_le {M N P : AddSubmonoid R} : M * N ≤ P ↔ ∀ m ∈ M, ∀ n ∈ N, m * n ∈ P 
Arguments: {R : Type u_4} [NonUnitalNonAssocSemiring R] {M N P : AddSubmonoid R}
Goal: M * N ≤ P ↔ ∀ m ∈ M, ∀ n ∈ N, m * n ∈ P
-- AddSubmonoid.mul_induction_on
@[elab_as_elim]
protected theorem mul_induction_on {M N : AddSubmonoid R} {C : R → Prop} {r : R} (hr : r ∈ M * N)
    (hm : ∀ m ∈ M, ∀ n ∈ N, C (m * n)) (ha : ∀ x y, C x → C y → C (x + y)) : C r 
Arguments: {R : Type u_4} [NonUnitalNonAssocSemiring R] {M N : AddSubmonoid R} {C : R → Prop} {r : R} (hr : r ∈ M * N) (hm : ∀ m ∈ M, ∀ n ∈ N, C (m * n)) (ha : ∀ (x y : R), C x → C y → C (x + y))
Goal: C r
-- AddSubmonoid.closure_mul_closure
theorem closure_mul_closure (S T : Set R) : closure S * closure T = closure (S * T) 
Arguments: {R : Type u_4} [NonUnitalNonAssocSemiring R] (S T : Set R)
Goal: AddSubmonoid.closure S * AddSubmonoid.closure T = AddSubmonoid.closure (S * T)
-- AddSubmonoid.mul_eq_closure_mul_set
theorem mul_eq_closure_mul_set (M N : AddSubmonoid R) :
    M * N = closure ((M : Set R) * (N : Set R)) 
Arguments: {R : Type u_4} [NonUnitalNonAssocSemiring R] (M N : AddSubmonoid R)
Goal: M * N = AddSubmonoid.closure (↑M * ↑N)
-- AddSubmonoid.mul_bot
@[simp]
theorem mul_bot (S : AddSubmonoid R) : S * ⊥ = ⊥ 
Arguments: {R : Type u_4} [NonUnitalNonAssocSemiring R] (S : AddSubmonoid R)
Goal: S * ⊥ = ⊥
-- AddSubmonoid.bot_mul
@[simp]
theorem bot_mul (S : AddSubmonoid R) : ⊥ * S = ⊥ 
Arguments: {R : Type u_4} [NonUnitalNonAssocSemiring R] (S : AddSubmonoid R)
Goal: ⊥ * S = ⊥
-- AddSubmonoid.mul_le_mul
@[mono]
theorem mul_le_mul {M N P Q : AddSubmonoid R} (hmp : M ≤ P) (hnq : N ≤ Q) : M * N ≤ P * Q 
Arguments: {R : Type u_4} [NonUnitalNonAssocSemiring R] {M N P Q : AddSubmonoid R} (hmp : M ≤ P) (hnq : N ≤ Q)
Goal: M * N ≤ P * Q
-- AddSubmonoid.mul_le_mul_left
theorem mul_le_mul_left {M N P : AddSubmonoid R} (h : M ≤ N) : M * P ≤ N * P 
Arguments: {R : Type u_4} [NonUnitalNonAssocSemiring R] {M N P : AddSubmonoid R} (h : M ≤ N)
Goal: M * P ≤ N * P
-- AddSubmonoid.mul_le_mul_right
theorem mul_le_mul_right {M N P : AddSubmonoid R} (h : N ≤ P) : M * N ≤ M * P 
Arguments: {R : Type u_4} [NonUnitalNonAssocSemiring R] {M N P : AddSubmonoid R} (h : N ≤ P)
Goal: M * N ≤ M * P
-- AddSubmonoid.mul_subset_mul
theorem mul_subset_mul {M N : AddSubmonoid R} :
    (↑M : Set R) * (↑N : Set R) ⊆ (↑(M * N) : Set R) 
Arguments: {R : Type u_4} [NonUnitalNonAssocSemiring R] {M N : AddSubmonoid R}
Goal: ↑M * ↑N ⊆ ↑(M * N)
-- AddSubmonoid.closure_pow
theorem closure_pow (s : Set R) : ∀ n : ℕ, closure s ^ n = closure (s ^ n)
  
Arguments: {R : Type u_4} [Semiring R] (s : Set R) (n : ℕ)
Goal: AddSubmonoid.closure s ^ n = AddSubmonoid.closure (s ^ n)
-- AddSubmonoid.pow_eq_closure_pow_set
theorem pow_eq_closure_pow_set (s : AddSubmonoid R) (n : ℕ) :
    s ^ n = closure ((s : Set R) ^ n) 
Arguments: {R : Type u_4} [Semiring R] (s : AddSubmonoid R) (n : ℕ)
Goal: s ^ n = AddSubmonoid.closure (↑s ^ n)
-- AddSubmonoid.pow_subset_pow
theorem pow_subset_pow {s : AddSubmonoid R} {n : ℕ} : (↑s : Set R) ^ n ⊆ ↑(s ^ n) 
Arguments: {R : Type u_4} [Semiring R] {s : AddSubmonoid R} {n : ℕ}
Goal: ↑s ^ n ⊆ ↑(s ^ n)
-- Set.IsPWO.submonoid_closure
@[to_additive]
theorem submonoid_closure (hpos : ∀ x : α, x ∈ s → 1 ≤ x) (h : s.IsPWO) :
    IsPWO (Submonoid.closure s : Set α) 
Arguments: {α : Type u_1} [OrderedCancelCommMonoid α] {s : Set α} (hpos : ∀ x ∈ s, 1 ≤ x) (h : s.IsPWO)
Goal: (↑(Submonoid.closure s)).IsPWO
-- Set.IsPWO.addSubmonoid_closure
@[to_additive]
theorem submonoid_closure (hpos : ∀ x : α, x ∈ s → 1 ≤ x) (h : s.IsPWO) :
    IsPWO (Submonoid.closure s : Set α) 
Arguments: {α : Type u_1} [OrderedCancelAddCommMonoid α] {s : Set α} (hpos : ∀ x ∈ s, 0 ≤ x) (h : s.IsPWO)
Goal: (↑(AddSubmonoid.closure s)).IsPWO
-- MulOpposite.op_pow
@[simp] lemma op_pow (x : α) (n : ℕ) : op (x ^ n) = op x ^ n 
Arguments: {α : Type u_1} [Monoid α] (x : α) (n : ℕ)
Goal: MulOpposite.op (x ^ n) = MulOpposite.op x ^ n
-- MulOpposite.unop_pow
@[simp] lemma unop_pow (x : αᵐᵒᵖ) (n : ℕ) : unop (x ^ n) = unop x ^ n 
Arguments: {α : Type u_1} [Monoid α] (x : αᵐᵒᵖ) (n : ℕ)
Goal: MulOpposite.unop (x ^ n) = MulOpposite.unop x ^ n
-- MulOpposite.op_zpow
@[simp] lemma op_zpow (x : α) (z : ℤ) : op (x ^ z) = op x ^ z 
Arguments: {α : Type u_1} [DivInvMonoid α] (x : α) (z : ℤ)
Goal: MulOpposite.op (x ^ z) = MulOpposite.op x ^ z
-- MulOpposite.unop_zpow
@[simp] lemma unop_zpow (x : αᵐᵒᵖ) (z : ℤ) : unop (x ^ z) = unop x ^ z 
Arguments: {α : Type u_1} [DivInvMonoid α] (x : αᵐᵒᵖ) (z : ℤ)
Goal: MulOpposite.unop (x ^ z) = MulOpposite.unop x ^ z
-- AddOpposite.op_natCast
@[to_additive (attr := simp, norm_cast)]
theorem op_natCast [NatCast α] (n : ℕ) : op (n : α) = n 
Arguments: {α : Type u_1} [NatCast α] (n : ℕ)
Goal: AddOpposite.op ↑n = ↑n
-- MulOpposite.op_natCast
@[to_additive (attr := simp, norm_cast)]
theorem op_natCast [NatCast α] (n : ℕ) : op (n : α) = n 
Arguments: {α : Type u_1} [NatCast α] (n : ℕ)
Goal: MulOpposite.op ↑n = ↑n
-- AddOpposite.op_ofNat
@[to_additive (attr := simp)]
theorem op_ofNat [NatCast α] (n : ℕ) [n.AtLeastTwo] :
    op (no_index (OfNat.ofNat n : α)) = OfNat.ofNat n 
Arguments: {α : Type u_1} [NatCast α] (n : ℕ) [n.AtLeastTwo]
Goal: AddOpposite.op (OfNat.ofNat n) = OfNat.ofNat n
-- MulOpposite.op_ofNat
@[to_additive (attr := simp)]
theorem op_ofNat [NatCast α] (n : ℕ) [n.AtLeastTwo] :
    op (no_index (OfNat.ofNat n : α)) = OfNat.ofNat n 
Arguments: {α : Type u_1} [NatCast α] (n : ℕ) [n.AtLeastTwo]
Goal: MulOpposite.op (OfNat.ofNat n) = OfNat.ofNat n
-- AddOpposite.op_intCast
@[to_additive (attr := simp, norm_cast)]
theorem op_intCast [IntCast α] (n : ℤ) : op (n : α) = n 
Arguments: {α : Type u_1} [IntCast α] (n : ℤ)
Goal: AddOpposite.op ↑n = ↑n
-- MulOpposite.op_intCast
@[to_additive (attr := simp, norm_cast)]
theorem op_intCast [IntCast α] (n : ℤ) : op (n : α) = n 
Arguments: {α : Type u_1} [IntCast α] (n : ℤ)
Goal: MulOpposite.op ↑n = ↑n
-- MulOpposite.unop_natCast
@[to_additive (attr := simp, norm_cast)]
theorem unop_natCast [NatCast α] (n : ℕ) : unop (n : αᵐᵒᵖ) = n 
Arguments: {α : Type u_1} [NatCast α] (n : ℕ)
Goal: MulOpposite.unop ↑n = ↑n
-- AddOpposite.unop_natCast
@[to_additive (attr := simp, norm_cast)]
theorem unop_natCast [NatCast α] (n : ℕ) : unop (n : αᵐᵒᵖ) = n 
Arguments: {α : Type u_1} [NatCast α] (n : ℕ)
Goal: AddOpposite.unop ↑n = ↑n
-- MulOpposite.unop_ofNat
@[to_additive (attr := simp)]
theorem unop_ofNat [NatCast α] (n : ℕ) [n.AtLeastTwo] :
    unop (no_index (OfNat.ofNat n : αᵐᵒᵖ)) = OfNat.ofNat n 
Arguments: {α : Type u_1} [NatCast α] (n : ℕ) [n.AtLeastTwo]
Goal: MulOpposite.unop (OfNat.ofNat n) = OfNat.ofNat n
-- AddOpposite.unop_ofNat
@[to_additive (attr := simp)]
theorem unop_ofNat [NatCast α] (n : ℕ) [n.AtLeastTwo] :
    unop (no_index (OfNat.ofNat n : αᵐᵒᵖ)) = OfNat.ofNat n 
Arguments: {α : Type u_1} [NatCast α] (n : ℕ) [n.AtLeastTwo]
Goal: AddOpposite.unop (OfNat.ofNat n) = OfNat.ofNat n
-- MulOpposite.unop_intCast
@[to_additive (attr := simp, norm_cast)]
theorem unop_intCast [IntCast α] (n : ℤ) : unop (n : αᵐᵒᵖ) = n 
Arguments: {α : Type u_1} [IntCast α] (n : ℤ)
Goal: MulOpposite.unop ↑n = ↑n
-- AddOpposite.unop_intCast
@[to_additive (attr := simp, norm_cast)]
theorem unop_intCast [IntCast α] (n : ℤ) : unop (n : αᵐᵒᵖ) = n 
Arguments: {α : Type u_1} [IntCast α] (n : ℤ)
Goal: AddOpposite.unop ↑n = ↑n
-- AddOpposite.unop_sub
@[to_additive (attr := simp)]
theorem unop_div [DivInvMonoid α] (x y : αᵐᵒᵖ) : unop (x / y) = (unop y)⁻¹ * unop x 
Arguments: {α : Type u_1} [SubNegMonoid α] (x y : αᵃᵒᵖ)
Goal: AddOpposite.unop (x - y) = -AddOpposite.unop y + AddOpposite.unop x
-- MulOpposite.unop_div
@[to_additive (attr := simp)]
theorem unop_div [DivInvMonoid α] (x y : αᵐᵒᵖ) : unop (x / y) = (unop y)⁻¹ * unop x 
Arguments: {α : Type u_1} [DivInvMonoid α] (x y : αᵐᵒᵖ)
Goal: MulOpposite.unop (x / y) = (MulOpposite.unop y)⁻¹ * MulOpposite.unop x
-- AddOpposite.op_sub
@[to_additive (attr := simp)]
theorem op_div [DivInvMonoid α] (x y : α) : op (x / y) = (op y)⁻¹ * op x 
Arguments: {α : Type u_1} [SubNegMonoid α] (x y : α)
Goal: AddOpposite.op (x - y) = -AddOpposite.op y + AddOpposite.op x
-- MulOpposite.op_div
@[to_additive (attr := simp)]
theorem op_div [DivInvMonoid α] (x y : α) : op (x / y) = (op y)⁻¹ * op x 
Arguments: {α : Type u_1} [DivInvMonoid α] (x y : α)
Goal: MulOpposite.op (x / y) = (MulOpposite.op y)⁻¹ * MulOpposite.op x
-- AddOpposite.addSemiconjBy_op
@[to_additive (attr := simp)]
theorem semiconjBy_op [Mul α] {a x y : α} : SemiconjBy (op a) (op y) (op x) ↔ SemiconjBy a x y 
Arguments: {α : Type u_1} [Add α] {a x y : α}
Goal: AddSemiconjBy (AddOpposite.op a) (AddOpposite.op y) (AddOpposite.op x) ↔ AddSemiconjBy a x y
-- MulOpposite.semiconjBy_op
@[to_additive (attr := simp)]
theorem semiconjBy_op [Mul α] {a x y : α} : SemiconjBy (op a) (op y) (op x) ↔ SemiconjBy a x y 
Arguments: {α : Type u_1} [Mul α] {a x y : α}
Goal: SemiconjBy (MulOpposite.op a) (MulOpposite.op y) (MulOpposite.op x) ↔ SemiconjBy a x y
-- MulOpposite.semiconjBy_unop
@[to_additive (attr := simp, nolint simpComm)]
theorem semiconjBy_unop [Mul α] {a x y : αᵐᵒᵖ} :
    SemiconjBy (unop a) (unop y) (unop x) ↔ SemiconjBy a x y 
Arguments: {α : Type u_1} [Mul α] {a x y : αᵐᵒᵖ}
Goal: SemiconjBy (MulOpposite.unop a) (MulOpposite.unop y) (MulOpposite.unop x) ↔ SemiconjBy a x y