ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- AddSubmonoid.map_strictMono_of_injective
@[to_additive]
theorem map_strictMono_of_injective : StrictMono (map f) 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {f : F} (hf : Function.Injective ⇑f)
Goal: StrictMono (AddSubmonoid.map f)
-- Submonoid.map_comap_eq_of_surjective
@[to_additive]
theorem map_comap_eq_of_surjective (S : Submonoid N) : (S.comap f).map f = S 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {f : F} (hf : Function.Surjective ⇑f) (S : Submonoid N)
Goal: Submonoid.map f (Submonoid.comap f S) = S
-- AddSubmonoid.map_comap_eq_of_surjective
@[to_additive]
theorem map_comap_eq_of_surjective (S : Submonoid N) : (S.comap f).map f = S 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {f : F} (hf : Function.Surjective ⇑f) (S : AddSubmonoid N)
Goal: AddSubmonoid.map f (AddSubmonoid.comap f S) = S
-- AddSubmonoid.map_surjective_of_surjective
@[to_additive]
theorem map_surjective_of_surjective : Function.Surjective (map f) 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {f : F} (hf : Function.Surjective ⇑f)
Goal: Function.Surjective (AddSubmonoid.map f)
-- Submonoid.map_surjective_of_surjective
@[to_additive]
theorem map_surjective_of_surjective : Function.Surjective (map f) 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {f : F} (hf : Function.Surjective ⇑f)
Goal: Function.Surjective (Submonoid.map f)
-- Submonoid.comap_injective_of_surjective
@[to_additive]
theorem comap_injective_of_surjective : Function.Injective (comap f) 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {f : F} (hf : Function.Surjective ⇑f)
Goal: Function.Injective (Submonoid.comap f)
-- AddSubmonoid.comap_injective_of_surjective
@[to_additive]
theorem comap_injective_of_surjective : Function.Injective (comap f) 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {f : F} (hf : Function.Surjective ⇑f)
Goal: Function.Injective (AddSubmonoid.comap f)
-- AddSubmonoid.map_inf_comap_of_surjective
@[to_additive]
theorem map_inf_comap_of_surjective (S T : Submonoid N) : (S.comap f ⊓ T.comap f).map f = S ⊓ T 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {f : F} (hf : Function.Surjective ⇑f) (S T : AddSubmonoid N)
Goal: AddSubmonoid.map f (AddSubmonoid.comap f S ⊓ AddSubmonoid.comap f T) = S ⊓ T
-- Submonoid.map_inf_comap_of_surjective
@[to_additive]
theorem map_inf_comap_of_surjective (S T : Submonoid N) : (S.comap f ⊓ T.comap f).map f = S ⊓ T 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {f : F} (hf : Function.Surjective ⇑f) (S T : Submonoid N)
Goal: Submonoid.map f (Submonoid.comap f S ⊓ Submonoid.comap f T) = S ⊓ T
-- Submonoid.map_iInf_comap_of_surjective
@[to_additive]
theorem map_iInf_comap_of_surjective (S : ι → Submonoid N) : (⨅ i, (S i).comap f).map f = iInf S 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {ι : Type u_5} {f : F} (hf : Function.Surjective ⇑f) (S : ι → Submonoid N)
Goal: Submonoid.map f (⨅ i, Submonoid.comap f (S i)) = iInf S
-- AddSubmonoid.map_iInf_comap_of_surjective
@[to_additive]
theorem map_iInf_comap_of_surjective (S : ι → Submonoid N) : (⨅ i, (S i).comap f).map f = iInf S 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {ι : Type u_5} {f : F} (hf : Function.Surjective ⇑f) (S : ι → AddSubmonoid N)
Goal: AddSubmonoid.map f (⨅ i, AddSubmonoid.comap f (S i)) = iInf S
-- AddSubmonoid.map_sup_comap_of_surjective
@[to_additive]
theorem map_sup_comap_of_surjective (S T : Submonoid N) : (S.comap f ⊔ T.comap f).map f = S ⊔ T 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {f : F} (hf : Function.Surjective ⇑f) (S T : AddSubmonoid N)
Goal: AddSubmonoid.map f (AddSubmonoid.comap f S ⊔ AddSubmonoid.comap f T) = S ⊔ T
-- Submonoid.map_sup_comap_of_surjective
@[to_additive]
theorem map_sup_comap_of_surjective (S T : Submonoid N) : (S.comap f ⊔ T.comap f).map f = S ⊔ T 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {f : F} (hf : Function.Surjective ⇑f) (S T : Submonoid N)
Goal: Submonoid.map f (Submonoid.comap f S ⊔ Submonoid.comap f T) = S ⊔ T
-- Submonoid.map_iSup_comap_of_surjective
@[to_additive]
theorem map_iSup_comap_of_surjective (S : ι → Submonoid N) : (⨆ i, (S i).comap f).map f = iSup S 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {ι : Type u_5} {f : F} (hf : Function.Surjective ⇑f) (S : ι → Submonoid N)
Goal: Submonoid.map f (⨆ i, Submonoid.comap f (S i)) = iSup S
-- AddSubmonoid.map_iSup_comap_of_surjective
@[to_additive]
theorem map_iSup_comap_of_surjective (S : ι → Submonoid N) : (⨆ i, (S i).comap f).map f = iSup S 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {ι : Type u_5} {f : F} (hf : Function.Surjective ⇑f) (S : ι → AddSubmonoid N)
Goal: AddSubmonoid.map f (⨆ i, AddSubmonoid.comap f (S i)) = iSup S
-- Submonoid.comap_le_comap_iff_of_surjective
@[to_additive]
theorem comap_le_comap_iff_of_surjective {S T : Submonoid N} : S.comap f ≤ T.comap f ↔ S ≤ T 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {f : F} (hf : Function.Surjective ⇑f) {S T : Submonoid N}
Goal: Submonoid.comap f S ≤ Submonoid.comap f T ↔ S ≤ T
-- AddSubmonoid.comap_le_comap_iff_of_surjective
@[to_additive]
theorem comap_le_comap_iff_of_surjective {S T : Submonoid N} : S.comap f ≤ T.comap f ↔ S ≤ T 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {f : F} (hf : Function.Surjective ⇑f) {S T : AddSubmonoid N}
Goal: AddSubmonoid.comap f S ≤ AddSubmonoid.comap f T ↔ S ≤ T
-- Submonoid.comap_strictMono_of_surjective
@[to_additive]
theorem comap_strictMono_of_surjective : StrictMono (comap f) 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {f : F} (hf : Function.Surjective ⇑f)
Goal: StrictMono (Submonoid.comap f)
-- AddSubmonoid.comap_strictMono_of_surjective
@[to_additive]
theorem comap_strictMono_of_surjective : StrictMono (comap f) 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {f : F} (hf : Function.Surjective ⇑f)
Goal: StrictMono (AddSubmonoid.comap f)
-- ZeroMemClass.coe_zero
@[to_additive (attr := simp, norm_cast)]
theorem coe_one : ((1 : S') : M₁) = 1 
Arguments: {A : Type u_4} {M₁ : Type u_5} [SetLike A M₁] [Zero M₁] [hA : ZeroMemClass A M₁] (S' : A)
Goal: ↑0 = 0
-- OneMemClass.coe_one
@[to_additive (attr := simp, norm_cast)]
theorem coe_one : ((1 : S') : M₁) = 1 
Arguments: {A : Type u_4} {M₁ : Type u_5} [SetLike A M₁] [One M₁] [hA : OneMemClass A M₁] (S' : A)
Goal: ↑1 = 1
-- ZeroMemClass.coe_eq_zero
@[to_additive (attr := simp, norm_cast)]
theorem coe_eq_one {x : S'} : (↑x : M₁) = 1 ↔ x = 1 
Arguments: {A : Type u_4} {M₁ : Type u_5} [SetLike A M₁] [Zero M₁] [hA : ZeroMemClass A M₁] {S' : A} {x : ↥S'}
Goal: ↑x = 0 ↔ x = 0
-- OneMemClass.coe_eq_one
@[to_additive (attr := simp, norm_cast)]
theorem coe_eq_one {x : S'} : (↑x : M₁) = 1 ↔ x = 1 
Arguments: {A : Type u_4} {M₁ : Type u_5} [SetLike A M₁] [One M₁] [hA : OneMemClass A M₁] {S' : A} {x : ↥S'}
Goal: ↑x = 1 ↔ x = 1
-- ZeroMemClass.zero_def
@[to_additive]
theorem one_def : (1 : S') = ⟨1, OneMemClass.one_mem S'⟩ 
Arguments: {A : Type u_4} {M₁ : Type u_5} [SetLike A M₁] [Zero M₁] [hA : ZeroMemClass A M₁] (S' : A)
Goal: 0 = ⟨0, ⋯⟩
-- OneMemClass.one_def
@[to_additive]
theorem one_def : (1 : S') = ⟨1, OneMemClass.one_mem S'⟩ 
Arguments: {A : Type u_4} {M₁ : Type u_5} [SetLike A M₁] [One M₁] [hA : OneMemClass A M₁] (S' : A)
Goal: 1 = ⟨1, ⋯⟩
-- AddSubmonoidClass.coe_nsmul
@[to_additive (attr := simp, norm_cast)]
theorem coe_pow {M} [Monoid M] {A : Type*} [SetLike A M] [SubmonoidClass A M] {S : A} (x : S)
    (n : ℕ) : ↑(x ^ n) = (x : M) ^ n 
Arguments: {M : Type u_6} [AddMonoid M] {A : Type u_5} [SetLike A M] [AddSubmonoidClass A M] {S : A} (x : ↥S) (n : ℕ)
Goal: ↑(n • x) = n • ↑x
-- SubmonoidClass.coe_pow
@[to_additive (attr := simp, norm_cast)]
theorem coe_pow {M} [Monoid M] {A : Type*} [SetLike A M] [SubmonoidClass A M] {S : A} (x : S)
    (n : ℕ) : ↑(x ^ n) = (x : M) ^ n 
Arguments: {M : Type u_6} [Monoid M] {A : Type u_5} [SetLike A M] [SubmonoidClass A M] {S : A} (x : ↥S) (n : ℕ)
Goal: ↑(x ^ n) = ↑x ^ n
-- SubmonoidClass.mk_pow
@[to_additive (attr := simp)]
theorem mk_pow {M} [Monoid M] {A : Type*} [SetLike A M] [SubmonoidClass A M] {S : A} (x : M)
    (hx : x ∈ S) (n : ℕ) : (⟨x, hx⟩ : S) ^ n = ⟨x ^ n, pow_mem hx n⟩ 
Arguments: {M : Type u_6} [Monoid M] {A : Type u_5} [SetLike A M] [SubmonoidClass A M] {S : A} (x : M) (hx : x ∈ S) (n : ℕ)
Goal: ⟨x, hx⟩ ^ n = ⟨x ^ n, ⋯⟩
-- AddSubmonoidClass.mk_nsmul
@[to_additive (attr := simp)]
theorem mk_pow {M} [Monoid M] {A : Type*} [SetLike A M] [SubmonoidClass A M] {S : A} (x : M)
    (hx : x ∈ S) (n : ℕ) : (⟨x, hx⟩ : S) ^ n = ⟨x ^ n, pow_mem hx n⟩ 
Arguments: {M : Type u_6} [AddMonoid M] {A : Type u_5} [SetLike A M] [AddSubmonoidClass A M] {S : A} (x : M) (hx : x ∈ S) (n : ℕ)
Goal: n • ⟨x, hx⟩ = ⟨n • x, ⋯⟩
-- SubmonoidClass.coe_subtype
@[to_additive (attr := simp)]
theorem coe_subtype : (SubmonoidClass.subtype S' : S' → M) = Subtype.val 
Arguments: {M : Type u_1} [MulOneClass M] {A : Type u_4} [SetLike A M] [hA : SubmonoidClass A M] (S' : A)
Goal: ⇑(SubmonoidClass.subtype S') = Subtype.val
-- AddSubmonoidClass.coe_subtype
@[to_additive (attr := simp)]
theorem coe_subtype : (SubmonoidClass.subtype S' : S' → M) = Subtype.val 
Arguments: {M : Type u_1} [AddZeroClass M] {A : Type u_4} [SetLike A M] [hA : AddSubmonoidClass A M] (S' : A)
Goal: ⇑(AddSubmonoidClass.subtype S') = Subtype.val
-- AddSubmonoid.coe_add
@[to_additive (attr := simp, norm_cast)]
theorem coe_mul (x y : S) : (↑(x * y) : M) = ↑x * ↑y 
Arguments: {M : Type u_1} [AddZeroClass M] (S : AddSubmonoid M) (x y : ↥S)
Goal: ↑(x + y) = ↑x + ↑y
-- Submonoid.coe_mul
@[to_additive (attr := simp, norm_cast)]
theorem coe_mul (x y : S) : (↑(x * y) : M) = ↑x * ↑y 
Arguments: {M : Type u_1} [MulOneClass M] (S : Submonoid M) (x y : ↥S)
Goal: ↑(x * y) = ↑x * ↑y
-- AddSubmonoid.coe_zero
@[to_additive (attr := simp, norm_cast)]
theorem coe_one : ((1 : S) : M) = 1 
Arguments: {M : Type u_1} [AddZeroClass M] (S : AddSubmonoid M)
Goal: ↑0 = 0
-- Submonoid.coe_one
@[to_additive (attr := simp, norm_cast)]
theorem coe_one : ((1 : S) : M) = 1 
Arguments: {M : Type u_1} [MulOneClass M] (S : Submonoid M)
Goal: ↑1 = 1
-- Submonoid.mk_eq_one
@[to_additive (attr := simp)]
lemma mk_eq_one {a : M} {ha} : (⟨a, ha⟩ : S) = 1 ↔ a = 1 
Arguments: {M : Type u_1} [MulOneClass M] (S : Submonoid M) {a : M} {ha : a ∈ S}
Goal: ⟨a, ha⟩ = 1 ↔ a = 1
-- AddSubmonoid.mk_eq_zero
@[to_additive (attr := simp)]
lemma mk_eq_one {a : M} {ha} : (⟨a, ha⟩ : S) = 1 ↔ a = 1 
Arguments: {M : Type u_1} [AddZeroClass M] (S : AddSubmonoid M) {a : M} {ha : a ∈ S}
Goal: ⟨a, ha⟩ = 0 ↔ a = 0
-- AddSubmonoid.mk_add_mk
@[to_additive (attr := simp)]
theorem mk_mul_mk (x y : M) (hx : x ∈ S) (hy : y ∈ S) :
    (⟨x, hx⟩ : S) * ⟨y, hy⟩ = ⟨x * y, S.mul_mem hx hy⟩ 
Arguments: {M : Type u_1} [AddZeroClass M] (S : AddSubmonoid M) (x y : M) (hx : x ∈ S) (hy : y ∈ S)
Goal: ⟨x, hx⟩ + ⟨y, hy⟩ = ⟨x + y, ⋯⟩
-- Submonoid.mk_mul_mk
@[to_additive (attr := simp)]
theorem mk_mul_mk (x y : M) (hx : x ∈ S) (hy : y ∈ S) :
    (⟨x, hx⟩ : S) * ⟨y, hy⟩ = ⟨x * y, S.mul_mem hx hy⟩ 
Arguments: {M : Type u_1} [MulOneClass M] (S : Submonoid M) (x y : M) (hx : x ∈ S) (hy : y ∈ S)
Goal: ⟨x, hx⟩ * ⟨y, hy⟩ = ⟨x * y, ⋯⟩
-- AddSubmonoid.add_def
@[to_additive]
theorem mul_def (x y : S) : x * y = ⟨x * y, S.mul_mem x.2 y.2⟩ 
Arguments: {M : Type u_1} [AddZeroClass M] (S : AddSubmonoid M) (x y : ↥S)
Goal: x + y = ⟨↑x + ↑y, ⋯⟩
-- Submonoid.mul_def
@[to_additive]
theorem mul_def (x y : S) : x * y = ⟨x * y, S.mul_mem x.2 y.2⟩ 
Arguments: {M : Type u_1} [MulOneClass M] (S : Submonoid M) (x y : ↥S)
Goal: x * y = ⟨↑x * ↑y, ⋯⟩
-- Submonoid.one_def
@[to_additive]
theorem one_def : (1 : S) = ⟨1, S.one_mem⟩ 
Arguments: {M : Type u_1} [MulOneClass M] (S : Submonoid M)
Goal: 1 = ⟨1, ⋯⟩
-- AddSubmonoid.zero_def
@[to_additive]
theorem one_def : (1 : S) = ⟨1, S.one_mem⟩ 
Arguments: {M : Type u_1} [AddZeroClass M] (S : AddSubmonoid M)
Goal: 0 = ⟨0, ⋯⟩
-- Submonoid.pow_mem
@[to_additive]
protected theorem pow_mem {M : Type*} [Monoid M] (S : Submonoid M) {x : M} (hx : x ∈ S) (n : ℕ) :
    x ^ n ∈ S 
Arguments: {M : Type u_5} [Monoid M] (S : Submonoid M) {x : M} (hx : x ∈ S) (n : ℕ)
Goal: x ^ n ∈ S
-- AddSubmonoid.nsmul_mem
@[to_additive]
protected theorem pow_mem {M : Type*} [Monoid M] (S : Submonoid M) {x : M} (hx : x ∈ S) (n : ℕ) :
    x ^ n ∈ S 
Arguments: {M : Type u_5} [AddMonoid M] (S : AddSubmonoid M) {x : M} (hx : x ∈ S) (n : ℕ)
Goal: n • x ∈ S
-- AddSubmonoid.coe_subtype
@[to_additive (attr := simp)]
theorem coe_subtype : ⇑S.subtype = Subtype.val 
Arguments: {M : Type u_1} [AddZeroClass M] (S : AddSubmonoid M)
Goal: ⇑S.subtype = Subtype.val
-- Submonoid.coe_subtype
@[to_additive (attr := simp)]
theorem coe_subtype : ⇑S.subtype = Subtype.val 
Arguments: {M : Type u_1} [MulOneClass M] (S : Submonoid M)
Goal: ⇑S.subtype = Subtype.val
-- AddSubmonoid.topEquiv_symm_apply_coe
@[to_additive (attr := simps) "The top additive submonoid is isomorphic to the additive monoid."]
def topEquiv : (⊤ : Submonoid M) ≃* M 
Arguments: {M : Type u_1} [AddZeroClass M] (x : M)
Goal: ↑(AddSubmonoid.topEquiv.symm x) = x
-- AddSubmonoid.topEquiv_apply
@[to_additive (attr := simps) "The top additive submonoid is isomorphic to the additive monoid."]
def topEquiv : (⊤ : Submonoid M) ≃* M 
Arguments: {M : Type u_1} [AddZeroClass M] (x : ↥⊤)
Goal: AddSubmonoid.topEquiv x = ↑x
-- Submonoid.topEquiv_symm_apply_coe
@[to_additive (attr := simps) "The top additive submonoid is isomorphic to the additive monoid."]
def topEquiv : (⊤ : Submonoid M) ≃* M 
Arguments: {M : Type u_1} [MulOneClass M] (x : M)
Goal: ↑(Submonoid.topEquiv.symm x) = x
-- Submonoid.topEquiv_apply
@[to_additive (attr := simps) "The top additive submonoid is isomorphic to the additive monoid."]
def topEquiv : (⊤ : Submonoid M) ≃* M 
Arguments: {M : Type u_1} [MulOneClass M] (x : ↥⊤)
Goal: Submonoid.topEquiv x = ↑x
-- Submonoid.topEquiv_toMonoidHom
@[to_additive (attr := simp)]
theorem topEquiv_toMonoidHom : ((topEquiv : _ ≃* M) : _ →* M) = (⊤ : Submonoid M).subtype 
Arguments: {M : Type u_1} [MulOneClass M]
Goal: ↑Submonoid.topEquiv = ⊤.subtype
-- AddSubmonoid.topEquiv_toAddMonoidHom
@[to_additive (attr := simp)]
theorem topEquiv_toMonoidHom : ((topEquiv : _ ≃* M) : _ →* M) = (⊤ : Submonoid M).subtype 
Arguments: {M : Type u_1} [AddZeroClass M]
Goal: ↑AddSubmonoid.topEquiv = ⊤.subtype
-- AddSubmonoid.coe_equivMapOfInjective_apply
@[to_additive (attr := simp)]
theorem coe_equivMapOfInjective_apply (f : M →* N) (hf : Function.Injective f) (x : S) :
    (equivMapOfInjective S f hf x : N) = f x 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] (S : AddSubmonoid M) (f : M →+ N) (hf : Function.Injective ⇑f) (x : ↥S)
Goal: ↑((S.equivMapOfInjective f hf) x) = f ↑x
-- Submonoid.coe_equivMapOfInjective_apply
@[to_additive (attr := simp)]
theorem coe_equivMapOfInjective_apply (f : M →* N) (hf : Function.Injective f) (x : S) :
    (equivMapOfInjective S f hf x : N) = f x 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] (S : Submonoid M) (f : M →* N) (hf : Function.Injective ⇑f) (x : ↥S)
Goal: ↑((S.equivMapOfInjective f hf) x) = f ↑x
-- Submonoid.closure_closure_coe_preimage
@[to_additive (attr := simp)]
theorem closure_closure_coe_preimage {s : Set M} : closure (((↑) : closure s → M) ⁻¹' s) = ⊤ 
Arguments: {M : Type u_1} [MulOneClass M] {s : Set M}
Goal: Submonoid.closure (Subtype.val ⁻¹' s) = ⊤
-- AddSubmonoid.closure_closure_coe_preimage
@[to_additive (attr := simp)]
theorem closure_closure_coe_preimage {s : Set M} : closure (((↑) : closure s → M) ⁻¹' s) = ⊤ 
Arguments: {M : Type u_1} [AddZeroClass M] {s : Set M}
Goal: AddSubmonoid.closure (Subtype.val ⁻¹' s) = ⊤
-- AddSubmonoid.coe_prod
@[to_additive coe_prod]
theorem coe_prod (s : Submonoid M) (t : Submonoid N) :
    (s.prod t : Set (M × N)) = (s : Set M) ×ˢ (t : Set N) 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] (s : AddSubmonoid M) (t : AddSubmonoid N)
Goal: ↑(s.prod t) = ↑s ×ˢ ↑t
-- Submonoid.coe_prod
@[to_additive coe_prod]
theorem coe_prod (s : Submonoid M) (t : Submonoid N) :
    (s.prod t : Set (M × N)) = (s : Set M) ×ˢ (t : Set N) 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] (s : Submonoid M) (t : Submonoid N)
Goal: ↑(s.prod t) = ↑s ×ˢ ↑t
-- AddSubmonoid.mem_prod
@[to_additive mem_prod]
theorem mem_prod {s : Submonoid M} {t : Submonoid N} {p : M × N} :
    p ∈ s.prod t ↔ p.1 ∈ s ∧ p.2 ∈ t 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {s : AddSubmonoid M} {t : AddSubmonoid N} {p : M × N}
Goal: p ∈ s.prod t ↔ p.1 ∈ s ∧ p.2 ∈ t
-- Submonoid.mem_prod
@[to_additive mem_prod]
theorem mem_prod {s : Submonoid M} {t : Submonoid N} {p : M × N} :
    p ∈ s.prod t ↔ p.1 ∈ s ∧ p.2 ∈ t 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {s : Submonoid M} {t : Submonoid N} {p : M × N}
Goal: p ∈ s.prod t ↔ p.1 ∈ s ∧ p.2 ∈ t
-- AddSubmonoid.prod_mono
@[to_additive prod_mono]
theorem prod_mono {s₁ s₂ : Submonoid M} {t₁ t₂ : Submonoid N} (hs : s₁ ≤ s₂) (ht : t₁ ≤ t₂) :
    s₁.prod t₁ ≤ s₂.prod t₂ 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {s₁ s₂ : AddSubmonoid M} {t₁ t₂ : AddSubmonoid N} (hs : s₁ ≤ s₂) (ht : t₁ ≤ t₂)
Goal: s₁.prod t₁ ≤ s₂.prod t₂
-- Submonoid.prod_mono
@[to_additive prod_mono]
theorem prod_mono {s₁ s₂ : Submonoid M} {t₁ t₂ : Submonoid N} (hs : s₁ ≤ s₂) (ht : t₁ ≤ t₂) :
    s₁.prod t₁ ≤ s₂.prod t₂ 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {s₁ s₂ : Submonoid M} {t₁ t₂ : Submonoid N} (hs : s₁ ≤ s₂) (ht : t₁ ≤ t₂)
Goal: s₁.prod t₁ ≤ s₂.prod t₂
-- Submonoid.prod_top
@[to_additive prod_top]
theorem prod_top (s : Submonoid M) : s.prod (⊤ : Submonoid N) = s.comap (MonoidHom.fst M N) 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] (s : Submonoid M)
Goal: s.prod ⊤ = Submonoid.comap (MonoidHom.fst M N) s
-- AddSubmonoid.prod_top
@[to_additive prod_top]
theorem prod_top (s : Submonoid M) : s.prod (⊤ : Submonoid N) = s.comap (MonoidHom.fst M N) 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] (s : AddSubmonoid M)
Goal: s.prod ⊤ = AddSubmonoid.comap (AddMonoidHom.fst M N) s
-- AddSubmonoid.top_prod
@[to_additive top_prod]
theorem top_prod (s : Submonoid N) : (⊤ : Submonoid M).prod s = s.comap (MonoidHom.snd M N) 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] (s : AddSubmonoid N)
Goal: ⊤.prod s = AddSubmonoid.comap (AddMonoidHom.snd M N) s
-- Submonoid.top_prod
@[to_additive top_prod]
theorem top_prod (s : Submonoid N) : (⊤ : Submonoid M).prod s = s.comap (MonoidHom.snd M N) 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] (s : Submonoid N)
Goal: ⊤.prod s = Submonoid.comap (MonoidHom.snd M N) s
-- Submonoid.top_prod_top
@[to_additive (attr := simp) top_prod_top]
theorem top_prod_top : (⊤ : Submonoid M).prod (⊤ : Submonoid N) = ⊤ 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N]
Goal: ⊤.prod ⊤ = ⊤
-- AddSubmonoid.top_prod_top
@[to_additive (attr := simp) top_prod_top]
theorem top_prod_top : (⊤ : Submonoid M).prod (⊤ : Submonoid N) = ⊤ 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N]
Goal: ⊤.prod ⊤ = ⊤
-- Submonoid.bot_prod_bot
@[to_additive bot_prod_bot]
theorem bot_prod_bot : (⊥ : Submonoid M).prod (⊥ : Submonoid N) = ⊥ 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N]
Goal: ⊥.prod ⊥ = ⊥
-- AddSubmonoid.bot_prod_bot
@[to_additive bot_prod_bot]
theorem bot_prod_bot : (⊥ : Submonoid M).prod (⊥ : Submonoid N) = ⊥ 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N]
Goal: ⊥.prod ⊥ = ⊥
-- Submonoid.map_inl
@[to_additive]
theorem map_inl (s : Submonoid M) : s.map (inl M N) = s.prod ⊥ 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] (s : Submonoid M)
Goal: Submonoid.map (MonoidHom.inl M N) s = s.prod ⊥
-- AddSubmonoid.map_inl
@[to_additive]
theorem map_inl (s : Submonoid M) : s.map (inl M N) = s.prod ⊥ 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] (s : AddSubmonoid M)
Goal: AddSubmonoid.map (AddMonoidHom.inl M N) s = s.prod ⊥
-- Submonoid.map_inr
@[to_additive]
theorem map_inr (s : Submonoid N) : s.map (inr M N) = prod ⊥ s 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] (s : Submonoid N)
Goal: Submonoid.map (MonoidHom.inr M N) s = ⊥.prod s
-- AddSubmonoid.map_inr
@[to_additive]
theorem map_inr (s : Submonoid N) : s.map (inr M N) = prod ⊥ s 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] (s : AddSubmonoid N)
Goal: AddSubmonoid.map (AddMonoidHom.inr M N) s = ⊥.prod s
-- Submonoid.prod_bot_sup_bot_prod
@[to_additive (attr := simp) prod_bot_sup_bot_prod]
theorem prod_bot_sup_bot_prod (s : Submonoid M) (t : Submonoid N) :
    (prod s ⊥) ⊔ (prod ⊥ t) = prod s t 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] (s : Submonoid M) (t : Submonoid N)
Goal: s.prod ⊥ ⊔ ⊥.prod t = s.prod t
-- AddSubmonoid.prod_bot_sup_bot_prod
@[to_additive (attr := simp) prod_bot_sup_bot_prod]
theorem prod_bot_sup_bot_prod (s : Submonoid M) (t : Submonoid N) :
    (prod s ⊥) ⊔ (prod ⊥ t) = prod s t 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] (s : AddSubmonoid M) (t : AddSubmonoid N)
Goal: s.prod ⊥ ⊔ ⊥.prod t = s.prod t
-- Submonoid.mem_map_equiv
@[to_additive]
theorem mem_map_equiv {f : M ≃* N} {K : Submonoid M} {x : N} :
    x ∈ K.map f.toMonoidHom ↔ f.symm x ∈ K 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {f : M ≃* N} {K : Submonoid M} {x : N}
Goal: x ∈ Submonoid.map f.toMonoidHom K ↔ f.symm x ∈ K
-- AddSubmonoid.mem_map_equiv
@[to_additive]
theorem mem_map_equiv {f : M ≃* N} {K : Submonoid M} {x : N} :
    x ∈ K.map f.toMonoidHom ↔ f.symm x ∈ K 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {f : M ≃+ N} {K : AddSubmonoid M} {x : N}
Goal: x ∈ AddSubmonoid.map f.toAddMonoidHom K ↔ f.symm x ∈ K
-- AddSubmonoid.map_equiv_eq_comap_symm
@[to_additive]
theorem map_equiv_eq_comap_symm (f : M ≃* N) (K : Submonoid M) :
    K.map f.toMonoidHom = K.comap f.symm.toMonoidHom 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] (f : M ≃+ N) (K : AddSubmonoid M)
Goal: AddSubmonoid.map f.toAddMonoidHom K = AddSubmonoid.comap f.symm.toAddMonoidHom K
-- Submonoid.map_equiv_eq_comap_symm
@[to_additive]
theorem map_equiv_eq_comap_symm (f : M ≃* N) (K : Submonoid M) :
    K.map f.toMonoidHom = K.comap f.symm.toMonoidHom 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] (f : M ≃* N) (K : Submonoid M)
Goal: Submonoid.map f.toMonoidHom K = Submonoid.comap f.symm.toMonoidHom K