ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- AddEquiv.toEquiv_symm
@[to_additive (attr := simp)]
theorem toEquiv_symm (f : M ≃* N) : (f.symm : N ≃ M) = (f : M ≃ N).symm 
Arguments: {M : Type u_6} {N : Type u_7} [Add M] [Add N] (f : M ≃+ N)
Goal: ↑f.symm = (↑f).symm
-- MulEquiv.toEquiv_symm
@[to_additive (attr := simp)]
theorem toEquiv_symm (f : M ≃* N) : (f.symm : N ≃ M) = (f : M ≃ N).symm 
Arguments: {M : Type u_6} {N : Type u_7} [Mul M] [Mul N] (f : M ≃* N)
Goal: ↑f.symm = (↑f).symm
-- MulEquiv.coe_mk
@[to_additive (attr := simp)]
theorem coe_mk (f : M ≃ N) (hf : ∀ x y, f (x * y) = f x * f y) : (mk f hf : M → N) = f 
Arguments: {M : Type u_6} {N : Type u_7} [Mul M] [Mul N] (f : M ≃ N) (hf : ∀ (x y : M), f (x * y) = f x * f y)
Goal: ⇑{ toEquiv := f, map_mul' := hf } = ⇑f
-- AddEquiv.coe_mk
@[to_additive (attr := simp)]
theorem coe_mk (f : M ≃ N) (hf : ∀ x y, f (x * y) = f x * f y) : (mk f hf : M → N) = f 
Arguments: {M : Type u_6} {N : Type u_7} [Add M] [Add N] (f : M ≃ N) (hf : ∀ (x y : M), f (x + y) = f x + f y)
Goal: ⇑{ toEquiv := f, map_add' := hf } = ⇑f
-- AddEquiv.symm_symm
@[to_additive (attr := simp)]
theorem symm_symm (f : M ≃* N) : f.symm.symm = f 
Arguments: {M : Type u_6} {N : Type u_7} [Add M] [Add N] (f : M ≃+ N)
Goal: f.symm.symm = f
-- MulEquiv.symm_symm
@[to_additive (attr := simp)]
theorem symm_symm (f : M ≃* N) : f.symm.symm = f 
Arguments: {M : Type u_6} {N : Type u_7} [Mul M] [Mul N] (f : M ≃* N)
Goal: f.symm.symm = f
-- MulEquiv.symm_bijective
@[to_additive]
theorem symm_bijective : Function.Bijective (symm : (M ≃* N) → N ≃* M) 
Arguments: {M : Type u_6} {N : Type u_7} [Mul M] [Mul N]
Goal: Function.Bijective MulEquiv.symm
-- AddEquiv.symm_bijective
@[to_additive]
theorem symm_bijective : Function.Bijective (symm : (M ≃* N) → N ≃* M) 
Arguments: {M : Type u_6} {N : Type u_7} [Add M] [Add N]
Goal: Function.Bijective AddEquiv.symm
-- MulEquiv.symm_mk
@[to_additive (attr := simp)]
theorem symm_mk (f : M ≃ N) (h) :
    (MulEquiv.mk f h).symm = ⟨f.symm, (MulEquiv.mk f h).symm_map_mul⟩ 
Arguments: {M : Type u_6} {N : Type u_7} [Mul M] [Mul N] (f : M ≃ N) (h : ∀ (x y : M), f.toFun (x * y) = f.toFun x * f.toFun y)
Goal: { toEquiv := f, map_mul' := h }.symm = { toEquiv := f.symm, map_mul' := ⋯ }
-- AddEquiv.symm_mk
@[to_additive (attr := simp)]
theorem symm_mk (f : M ≃ N) (h) :
    (MulEquiv.mk f h).symm = ⟨f.symm, (MulEquiv.mk f h).symm_map_mul⟩ 
Arguments: {M : Type u_6} {N : Type u_7} [Add M] [Add N] (f : M ≃ N) (h : ∀ (x y : M), f.toFun (x + y) = f.toFun x + f.toFun y)
Goal: { toEquiv := f, map_add' := h }.symm = { toEquiv := f.symm, map_add' := ⋯ }
-- MulEquiv.refl_symm
@[to_additive (attr := simp)]
theorem refl_symm : (refl M).symm = refl M 
Arguments: {M : Type u_6} [Mul M]
Goal: (MulEquiv.refl M).symm = MulEquiv.refl M
-- AddEquiv.refl_symm
@[to_additive (attr := simp)]
theorem refl_symm : (refl M).symm = refl M 
Arguments: {M : Type u_6} [Add M]
Goal: (AddEquiv.refl M).symm = AddEquiv.refl M
-- AddEquiv.apply_symm_apply
@[to_additive (attr := simp) "`e.symm` is a right inverse of `e`, written as `e (e.symm y) = y`."]
theorem apply_symm_apply (e : M ≃* N) (y : N) : e (e.symm y) = y 
Arguments: {M : Type u_6} {N : Type u_7} [Add M] [Add N] (e : M ≃+ N) (y : N)
Goal: e (e.symm y) = y
-- MulEquiv.apply_symm_apply
@[to_additive (attr := simp) "`e.symm` is a right inverse of `e`, written as `e (e.symm y) = y`."]
theorem apply_symm_apply (e : M ≃* N) (y : N) : e (e.symm y) = y 
Arguments: {M : Type u_6} {N : Type u_7} [Mul M] [Mul N] (e : M ≃* N) (y : N)
Goal: e (e.symm y) = y
-- MulEquiv.symm_apply_apply
@[to_additive (attr := simp) "`e.symm` is a left inverse of `e`, written as `e.symm (e y) = y`."]
theorem symm_apply_apply (e : M ≃* N) (x : M) : e.symm (e x) = x 
Arguments: {M : Type u_6} {N : Type u_7} [Mul M] [Mul N] (e : M ≃* N) (x : M)
Goal: e.symm (e x) = x
-- AddEquiv.symm_apply_apply
@[to_additive (attr := simp) "`e.symm` is a left inverse of `e`, written as `e.symm (e y) = y`."]
theorem symm_apply_apply (e : M ≃* N) (x : M) : e.symm (e x) = x 
Arguments: {M : Type u_6} {N : Type u_7} [Add M] [Add N] (e : M ≃+ N) (x : M)
Goal: e.symm (e x) = x
-- MulEquiv.symm_comp_self
@[to_additive (attr := simp)]
theorem symm_comp_self (e : M ≃* N) : e.symm ∘ e = id 
Arguments: {M : Type u_6} {N : Type u_7} [Mul M] [Mul N] (e : M ≃* N)
Goal: ⇑e.symm ∘ ⇑e = id
-- AddEquiv.symm_comp_self
@[to_additive (attr := simp)]
theorem symm_comp_self (e : M ≃* N) : e.symm ∘ e = id 
Arguments: {M : Type u_6} {N : Type u_7} [Add M] [Add N] (e : M ≃+ N)
Goal: ⇑e.symm ∘ ⇑e = id
-- MulEquiv.self_comp_symm
@[to_additive (attr := simp)]
theorem self_comp_symm (e : M ≃* N) : e ∘ e.symm = id 
Arguments: {M : Type u_6} {N : Type u_7} [Mul M] [Mul N] (e : M ≃* N)
Goal: ⇑e ∘ ⇑e.symm = id
-- AddEquiv.self_comp_symm
@[to_additive (attr := simp)]
theorem self_comp_symm (e : M ≃* N) : e ∘ e.symm = id 
Arguments: {M : Type u_6} {N : Type u_7} [Add M] [Add N] (e : M ≃+ N)
Goal: ⇑e ∘ ⇑e.symm = id
-- MulEquiv.coe_refl
@[to_additive (attr := simp)]
theorem coe_refl : ↑(refl M) = id 
Arguments: {M : Type u_6} [Mul M]
Goal: ⇑(MulEquiv.refl M) = id
-- AddEquiv.coe_refl
@[to_additive (attr := simp)]
theorem coe_refl : ↑(refl M) = id 
Arguments: {M : Type u_6} [Add M]
Goal: ⇑(AddEquiv.refl M) = id
-- MulEquiv.refl_apply
@[to_additive (attr := simp)]
theorem refl_apply (m : M) : refl M m = m 
Arguments: {M : Type u_6} [Mul M] (m : M)
Goal: (MulEquiv.refl M) m = m
-- AddEquiv.refl_apply
@[to_additive (attr := simp)]
theorem refl_apply (m : M) : refl M m = m 
Arguments: {M : Type u_6} [Add M] (m : M)
Goal: (AddEquiv.refl M) m = m
-- MulEquiv.coe_trans
@[to_additive (attr := simp)]
theorem coe_trans (e₁ : M ≃* N) (e₂ : N ≃* P) : ↑(e₁.trans e₂) = e₂ ∘ e₁ 
Arguments: {M : Type u_6} {N : Type u_7} {P : Type u_8} [Mul M] [Mul N] [Mul P] (e₁ : M ≃* N) (e₂ : N ≃* P)
Goal: ⇑(e₁.trans e₂) = ⇑e₂ ∘ ⇑e₁
-- AddEquiv.coe_trans
@[to_additive (attr := simp)]
theorem coe_trans (e₁ : M ≃* N) (e₂ : N ≃* P) : ↑(e₁.trans e₂) = e₂ ∘ e₁ 
Arguments: {M : Type u_6} {N : Type u_7} {P : Type u_8} [Add M] [Add N] [Add P] (e₁ : M ≃+ N) (e₂ : N ≃+ P)
Goal: ⇑(e₁.trans e₂) = ⇑e₂ ∘ ⇑e₁
-- MulEquiv.trans_apply
@[to_additive (attr := simp)]
theorem trans_apply (e₁ : M ≃* N) (e₂ : N ≃* P) (m : M) : e₁.trans e₂ m = e₂ (e₁ m) 
Arguments: {M : Type u_6} {N : Type u_7} {P : Type u_8} [Mul M] [Mul N] [Mul P] (e₁ : M ≃* N) (e₂ : N ≃* P) (m : M)
Goal: (e₁.trans e₂) m = e₂ (e₁ m)
-- AddEquiv.trans_apply
@[to_additive (attr := simp)]
theorem trans_apply (e₁ : M ≃* N) (e₂ : N ≃* P) (m : M) : e₁.trans e₂ m = e₂ (e₁ m) 
Arguments: {M : Type u_6} {N : Type u_7} {P : Type u_8} [Add M] [Add N] [Add P] (e₁ : M ≃+ N) (e₂ : N ≃+ P) (m : M)
Goal: (e₁.trans e₂) m = e₂ (e₁ m)
-- MulEquiv.symm_trans_apply
@[to_additive (attr := simp)]
theorem symm_trans_apply (e₁ : M ≃* N) (e₂ : N ≃* P) (p : P) :
    (e₁.trans e₂).symm p = e₁.symm (e₂.symm p) 
Arguments: {M : Type u_6} {N : Type u_7} {P : Type u_8} [Mul M] [Mul N] [Mul P] (e₁ : M ≃* N) (e₂ : N ≃* P) (p : P)
Goal: (e₁.trans e₂).symm p = e₁.symm (e₂.symm p)
-- AddEquiv.symm_trans_apply
@[to_additive (attr := simp)]
theorem symm_trans_apply (e₁ : M ≃* N) (e₂ : N ≃* P) (p : P) :
    (e₁.trans e₂).symm p = e₁.symm (e₂.symm p) 
Arguments: {M : Type u_6} {N : Type u_7} {P : Type u_8} [Add M] [Add N] [Add P] (e₁ : M ≃+ N) (e₂ : N ≃+ P) (p : P)
Goal: (e₁.trans e₂).symm p = e₁.symm (e₂.symm p)
-- MulEquiv.apply_eq_iff_eq
@[to_additive]
theorem apply_eq_iff_eq (e : M ≃* N) {x y : M} : e x = e y ↔ x = y 
Arguments: {M : Type u_6} {N : Type u_7} [Mul M] [Mul N] (e : M ≃* N) {x y : M}
Goal: e x = e y ↔ x = y
-- AddEquiv.apply_eq_iff_eq
@[to_additive]
theorem apply_eq_iff_eq (e : M ≃* N) {x y : M} : e x = e y ↔ x = y 
Arguments: {M : Type u_6} {N : Type u_7} [Add M] [Add N] (e : M ≃+ N) {x y : M}
Goal: e x = e y ↔ x = y
-- MulEquiv.apply_eq_iff_symm_apply
@[to_additive]
theorem apply_eq_iff_symm_apply (e : M ≃* N) {x : M} {y : N} : e x = y ↔ x = e.symm y 
Arguments: {M : Type u_6} {N : Type u_7} [Mul M] [Mul N] (e : M ≃* N) {x : M} {y : N}
Goal: e x = y ↔ x = e.symm y
-- AddEquiv.apply_eq_iff_symm_apply
@[to_additive]
theorem apply_eq_iff_symm_apply (e : M ≃* N) {x : M} {y : N} : e x = y ↔ x = e.symm y 
Arguments: {M : Type u_6} {N : Type u_7} [Add M] [Add N] (e : M ≃+ N) {x : M} {y : N}
Goal: e x = y ↔ x = e.symm y
-- MulEquiv.symm_apply_eq
@[to_additive]
theorem symm_apply_eq (e : M ≃* N) {x y} : e.symm x = y ↔ x = e y 
Arguments: {M : Type u_6} {N : Type u_7} [Mul M] [Mul N] (e : M ≃* N) {x : N} {y : M}
Goal: e.symm x = y ↔ x = e y
-- AddEquiv.symm_apply_eq
@[to_additive]
theorem symm_apply_eq (e : M ≃* N) {x y} : e.symm x = y ↔ x = e y 
Arguments: {M : Type u_6} {N : Type u_7} [Add M] [Add N] (e : M ≃+ N) {x : N} {y : M}
Goal: e.symm x = y ↔ x = e y
-- MulEquiv.eq_symm_apply
@[to_additive]
theorem eq_symm_apply (e : M ≃* N) {x y} : y = e.symm x ↔ e y = x 
Arguments: {M : Type u_6} {N : Type u_7} [Mul M] [Mul N] (e : M ≃* N) {x : N} {y : M}
Goal: y = e.symm x ↔ e y = x
-- AddEquiv.eq_symm_apply
@[to_additive]
theorem eq_symm_apply (e : M ≃* N) {x y} : y = e.symm x ↔ e y = x 
Arguments: {M : Type u_6} {N : Type u_7} [Add M] [Add N] (e : M ≃+ N) {x : N} {y : M}
Goal: y = e.symm x ↔ e y = x
-- MulEquiv.eq_comp_symm
@[to_additive]
theorem eq_comp_symm {α : Type*} (e : M ≃* N) (f : N → α) (g : M → α) :
    f = g ∘ e.symm ↔ f ∘ e = g 
Arguments: {M : Type u_6} {N : Type u_7} [Mul M] [Mul N] {α : Type u_12} (e : M ≃* N) (f : N → α) (g : M → α)
Goal: f = g ∘ ⇑e.symm ↔ f ∘ ⇑e = g
-- AddEquiv.eq_comp_symm
@[to_additive]
theorem eq_comp_symm {α : Type*} (e : M ≃* N) (f : N → α) (g : M → α) :
    f = g ∘ e.symm ↔ f ∘ e = g 
Arguments: {M : Type u_6} {N : Type u_7} [Add M] [Add N] {α : Type u_12} (e : M ≃+ N) (f : N → α) (g : M → α)
Goal: f = g ∘ ⇑e.symm ↔ f ∘ ⇑e = g
-- MulEquiv.comp_symm_eq
@[to_additive]
theorem comp_symm_eq {α : Type*} (e : M ≃* N) (f : N → α) (g : M → α) :
    g ∘ e.symm = f ↔ g = f ∘ e 
Arguments: {M : Type u_6} {N : Type u_7} [Mul M] [Mul N] {α : Type u_12} (e : M ≃* N) (f : N → α) (g : M → α)
Goal: g ∘ ⇑e.symm = f ↔ g = f ∘ ⇑e
-- AddEquiv.comp_symm_eq
@[to_additive]
theorem comp_symm_eq {α : Type*} (e : M ≃* N) (f : N → α) (g : M → α) :
    g ∘ e.symm = f ↔ g = f ∘ e 
Arguments: {M : Type u_6} {N : Type u_7} [Add M] [Add N] {α : Type u_12} (e : M ≃+ N) (f : N → α) (g : M → α)
Goal: g ∘ ⇑e.symm = f ↔ g = f ∘ ⇑e
-- AddEquiv.eq_symm_comp
@[to_additive]
theorem eq_symm_comp {α : Type*} (e : M ≃* N) (f : α → M) (g : α → N) :
    f = e.symm ∘ g ↔ e ∘ f = g 
Arguments: {M : Type u_6} {N : Type u_7} [Add M] [Add N] {α : Type u_12} (e : M ≃+ N) (f : α → M) (g : α → N)
Goal: f = ⇑e.symm ∘ g ↔ ⇑e ∘ f = g
-- MulEquiv.eq_symm_comp
@[to_additive]
theorem eq_symm_comp {α : Type*} (e : M ≃* N) (f : α → M) (g : α → N) :
    f = e.symm ∘ g ↔ e ∘ f = g 
Arguments: {M : Type u_6} {N : Type u_7} [Mul M] [Mul N] {α : Type u_12} (e : M ≃* N) (f : α → M) (g : α → N)
Goal: f = ⇑e.symm ∘ g ↔ ⇑e ∘ f = g
-- MulEquiv.symm_comp_eq
@[to_additive]
theorem symm_comp_eq {α : Type*} (e : M ≃* N) (f : α → M) (g : α → N) :
    e.symm ∘ g = f ↔ g = e ∘ f 
Arguments: {M : Type u_6} {N : Type u_7} [Mul M] [Mul N] {α : Type u_12} (e : M ≃* N) (f : α → M) (g : α → N)
Goal: ⇑e.symm ∘ g = f ↔ g = ⇑e ∘ f
-- AddEquiv.symm_comp_eq
@[to_additive]
theorem symm_comp_eq {α : Type*} (e : M ≃* N) (f : α → M) (g : α → N) :
    e.symm ∘ g = f ↔ g = e ∘ f 
Arguments: {M : Type u_6} {N : Type u_7} [Add M] [Add N] {α : Type u_12} (e : M ≃+ N) (f : α → M) (g : α → N)
Goal: ⇑e.symm ∘ g = f ↔ g = ⇑e ∘ f
-- MulEquiv.symm_trans_self
@[to_additive (attr := simp)]
theorem symm_trans_self (e : M ≃* N) : e.symm.trans e = refl N 
Arguments: {M : Type u_6} {N : Type u_7} [Mul M] [Mul N] (e : M ≃* N)
Goal: e.symm.trans e = MulEquiv.refl N
-- AddEquiv.symm_trans_self
@[to_additive (attr := simp)]
theorem symm_trans_self (e : M ≃* N) : e.symm.trans e = refl N 
Arguments: {M : Type u_6} {N : Type u_7} [Add M] [Add N] (e : M ≃+ N)
Goal: e.symm.trans e = AddEquiv.refl N
-- MulEquiv.self_trans_symm
@[to_additive (attr := simp)]
theorem self_trans_symm (e : M ≃* N) : e.trans e.symm = refl M 
Arguments: {M : Type u_6} {N : Type u_7} [Mul M] [Mul N] (e : M ≃* N)
Goal: e.trans e.symm = MulEquiv.refl M
-- AddEquiv.self_trans_symm
@[to_additive (attr := simp)]
theorem self_trans_symm (e : M ≃* N) : e.trans e.symm = refl M 
Arguments: {M : Type u_6} {N : Type u_7} [Add M] [Add N] (e : M ≃+ N)
Goal: e.trans e.symm = AddEquiv.refl M
-- MulEquiv.ext
@[to_additive (attr := ext)
  "Two additive isomorphisms agree if they are defined by the same underlying function."]
theorem ext {f g : MulEquiv M N} (h : ∀ x, f x = g x) : f = g 
Arguments: {M : Type u_6} {N : Type u_7} [Mul M] [Mul N] {f g : M ≃* N} (h : ∀ (x : M), f x = g x)
Goal: f = g
-- AddEquiv.ext
@[to_additive (attr := ext)
  "Two additive isomorphisms agree if they are defined by the same underlying function."]
theorem ext {f g : MulEquiv M N} (h : ∀ x, f x = g x) : f = g 
Arguments: {M : Type u_6} {N : Type u_7} [Add M] [Add N] {f g : M ≃+ N} (h : ∀ (x : M), f x = g x)
Goal: f = g
-- MulEquiv.ext_iff
@[to_additive]
theorem ext_iff {f g : MulEquiv M N} : f = g ↔ ∀ x, f x = g x 
Arguments: {M : Type u_6} {N : Type u_7} [Mul M] [Mul N] {f g : M ≃* N}
Goal: f = g ↔ ∀ (x : M), f x = g x
-- AddEquiv.ext_iff
@[to_additive]
theorem ext_iff {f g : MulEquiv M N} : f = g ↔ ∀ x, f x = g x 
Arguments: {M : Type u_6} {N : Type u_7} [Add M] [Add N] {f g : M ≃+ N}
Goal: f = g ↔ ∀ (x : M), f x = g x
-- MulEquiv.mk_coe
@[to_additive (attr := simp)]
theorem mk_coe (e : M ≃* N) (e' h₁ h₂ h₃) : (⟨⟨e, e', h₁, h₂⟩, h₃⟩ : M ≃* N) = e 
Arguments: {M : Type u_6} {N : Type u_7} [Mul M] [Mul N] (e : M ≃* N) (e' : N → M) (h₁ : Function.LeftInverse e' ⇑e) (h₂ : Function.RightInverse e' ⇑e) (h₃ :
  ∀ (x y : M),
    { toFun := ⇑e, invFun := e', left_inv := h₁, right_inv := h₂ }.toFun (x * y) =
      { toFun := ⇑e, invFun := e', left_inv := h₁, right_inv := h₂ }.toFun x *
        { toFun := ⇑e, invFun := e', left_inv := h₁, right_inv := h₂ }.toFun y)
Goal: { toFun := ⇑e, invFun := e', left_inv := h₁, right_inv := h₂, map_mul' := h₃ } = e
-- AddEquiv.mk_coe
@[to_additive (attr := simp)]
theorem mk_coe (e : M ≃* N) (e' h₁ h₂ h₃) : (⟨⟨e, e', h₁, h₂⟩, h₃⟩ : M ≃* N) = e 
Arguments: {M : Type u_6} {N : Type u_7} [Add M] [Add N] (e : M ≃+ N) (e' : N → M) (h₁ : Function.LeftInverse e' ⇑e) (h₂ : Function.RightInverse e' ⇑e) (h₃ :
  ∀ (x y : M),
    { toFun := ⇑e, invFun := e', left_inv := h₁, right_inv := h₂ }.toFun (x + y) =
      { toFun := ⇑e, invFun := e', left_inv := h₁, right_inv := h₂ }.toFun x +
        { toFun := ⇑e, invFun := e', left_inv := h₁, right_inv := h₂ }.toFun y)
Goal: { toFun := ⇑e, invFun := e', left_inv := h₁, right_inv := h₂, map_add' := h₃ } = e
-- AddEquiv.mk_coe'
@[to_additive (attr := simp)]
theorem mk_coe' (e : M ≃* N) (f h₁ h₂ h₃) : (MulEquiv.mk ⟨f, e, h₁, h₂⟩ h₃ : N ≃* M) = e.symm 
Arguments: {M : Type u_6} {N : Type u_7} [Add M] [Add N] (e : M ≃+ N) (f : N → M) (h₁ : Function.LeftInverse (⇑e) f) (h₂ : Function.RightInverse (⇑e) f) (h₃ :
  ∀ (x y : N),
    { toFun := f, invFun := ⇑e, left_inv := h₁, right_inv := h₂ }.toFun (x + y) =
      { toFun := f, invFun := ⇑e, left_inv := h₁, right_inv := h₂ }.toFun x +
        { toFun := f, invFun := ⇑e, left_inv := h₁, right_inv := h₂ }.toFun y)
Goal: { toFun := f, invFun := ⇑e, left_inv := h₁, right_inv := h₂, map_add' := h₃ } = e.symm
-- MulEquiv.mk_coe'
@[to_additive (attr := simp)]
theorem mk_coe' (e : M ≃* N) (f h₁ h₂ h₃) : (MulEquiv.mk ⟨f, e, h₁, h₂⟩ h₃ : N ≃* M) = e.symm 
Arguments: {M : Type u_6} {N : Type u_7} [Mul M] [Mul N] (e : M ≃* N) (f : N → M) (h₁ : Function.LeftInverse (⇑e) f) (h₂ : Function.RightInverse (⇑e) f) (h₃ :
  ∀ (x y : N),
    { toFun := f, invFun := ⇑e, left_inv := h₁, right_inv := h₂ }.toFun (x * y) =
      { toFun := f, invFun := ⇑e, left_inv := h₁, right_inv := h₂ }.toFun x *
        { toFun := f, invFun := ⇑e, left_inv := h₁, right_inv := h₂ }.toFun y)
Goal: { toFun := f, invFun := ⇑e, left_inv := h₁, right_inv := h₂, map_mul' := h₃ } = e.symm
-- AddEquiv.congr_arg
@[to_additive]
protected theorem congr_arg {f : MulEquiv M N} {x x' : M} : x = x' → f x = f x' 
Arguments: {M : Type u_6} {N : Type u_7} [Add M] [Add N] {f : M ≃+ N} {x x' : M}
Goal: x = x' → f x = f x'
-- MulEquiv.congr_arg
@[to_additive]
protected theorem congr_arg {f : MulEquiv M N} {x x' : M} : x = x' → f x = f x' 
Arguments: {M : Type u_6} {N : Type u_7} [Mul M] [Mul N] {f : M ≃* N} {x x' : M}
Goal: x = x' → f x = f x'
-- MulEquiv.congr_fun
@[to_additive]
protected theorem congr_fun {f g : MulEquiv M N} (h : f = g) (x : M) : f x = g x 
Arguments: {M : Type u_6} {N : Type u_7} [Mul M] [Mul N] {f g : M ≃* N} (h : f = g) (x : M)
Goal: f x = g x
-- AddEquiv.congr_fun
@[to_additive]
protected theorem congr_fun {f g : MulEquiv M N} (h : f = g) (x : M) : f x = g x 
Arguments: {M : Type u_6} {N : Type u_7} [Add M] [Add N] {f g : M ≃+ N} (h : f = g) (x : M)
Goal: f x = g x
-- MulEquiv.coe_monoidHom_refl
@[to_additive]
theorem coe_monoidHom_refl : (refl M : M →* M) = MonoidHom.id M 
Arguments: {M : Type u_6} [MulOneClass M]
Goal: ↑(MulEquiv.refl M) = MonoidHom.id M
-- AddEquiv.coe_addMonoidHom_refl
@[to_additive]
theorem coe_monoidHom_refl : (refl M : M →* M) = MonoidHom.id M 
Arguments: {M : Type u_6} [AddZeroClass M]
Goal: ↑(AddEquiv.refl M) = AddMonoidHom.id M
-- MulEquiv.coe_monoidHom_trans
@[to_additive]
lemma coe_monoidHom_trans (e₁ : M ≃* N) (e₂ : N ≃* P) :
    (e₁.trans e₂ : M →* P) = (e₂ : N →* P).comp ↑e₁ 
Arguments: {M : Type u_6} {N : Type u_7} {P : Type u_8} [MulOneClass M] [MulOneClass N] [MulOneClass P] (e₁ : M ≃* N) (e₂ : N ≃* P)
Goal: ↑(e₁.trans e₂) = (↑e₂).comp ↑e₁
-- AddEquiv.coe_addMonoidHom_trans
@[to_additive]
lemma coe_monoidHom_trans (e₁ : M ≃* N) (e₂ : N ≃* P) :
    (e₁.trans e₂ : M →* P) = (e₂ : N →* P).comp ↑e₁ 
Arguments: {M : Type u_6} {N : Type u_7} {P : Type u_8} [AddZeroClass M] [AddZeroClass N] [AddZeroClass P] (e₁ : M ≃+ N) (e₂ : N ≃+ P)
Goal: ↑(e₁.trans e₂) = (↑e₂).comp ↑e₁
-- AddEquiv.coe_addMonoidHom_comp_coe_addMonoidHom_symm
@[to_additive (attr := simp)]
lemma coe_monoidHom_comp_coe_monoidHom_symm (e : M ≃* N) :
    (e : M →* N).comp e.symm = MonoidHom.id _ 
Arguments: {M : Type u_6} {N : Type u_7} [AddZeroClass M] [AddZeroClass N] (e : M ≃+ N)
Goal: (↑e).comp ↑e.symm = AddMonoidHom.id N
-- MulEquiv.coe_monoidHom_comp_coe_monoidHom_symm
@[to_additive (attr := simp)]
lemma coe_monoidHom_comp_coe_monoidHom_symm (e : M ≃* N) :
    (e : M →* N).comp e.symm = MonoidHom.id _ 
Arguments: {M : Type u_6} {N : Type u_7} [MulOneClass M] [MulOneClass N] (e : M ≃* N)
Goal: (↑e).comp ↑e.symm = MonoidHom.id N
-- AddEquiv.coe_addMonoidHom_symm_comp_coe_addMonoidHom
@[to_additive (attr := simp)]
lemma coe_monoidHom_symm_comp_coe_monoidHom (e : M ≃* N) :
    (e.symm : N →* M).comp e = MonoidHom.id _ 
Arguments: {M : Type u_6} {N : Type u_7} [AddZeroClass M] [AddZeroClass N] (e : M ≃+ N)
Goal: (↑e.symm).comp ↑e = AddMonoidHom.id M
-- MulEquiv.coe_monoidHom_symm_comp_coe_monoidHom
@[to_additive (attr := simp)]
lemma coe_monoidHom_symm_comp_coe_monoidHom (e : M ≃* N) :
    (e.symm : N →* M).comp e = MonoidHom.id _ 
Arguments: {M : Type u_6} {N : Type u_7} [MulOneClass M] [MulOneClass N] (e : M ≃* N)
Goal: (↑e.symm).comp ↑e = MonoidHom.id M
-- AddEquiv.comp_left_injective
@[to_additive]
lemma comp_left_injective (e : M ≃* N) : Injective fun f : N →* P ↦ f.comp (e : M →* N) 
Arguments: {M : Type u_6} {N : Type u_7} {P : Type u_8} [AddZeroClass M] [AddZeroClass N] [AddZeroClass P] (e : M ≃+ N)
Goal: Function.Injective fun f => f.comp ↑e
-- MulEquiv.comp_left_injective
@[to_additive]
lemma comp_left_injective (e : M ≃* N) : Injective fun f : N →* P ↦ f.comp (e : M →* N) 
Arguments: {M : Type u_6} {N : Type u_7} {P : Type u_8} [MulOneClass M] [MulOneClass N] [MulOneClass P] (e : M ≃* N)
Goal: Function.Injective fun f => f.comp ↑e
-- MulEquiv.comp_right_injective
@[to_additive]
lemma comp_right_injective (e : M ≃* N) : Injective fun f : P →* M ↦ (e : M →* N).comp f 
Arguments: {M : Type u_6} {N : Type u_7} {P : Type u_8} [MulOneClass M] [MulOneClass N] [MulOneClass P] (e : M ≃* N)
Goal: Function.Injective fun f => (↑e).comp f
-- AddEquiv.comp_right_injective
@[to_additive]
lemma comp_right_injective (e : M ≃* N) : Injective fun f : P →* M ↦ (e : M →* N).comp f 
Arguments: {M : Type u_6} {N : Type u_7} {P : Type u_8} [AddZeroClass M] [AddZeroClass N] [AddZeroClass P] (e : M ≃+ N)
Goal: Function.Injective fun f => (↑e).comp f
-- MulEquiv.map_one
@[to_additive
  "An additive isomorphism of additive monoids sends `0` to `0`
  (and is hence an additive monoid isomorphism)."]
protected theorem map_one (h : M ≃* N) : h 1 = 1 
Arguments: {M : Type u_6} {N : Type u_7} [MulOneClass M] [MulOneClass N] (h : M ≃* N)
Goal: h 1 = 1
-- AddEquiv.map_zero
@[to_additive
  "An additive isomorphism of additive monoids sends `0` to `0`
  (and is hence an additive monoid isomorphism)."]
protected theorem map_one (h : M ≃* N) : h 1 = 1 
Arguments: {M : Type u_6} {N : Type u_7} [AddZeroClass M] [AddZeroClass N] (h : M ≃+ N)
Goal: h 0 = 0
-- MulEquiv.map_eq_one_iff
@[to_additive]
protected theorem map_eq_one_iff (h : M ≃* N) {x : M} : h x = 1 ↔ x = 1 
Arguments: {M : Type u_6} {N : Type u_7} [MulOneClass M] [MulOneClass N] (h : M ≃* N) {x : M}
Goal: h x = 1 ↔ x = 1
-- AddEquiv.map_eq_zero_iff
@[to_additive]
protected theorem map_eq_one_iff (h : M ≃* N) {x : M} : h x = 1 ↔ x = 1 
Arguments: {M : Type u_6} {N : Type u_7} [AddZeroClass M] [AddZeroClass N] (h : M ≃+ N) {x : M}
Goal: h x = 0 ↔ x = 0
-- AddEquiv.map_ne_zero_iff
@[to_additive]
theorem map_ne_one_iff (h : M ≃* N) {x : M} : h x ≠ 1 ↔ x ≠ 1 
Arguments: {M : Type u_6} {N : Type u_7} [AddZeroClass M] [AddZeroClass N] (h : M ≃+ N) {x : M}
Goal: h x ≠ 0 ↔ x ≠ 0
-- MulEquiv.map_ne_one_iff
@[to_additive]
theorem map_ne_one_iff (h : M ≃* N) {x : M} : h x ≠ 1 ↔ x ≠ 1 
Arguments: {M : Type u_6} {N : Type u_7} [MulOneClass M] [MulOneClass N] (h : M ≃* N) {x : M}
Goal: h x ≠ 1 ↔ x ≠ 1
-- MulEquiv.ofBijective_apply
@[to_additive (attr := simps! apply) "A bijective `AddSemigroup` homomorphism is an isomorphism"]
noncomputable def ofBijective {M N F} [Mul M] [Mul N] [FunLike F M N] [MulHomClass F M N]
    (f : F) (hf : Bijective f) : M ≃* N 
Arguments: {M : Type u_12} {N : Type u_13} {F : Type u_14} [Mul M] [Mul N] [FunLike F M N] [MulHomClass F M N] (f : F) (hf : Function.Bijective ⇑f) (a : M)
Goal: (MulEquiv.ofBijective f hf) a = f a
-- AddEquiv.ofBijective_apply
@[to_additive (attr := simps! apply) "A bijective `AddSemigroup` homomorphism is an isomorphism"]
noncomputable def ofBijective {M N F} [Mul M] [Mul N] [FunLike F M N] [MulHomClass F M N]
    (f : F) (hf : Bijective f) : M ≃* N 
Arguments: {M : Type u_12} {N : Type u_13} {F : Type u_14} [Add M] [Add N] [FunLike F M N] [AddHomClass F M N] (f : F) (hf : Function.Bijective ⇑f) (a : M)
Goal: (AddEquiv.ofBijective f hf) a = f a
-- MulEquiv.ofBijective_apply_symm_apply
@[to_additive (attr := simp)]
theorem ofBijective_apply_symm_apply {n : N} (f : M →* N) (hf : Bijective f) :
    f ((ofBijective f hf).symm n) = n 
Arguments: {M : Type u_6} {N : Type u_7} [MulOneClass M] [MulOneClass N] {n : N} (f : M →* N) (hf : Function.Bijective ⇑f)
Goal: f ((MulEquiv.ofBijective f hf).symm n) = n
-- AddEquiv.ofBijective_apply_symm_apply
@[to_additive (attr := simp)]
theorem ofBijective_apply_symm_apply {n : N} (f : M →* N) (hf : Bijective f) :
    f ((ofBijective f hf).symm n) = n 
Arguments: {M : Type u_6} {N : Type u_7} [AddZeroClass M] [AddZeroClass N] {n : N} (f : M →+ N) (hf : Function.Bijective ⇑f)
Goal: f ((AddEquiv.ofBijective f hf).symm n) = n
-- AddEquiv.coe_toAddMonoidHom
@[to_additive (attr := simp)]
theorem coe_toMonoidHom (e : M ≃* N) : ⇑e.toMonoidHom = e 
Arguments: {M : Type u_6} {N : Type u_7} [AddZeroClass M] [AddZeroClass N] (e : M ≃+ N)
Goal: ⇑e.toAddMonoidHom = ⇑e
-- MulEquiv.coe_toMonoidHom
@[to_additive (attr := simp)]
theorem coe_toMonoidHom (e : M ≃* N) : ⇑e.toMonoidHom = e 
Arguments: {M : Type u_6} {N : Type u_7} [MulOneClass M] [MulOneClass N] (e : M ≃* N)
Goal: ⇑e.toMonoidHom = ⇑e
-- MulEquiv.toMonoidHom_eq_coe
@[to_additive (attr := simp)]
theorem toMonoidHom_eq_coe (f : M ≃* N) : f.toMonoidHom = (f : M →* N) 
Arguments: {M : Type u_6} {N : Type u_7} [MulOneClass M] [MulOneClass N] (f : M ≃* N)
Goal: f.toMonoidHom = ↑f