ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- RingHom.toFun_eq_coe
theorem toFun_eq_coe (f : α →+* β) : f.toFun = f 
Arguments: {α : Type u_2} {β : Type u_3}
Goal: ∀ {x : NonAssocSemiring α} {x_1 : NonAssocSemiring β} (f : α →+* β), (↑↑f).toFun = ⇑f
-- RingHom.coe_mk
@[simp]
theorem coe_mk (f : α →* β) (h₁ h₂) : ((⟨f, h₁, h₂⟩ : α →+* β) : α → β) = f 
Arguments: {α : Type u_2} {β : Type u_3}
Goal: ∀ {x : NonAssocSemiring α} {x_1 : NonAssocSemiring β} (f : α →* β) (h₁ : (↑f).toFun 0 = 0)
  (h₂ : ∀ (x_2 y : α), (↑f).toFun (x_2 + y) = (↑f).toFun x_2 + (↑f).toFun y),
  ⇑{ toMonoidHom := f, map_zero' := h₁, map_add' := h₂ } = ⇑f
-- RingHom.coe_coe
@[simp]
theorem coe_coe {F : Type*} [FunLike F α β] [RingHomClass F α β] (f : F) :
    ((f : α →+* β) : α → β) = f 
Arguments: {α : Type u_2} {β : Type u_3}
Goal: ∀ {x : NonAssocSemiring α} {x_1 : NonAssocSemiring β} {F : Type u_5} [inst : FunLike F α β]
  [inst_1 : RingHomClass F α β] (f : F), ⇑↑f = ⇑f
-- RingHom.toMonoidHom_eq_coe
@[simp]
theorem toMonoidHom_eq_coe (f : α →+* β) : f.toMonoidHom = f 
Arguments: {α : Type u_2} {β : Type u_3}
Goal: ∀ {x : NonAssocSemiring α} {x_1 : NonAssocSemiring β} (f : α →+* β), ↑f = ↑f
-- RingHom.toMonoidWithZeroHom_eq_coe
theorem toMonoidWithZeroHom_eq_coe (f : α →+* β) : (f.toMonoidWithZeroHom : α → β) = f 
Arguments: {α : Type u_2} {β : Type u_3}
Goal: ∀ {x : NonAssocSemiring α} {x_1 : NonAssocSemiring β} (f : α →+* β), ⇑f.toMonoidWithZeroHom = ⇑f
-- RingHom.coe_monoidHom_mk
@[simp]
theorem coe_monoidHom_mk (f : α →* β) (h₁ h₂) : ((⟨f, h₁, h₂⟩ : α →+* β) : α →* β) = f 
Arguments: {α : Type u_2} {β : Type u_3}
Goal: ∀ {x : NonAssocSemiring α} {x_1 : NonAssocSemiring β} (f : α →* β) (h₁ : (↑f).toFun 0 = 0)
  (h₂ : ∀ (x_2 y : α), (↑f).toFun (x_2 + y) = (↑f).toFun x_2 + (↑f).toFun y),
  ↑{ toMonoidHom := f, map_zero' := h₁, map_add' := h₂ } = f
-- RingHom.toAddMonoidHom_eq_coe
@[simp]
theorem toAddMonoidHom_eq_coe (f : α →+* β) : f.toAddMonoidHom = f 
Arguments: {α : Type u_2} {β : Type u_3}
Goal: ∀ {x : NonAssocSemiring α} {x_1 : NonAssocSemiring β} (f : α →+* β), f.toAddMonoidHom = ↑f
-- RingHom.coe_addMonoidHom_mk
@[simp]
theorem coe_addMonoidHom_mk (f : α → β) (h₁ h₂ h₃ h₄) :
    ((⟨⟨⟨f, h₁⟩, h₂⟩, h₃, h₄⟩ : α →+* β) : α →+ β) = ⟨⟨f, h₃⟩, h₄⟩ 
Arguments: {α : Type u_2} {β : Type u_3}
Goal: ∀ {x : NonAssocSemiring α} {x_1 : NonAssocSemiring β} (f : α → β) (h₁ : f 1 = 1)
  (h₂ :
    ∀ (x_2 y : α),
      { toFun := f, map_one' := h₁ }.toFun (x_2 * y) =
        { toFun := f, map_one' := h₁ }.toFun x_2 * { toFun := f, map_one' := h₁ }.toFun y)
  (h₃ : (↑{ toFun := f, map_one' := h₁, map_mul' := h₂ }).toFun 0 = 0)
  (h₄ :
    ∀ (x_2 y : α),
      (↑{ toFun := f, map_one' := h₁, map_mul' := h₂ }).toFun (x_2 + y) =
        (↑{ toFun := f, map_one' := h₁, map_mul' := h₂ }).toFun x_2 +
          (↑{ toFun := f, map_one' := h₁, map_mul' := h₂ }).toFun y),
  ↑{ toFun := f, map_one' := h₁, map_mul' := h₂, map_zero' := h₃, map_add' := h₄ } =
    { toFun := f, map_zero' := h₃, map_add' := h₄ }
-- RingHom.coe_copy
@[simp]
theorem coe_copy (f : α →+* β) (f' : α → β) (h : f' = f) : ⇑(f.copy f' h) = f' 
Arguments: {α : Type u_2} {β : Type u_3}
Goal: ∀ {x : NonAssocSemiring α} {x_1 : NonAssocSemiring β} (f : α →+* β) (f' : α → β) (h : f' = ⇑f), ⇑(f.copy f' h) = f'
-- RingHom.copy_eq
theorem copy_eq (f : α →+* β) (f' : α → β) (h : f' = f) : f.copy f' h = f 
Arguments: {α : Type u_2} {β : Type u_3}
Goal: ∀ {x : NonAssocSemiring α} {x_1 : NonAssocSemiring β} (f : α →+* β) (f' : α → β) (h : f' = ⇑f), f.copy f' h = f
-- RingHom.congr_fun
protected theorem congr_fun {f g : α →+* β} (h : f = g) (x : α) : f x = g x 
Arguments: {α : Type u_2} {β : Type u_3}
Goal: ∀ {x : NonAssocSemiring α} {x_1 : NonAssocSemiring β} {f g : α →+* β}, f = g → ∀ (x_2 : α), f x_2 = g x_2
-- RingHom.congr_arg
protected theorem congr_arg (f : α →+* β) {x y : α} (h : x = y) : f x = f y 
Arguments: {α : Type u_2} {β : Type u_3}
Goal: ∀ {x : NonAssocSemiring α} {x_1 : NonAssocSemiring β} (f : α →+* β) {x_2 y : α}, x_2 = y → f x_2 = f y
-- RingHom.coe_inj
theorem coe_inj ⦃f g : α →+* β⦄ (h : (f : α → β) = g) : f = g 
Arguments: {α : Type u_2} {β : Type u_3}
Goal: ∀ {x : NonAssocSemiring α} {x_1 : NonAssocSemiring β} ⦃f g : α →+* β⦄, ⇑f = ⇑g → f = g
-- RingHom.ext
@[ext]
theorem ext ⦃f g : α →+* β⦄ : (∀ x, f x = g x) → f = g 
Arguments: {α : Type u_2} {β : Type u_3}
Goal: ∀ {x : NonAssocSemiring α} {x_1 : NonAssocSemiring β} ⦃f g : α →+* β⦄, (∀ (x_2 : α), f x_2 = g x_2) → f = g
-- RingHom.ext_iff
protected theorem ext_iff {f g : α →+* β} : f = g ↔ ∀ x, f x = g x 
Arguments: {α : Type u_2} {β : Type u_3}
Goal: ∀ {x : NonAssocSemiring α} {x_1 : NonAssocSemiring β} {f g : α →+* β}, f = g ↔ ∀ (x_2 : α), f x_2 = g x_2
-- RingHom.mk_coe
@[simp]
theorem mk_coe (f : α →+* β) (h₁ h₂ h₃ h₄) : RingHom.mk ⟨⟨f, h₁⟩, h₂⟩ h₃ h₄ = f 
Arguments: {α : Type u_2} {β : Type u_3}
Goal: ∀ {x : NonAssocSemiring α} {x_1 : NonAssocSemiring β} (f : α →+* β) (h₁ : f 1 = 1)
  (h₂ :
    ∀ (x_2 y : α),
      { toFun := ⇑f, map_one' := h₁ }.toFun (x_2 * y) =
        { toFun := ⇑f, map_one' := h₁ }.toFun x_2 * { toFun := ⇑f, map_one' := h₁ }.toFun y)
  (h₃ : (↑{ toFun := ⇑f, map_one' := h₁, map_mul' := h₂ }).toFun 0 = 0)
  (h₄ :
    ∀ (x_2 y : α),
      (↑{ toFun := ⇑f, map_one' := h₁, map_mul' := h₂ }).toFun (x_2 + y) =
        (↑{ toFun := ⇑f, map_one' := h₁, map_mul' := h₂ }).toFun x_2 +
          (↑{ toFun := ⇑f, map_one' := h₁, map_mul' := h₂ }).toFun y),
  { toFun := ⇑f, map_one' := h₁, map_mul' := h₂, map_zero' := h₃, map_add' := h₄ } = f
-- RingHom.coe_addMonoidHom_injective
theorem coe_addMonoidHom_injective : Injective (fun f : α →+* β => (f : α →+ β)) 
Arguments: {α : Type u_2} {β : Type u_3}
Goal: ∀ {x : NonAssocSemiring α} {x_1 : NonAssocSemiring β}, Function.Injective fun f => ↑f
-- RingHom.coe_monoidHom_injective
theorem coe_monoidHom_injective : Injective (fun f : α →+* β => (f : α →* β)) 
Arguments: {α : Type u_2} {β : Type u_3}
Goal: ∀ {x : NonAssocSemiring α} {x_1 : NonAssocSemiring β}, Function.Injective fun f => ↑f
-- RingHom.map_zero
protected theorem map_zero (f : α →+* β) : f 0 = 0 
Arguments: {α : Type u_2} {β : Type u_3}
Goal: ∀ {x : NonAssocSemiring α} {x_1 : NonAssocSemiring β} (f : α →+* β), f 0 = 0
-- RingHom.map_one
protected theorem map_one (f : α →+* β) : f 1 = 1 
Arguments: {α : Type u_2} {β : Type u_3}
Goal: ∀ {x : NonAssocSemiring α} {x_1 : NonAssocSemiring β} (f : α →+* β), f 1 = 1
-- RingHom.map_add
protected theorem map_add (f : α →+* β) : ∀ a b, f (a + b) = f a + f b 
Arguments: {α : Type u_2} {β : Type u_3}
Goal: ∀ {x : NonAssocSemiring α} {x_1 : NonAssocSemiring β} (f : α →+* β) (a b : α), f (a + b) = f a + f b
-- RingHom.map_mul
protected theorem map_mul (f : α →+* β) : ∀ a b, f (a * b) = f a * f b 
Arguments: {α : Type u_2} {β : Type u_3}
Goal: ∀ {x : NonAssocSemiring α} {x_1 : NonAssocSemiring β} (f : α →+* β) (a b : α), f (a * b) = f a * f b
-- RingHom.map_ite_zero_one
@[simp]
theorem map_ite_zero_one {F : Type*} [FunLike F α β] [RingHomClass F α β] (f : F)
    (p : Prop) [Decidable p] :
    f (ite p 0 1) = ite p 0 1 
Arguments: {α : Type u_2} {β : Type u_3}
Goal: ∀ {x : NonAssocSemiring α} {x_1 : NonAssocSemiring β} {F : Type u_5} [inst : FunLike F α β]
  [inst_1 : RingHomClass F α β] (f : F) (p : Prop) [inst_2 : Decidable p], f (if p then 0 else 1) = if p then 0 else 1
-- RingHom.map_ite_one_zero
@[simp]
theorem map_ite_one_zero {F : Type*} [FunLike F α β] [RingHomClass F α β] (f : F)
    (p : Prop) [Decidable p] :
    f (ite p 1 0) = ite p 1 0 
Arguments: {α : Type u_2} {β : Type u_3}
Goal: ∀ {x : NonAssocSemiring α} {x_1 : NonAssocSemiring β} {F : Type u_5} [inst : FunLike F α β]
  [inst_1 : RingHomClass F α β] (f : F) (p : Prop) [inst_2 : Decidable p], f (if p then 1 else 0) = if p then 1 else 0
-- RingHom.codomain_trivial_iff_map_one_eq_zero
theorem codomain_trivial_iff_map_one_eq_zero : (0 : β) = 1 ↔ f 1 = 0 
Arguments: {α : Type u_2} {β : Type u_3}
Goal: ∀ {x : NonAssocSemiring α} {x_1 : NonAssocSemiring β} (f : α →+* β), 0 = 1 ↔ f 1 = 0
-- RingHom.codomain_trivial_iff_range_trivial
theorem codomain_trivial_iff_range_trivial : (0 : β) = 1 ↔ ∀ x, f x = 0 
Arguments: {α : Type u_2} {β : Type u_3}
Goal: ∀ {x : NonAssocSemiring α} {x_1 : NonAssocSemiring β} (f : α →+* β), 0 = 1 ↔ ∀ (x_2 : α), f x_2 = 0
-- RingHom.map_one_ne_zero
theorem map_one_ne_zero [Nontrivial β] : f 1 ≠ 0 
Arguments: {α : Type u_2} {β : Type u_3}
Goal: ∀ {x : NonAssocSemiring α} {x_1 : NonAssocSemiring β} (f : α →+* β) [inst : Nontrivial β], f 1 ≠ 0
-- RingHom.domain_nontrivial
theorem domain_nontrivial [Nontrivial β] : Nontrivial α 
Arguments: {α : Type u_2} {β : Type u_3}
Goal: ∀ {x : NonAssocSemiring α} {x_1 : NonAssocSemiring β}, (α →+* β) → ∀ [inst : Nontrivial β], Nontrivial α
-- RingHom.codomain_trivial
theorem codomain_trivial (f : α →+* β) [h : Subsingleton α] : Subsingleton β 
Arguments: {α : Type u_2} {β : Type u_3}
Goal: ∀ {x : NonAssocSemiring α} {x_1 : NonAssocSemiring β}, (α →+* β) → ∀ [h : Subsingleton α], Subsingleton β
-- RingHom.map_neg
protected theorem map_neg [NonAssocRing α] [NonAssocRing β] (f : α →+* β) (x : α) : f (-x) = -f x 
Arguments: {α : Type u_2} {β : Type u_3} [NonAssocRing α] [NonAssocRing β] (f : α →+* β) (x : α)
Goal: f (-x) = -f x
-- RingHom.map_sub
protected theorem map_sub [NonAssocRing α] [NonAssocRing β] (f : α →+* β) (x y : α) :
    f (x - y) = f x - f y 
Arguments: {α : Type u_2} {β : Type u_3} [NonAssocRing α] [NonAssocRing β] (f : α →+* β) (x y : α)
Goal: f (x - y) = f x - f y
-- RingHom.id_apply
@[simp]
theorem id_apply (x : α) : RingHom.id α x = x 
Arguments: {α : Type u_2}
Goal: ∀ {x : NonAssocSemiring α} (x_1 : α), (RingHom.id α) x_1 = x_1
-- RingHom.coe_addMonoidHom_id
@[simp]
theorem coe_addMonoidHom_id : (id α : α →+ α) = AddMonoidHom.id α 
Arguments: {α : Type u_2}
Goal: ∀ {x : NonAssocSemiring α}, ↑(RingHom.id α) = AddMonoidHom.id α
-- RingHom.coe_monoidHom_id
@[simp]
theorem coe_monoidHom_id : (id α : α →* α) = MonoidHom.id α 
Arguments: {α : Type u_2}
Goal: ∀ {x : NonAssocSemiring α}, ↑(RingHom.id α) = MonoidHom.id α
-- RingHom.comp_assoc
theorem comp_assoc {δ} {_ : NonAssocSemiring δ} (f : α →+* β) (g : β →+* γ) (h : γ →+* δ) :
    (h.comp g).comp f = h.comp (g.comp f) 
Arguments: {α : Type u_2} {β : Type u_3} {γ : Type u_4}
Goal: ∀ {x : NonAssocSemiring α} {x_1 : NonAssocSemiring β} {x_2 : NonAssocSemiring γ} {δ : Type u_5}
  {x_3 : NonAssocSemiring δ} (f : α →+* β) (g : β →+* γ) (h : γ →+* δ), (h.comp g).comp f = h.comp (g.comp f)
-- RingHom.coe_comp
@[simp]
theorem coe_comp (hnp : β →+* γ) (hmn : α →+* β) : (hnp.comp hmn : α → γ) = hnp ∘ hmn 
Arguments: {α : Type u_2} {β : Type u_3} {γ : Type u_4}
Goal: ∀ {x : NonAssocSemiring α} {x_1 : NonAssocSemiring β} {x_2 : NonAssocSemiring γ} (hnp : β →+* γ) (hmn : α →+* β),
  ⇑(hnp.comp hmn) = ⇑hnp ∘ ⇑hmn
-- RingHom.comp_apply
theorem comp_apply (hnp : β →+* γ) (hmn : α →+* β) (x : α) :
    (hnp.comp hmn : α → γ) x = hnp (hmn x) 
Arguments: {α : Type u_2} {β : Type u_3} {γ : Type u_4}
Goal: ∀ {x : NonAssocSemiring α} {x_1 : NonAssocSemiring β} {x_2 : NonAssocSemiring γ} (hnp : β →+* γ) (hmn : α →+* β)
  (x_3 : α), (hnp.comp hmn) x_3 = hnp (hmn x_3)
-- RingHom.comp_id
@[simp]
theorem comp_id (f : α →+* β) : f.comp (id α) = f 
Arguments: {α : Type u_2} {β : Type u_3}
Goal: ∀ {x : NonAssocSemiring α} {x_1 : NonAssocSemiring β} (f : α →+* β), f.comp (RingHom.id α) = f
-- RingHom.id_comp
@[simp]
theorem id_comp (f : α →+* β) : (id β).comp f = f 
Arguments: {α : Type u_2} {β : Type u_3}
Goal: ∀ {x : NonAssocSemiring α} {x_1 : NonAssocSemiring β} (f : α →+* β), (RingHom.id β).comp f = f
-- RingHom.one_def
lemma one_def : (1 : α →+* α) = id α 
Arguments: {α : Type u_2}
Goal: ∀ {x : NonAssocSemiring α}, 1 = RingHom.id α
-- RingHom.mul_def
lemma mul_def (f g : α →+* α) : f * g = f.comp g 
Arguments: {α : Type u_2}
Goal: ∀ {x : NonAssocSemiring α} (f g : α →+* α), f * g = f.comp g
-- RingHom.coe_one
@[simp, norm_cast] lemma coe_one : ⇑(1 : α →+* α) = _root_.id 
Arguments: {α : Type u_2}
Goal: ∀ {x : NonAssocSemiring α}, ⇑1 = id
-- RingHom.coe_mul
@[simp, norm_cast] lemma coe_mul (f g : α →+* α) : ⇑(f * g) = f ∘ g 
Arguments: {α : Type u_2}
Goal: ∀ {x : NonAssocSemiring α} (f g : α →+* α), ⇑(f * g) = ⇑f ∘ ⇑g
-- RingHom.coe_pow
@[simp, norm_cast] lemma coe_pow (f : α →+* α) (n : ℕ) : ⇑(f ^ n) = f^[n] 
Arguments: {α : Type u_2}
Goal: ∀ {x : NonAssocSemiring α} (f : α →+* α) (n : ℕ), ⇑(f ^ n) = (⇑f)^[n]
-- RingHom.cancel_right
@[simp]
theorem cancel_right {g₁ g₂ : β →+* γ} {f : α →+* β} (hf : Surjective f) :
    g₁.comp f = g₂.comp f ↔ g₁ = g₂ 
Arguments: {α : Type u_2} {β : Type u_3} {γ : Type u_4}
Goal: ∀ {x : NonAssocSemiring α} {x_1 : NonAssocSemiring β} {x_2 : NonAssocSemiring γ} {g₁ g₂ : β →+* γ} {f : α →+* β},
  Function.Surjective ⇑f → (g₁.comp f = g₂.comp f ↔ g₁ = g₂)
-- RingHom.cancel_left
@[simp]
theorem cancel_left {g : β →+* γ} {f₁ f₂ : α →+* β} (hg : Injective g) :
    g.comp f₁ = g.comp f₂ ↔ f₁ = f₂ 
Arguments: {α : Type u_2} {β : Type u_3} {γ : Type u_4}
Goal: ∀ {x : NonAssocSemiring α} {x_1 : NonAssocSemiring β} {x_2 : NonAssocSemiring γ} {g : β →+* γ} {f₁ f₂ : α →+* β},
  Function.Injective ⇑g → (g.comp f₁ = g.comp f₂ ↔ f₁ = f₂)
-- RingHom.map_pow
protected lemma RingHom.map_pow (f : α →+* β) (a) : ∀ n : ℕ, f (a ^ n) = f a ^ n 
Arguments: {α : Type u_2} {β : Type u_3} [Semiring α] [Semiring β] (f : α →+* β) (a : α) (n : ℕ)
Goal: f (a ^ n) = f a ^ n
-- AddMonoidHom.coe_fn_mkRingHomOfMulSelfOfTwoNeZero
@[simp]
theorem coe_fn_mkRingHomOfMulSelfOfTwoNeZero (h h_two h_one) :
    (f.mkRingHomOfMulSelfOfTwoNeZero h h_two h_one : β → α) = f 
Arguments: {α : Type u_2} {β : Type u_3} [CommRing α] [IsDomain α] [CommRing β] (f : β →+ α) (h : ∀ (x : β), f (x * x) = f x * f x) (h_two : 2 ≠ 0) (h_one : f 1 = 1)
Goal: ⇑(f.mkRingHomOfMulSelfOfTwoNeZero h h_two h_one) = ⇑f
-- AddMonoidHom.coe_addMonoidHom_mkRingHomOfMulSelfOfTwoNeZero
theorem coe_addMonoidHom_mkRingHomOfMulSelfOfTwoNeZero (h h_two h_one) :
    (f.mkRingHomOfMulSelfOfTwoNeZero h h_two h_one : β →+ α) = f 
Arguments: {α : Type u_2} {β : Type u_3} [CommRing α] [IsDomain α] [CommRing β] (f : β →+ α) (h : ∀ (x : β), f (x * x) = f x * f x) (h_two : 2 ≠ 0) (h_one : f 1 = 1)
Goal: ↑(f.mkRingHomOfMulSelfOfTwoNeZero h h_two h_one) = f
-- NonUnitalRingHom.toOpposite_apply
@[simps (config := .asFn)]
def NonUnitalRingHom.toOpposite {R S : Type*} [NonUnitalNonAssocSemiring R]
    [NonUnitalNonAssocSemiring S] (f : R →ₙ+* S) (hf : ∀ x y, Commute (f x) (f y)) : R →ₙ+* Sᵐᵒᵖ 
Arguments: {R : Type u_2} {S : Type u_3} [NonUnitalNonAssocSemiring R] [NonUnitalNonAssocSemiring S] (f : R →ₙ+* S) (hf : ∀ (x y : R), Commute (f x) (f y))
Goal: ⇑(f.toOpposite hf) = MulOpposite.op ∘ ⇑f
-- NonUnitalRingHom.fromOpposite_apply
@[simps (config := .asFn)]
def NonUnitalRingHom.fromOpposite {R S : Type*} [NonUnitalNonAssocSemiring R]
    [NonUnitalNonAssocSemiring S] (f : R →ₙ+* S) (hf : ∀ x y, Commute (f x) (f y)) : Rᵐᵒᵖ →ₙ+* S 
Arguments: {R : Type u_2} {S : Type u_3} [NonUnitalNonAssocSemiring R] [NonUnitalNonAssocSemiring S] (f : R →ₙ+* S) (hf : ∀ (x y : R), Commute (f x) (f y))
Goal: ⇑(f.fromOpposite hf) = ⇑f ∘ MulOpposite.unop
-- NonUnitalRingHom.op_symm_apply_apply
@[simps]
def NonUnitalRingHom.op {α β} [NonUnitalNonAssocSemiring α] [NonUnitalNonAssocSemiring β] :
    (α →ₙ+* β) ≃ (αᵐᵒᵖ →ₙ+* βᵐᵒᵖ) 
Arguments: {α : Type u_2} {β : Type u_3} [NonUnitalNonAssocSemiring α] [NonUnitalNonAssocSemiring β] (f : αᵐᵒᵖ →ₙ+* βᵐᵒᵖ)
Goal: ∀ (a : α), (NonUnitalRingHom.op.symm f) a = (↑(AddMonoidHom.mulUnop f.toAddMonoidHom)).toFun a
-- NonUnitalRingHom.op_apply_apply
@[simps]
def NonUnitalRingHom.op {α β} [NonUnitalNonAssocSemiring α] [NonUnitalNonAssocSemiring β] :
    (α →ₙ+* β) ≃ (αᵐᵒᵖ →ₙ+* βᵐᵒᵖ) 
Arguments: {α : Type u_2} {β : Type u_3} [NonUnitalNonAssocSemiring α] [NonUnitalNonAssocSemiring β] (f : α →ₙ+* β)
Goal: ∀ (a : αᵐᵒᵖ), (NonUnitalRingHom.op f) a = (↑(AddMonoidHom.mulOp f.toAddMonoidHom)).toFun a
-- RingHom.toOpposite_apply
@[simps (config := .asFn)]
def RingHom.toOpposite {R S : Type*} [Semiring R] [Semiring S] (f : R →+* S)
    (hf : ∀ x y, Commute (f x) (f y)) : R →+* Sᵐᵒᵖ 
Arguments: {R : Type u_2} {S : Type u_3} [Semiring R] [Semiring S] (f : R →+* S) (hf : ∀ (x y : R), Commute (f x) (f y))
Goal: ⇑(f.toOpposite hf) = MulOpposite.op ∘ ⇑f
-- RingHom.fromOpposite_apply
@[simps (config := .asFn)]
def RingHom.fromOpposite {R S : Type*} [Semiring R] [Semiring S] (f : R →+* S)
    (hf : ∀ x y, Commute (f x) (f y)) : Rᵐᵒᵖ →+* S 
Arguments: {R : Type u_2} {S : Type u_3} [Semiring R] [Semiring S] (f : R →+* S) (hf : ∀ (x y : R), Commute (f x) (f y))
Goal: ⇑(f.fromOpposite hf) = ⇑f ∘ MulOpposite.unop
-- RingHom.op_symm_apply_apply
@[simps!]
def RingHom.op {α β} [NonAssocSemiring α] [NonAssocSemiring β] :
    (α →+* β) ≃ (αᵐᵒᵖ →+* βᵐᵒᵖ) 
Arguments: {α : Type u_2} {β : Type u_3} [NonAssocSemiring α] [NonAssocSemiring β] (f : αᵐᵒᵖ →+* βᵐᵒᵖ)
Goal: ∀ (a : α), (RingHom.op.symm f) a = MulOpposite.unop (f (MulOpposite.op a))
-- RingHom.op_apply_apply
@[simps!]
def RingHom.op {α β} [NonAssocSemiring α] [NonAssocSemiring β] :
    (α →+* β) ≃ (αᵐᵒᵖ →+* βᵐᵒᵖ) 
Arguments: {α : Type u_2} {β : Type u_3} [NonAssocSemiring α] [NonAssocSemiring β] (f : α →+* β)
Goal: ∀ (a : αᵐᵒᵖ), (RingHom.op f) a = MulOpposite.op (f (MulOpposite.unop a))
-- Int.cast_mul
@[simp, norm_cast]
lemma cast_mul {α : Type*} [NonAssocRing α] : ∀ m n, ((m * n : ℤ) : α) = m * n 
Arguments: {α : Type u_1} [NonAssocRing α] (m n : ℤ)
Goal: ↑(m * n) = ↑m * ↑n
-- Int.cast_pow
@[simp, norm_cast] lemma cast_pow {R : Type*} [Ring R] (n : ℤ) (m : ℕ) :
    ↑(n ^ m) = (n ^ m : R) 
Arguments: {R : Type u_1} [Ring R] (n : ℤ) (m : ℕ)
Goal: ↑(n ^ m) = ↑n ^ m
-- Int.units_eq_one_or
lemma units_eq_one_or (u : ℤˣ) : u = 1 ∨ u = -1 
Arguments: (u : ℤˣ)
Goal: u = 1 ∨ u = -1
-- Int.units_ne_iff_eq_neg
lemma units_ne_iff_eq_neg {u v : ℤˣ} : u ≠ v ↔ u = -v 
Arguments: {u v : ℤˣ}
Goal: u ≠ v ↔ u = -v
-- Int.odd_iff
lemma odd_iff : Odd n ↔ n % 2 = 1 
Arguments: {n : ℤ}
Goal: Odd n ↔ n % 2 = 1
-- Int.not_odd_iff
lemma not_odd_iff : ¬Odd n ↔ n % 2 = 0 
Arguments: {n : ℤ}
Goal: ¬Odd n ↔ n % 2 = 0
-- Int.even_iff_not_odd
lemma even_iff_not_odd : Even n ↔ ¬Odd n 
Arguments: {n : ℤ}
Goal: Even n ↔ ¬Odd n
-- Int.odd_iff_not_even
@[simp] lemma odd_iff_not_even : Odd n ↔ ¬Even n 
Arguments: {n : ℤ}
Goal: Odd n ↔ ¬Even n
-- Int.even_or_odd
lemma even_or_odd (n : ℤ) : Even n ∨ Odd n 
Arguments: (n : ℤ)
Goal: Even n ∨ Odd n
-- Int.even_or_odd'
lemma even_or_odd' (n : ℤ) : ∃ k, n = 2 * k ∨ n = 2 * k + 1 
Arguments: (n : ℤ)
Goal: ∃ k, n = 2 * k ∨ n = 2 * k + 1
-- Int.even_xor'_odd
lemma even_xor'_odd (n : ℤ) : Xor' (Even n) (Odd n) 
Arguments: (n : ℤ)
Goal: Xor' (Even n) (Odd n)
-- Int.even_xor'_odd'
lemma even_xor'_odd' (n : ℤ) : ∃ k, Xor' (n = 2 * k) (n = 2 * k + 1) 
Arguments: (n : ℤ)
Goal: ∃ k, Xor' (n = 2 * k) (n = 2 * k + 1)
-- Int.even_add'
lemma even_add' : Even (m + n) ↔ (Odd m ↔ Odd n) 
Arguments: {m n : ℤ}
Goal: Even (m + n) ↔ (Odd m ↔ Odd n)
-- Int.not_even_bit1
@[simp, deprecated (since := "2023-01-26")]
lemma not_even_bit1 (n : ℤ) : ¬Even (2 * n + 1) 
Arguments: (n : ℤ)
Goal: ¬Even (2 * n + 1)
-- Int.not_even_two_mul_add_one
lemma not_even_two_mul_add_one (n : ℤ) : ¬ Even (2 * n + 1) 
Arguments: (n : ℤ)
Goal: ¬Even (2 * n + 1)
-- Int.even_sub'
lemma even_sub' : Even (m - n) ↔ (Odd m ↔ Odd n) 
Arguments: {m n : ℤ}
Goal: Even (m - n) ↔ (Odd m ↔ Odd n)
-- Int.odd_mul
lemma odd_mul : Odd (m * n) ↔ Odd m ∧ Odd n 
Arguments: {m n : ℤ}
Goal: Odd (m * n) ↔ Odd m ∧ Odd n
-- Int.Odd.of_mul_left
lemma Odd.of_mul_left (h : Odd (m * n)) : Odd m 
Arguments: {m n : ℤ} (h : Odd (m * n))
Goal: Odd m
-- Int.Odd.of_mul_right
lemma Odd.of_mul_right (h : Odd (m * n)) : Odd n 
Arguments: {m n : ℤ} (h : Odd (m * n))
Goal: Odd n
-- Int.odd_pow
@[parity_simps] lemma odd_pow {n : ℕ} : Odd (m ^ n) ↔ Odd m ∨ n = 0 
Arguments: {m : ℤ} {n : ℕ}
Goal: Odd (m ^ n) ↔ Odd m ∨ n = 0
-- Int.odd_pow'
lemma odd_pow' {n : ℕ} (h : n ≠ 0) : Odd (m ^ n) ↔ Odd m 
Arguments: {m : ℤ} {n : ℕ} (h : n ≠ 0)
Goal: Odd (m ^ n) ↔ Odd m
-- Int.odd_add
@[parity_simps] lemma odd_add : Odd (m + n) ↔ (Odd m ↔ Even n) 
Arguments: {m n : ℤ}
Goal: Odd (m + n) ↔ (Odd m ↔ Even n)
-- Int.odd_add'
lemma odd_add' : Odd (m + n) ↔ (Odd n ↔ Even m) 
Arguments: {m n : ℤ}
Goal: Odd (m + n) ↔ (Odd n ↔ Even m)
-- Int.ne_of_odd_add
lemma ne_of_odd_add (h : Odd (m + n)) : m ≠ n 
Arguments: {m n : ℤ} (h : Odd (m + n))
Goal: m ≠ n
-- Int.odd_sub
@[parity_simps] lemma odd_sub : Odd (m - n) ↔ (Odd m ↔ Even n) 
Arguments: {m n : ℤ}
Goal: Odd (m - n) ↔ (Odd m ↔ Even n)
-- Int.odd_sub'
lemma odd_sub' : Odd (m - n) ↔ (Odd n ↔ Even m) 
Arguments: {m n : ℤ}
Goal: Odd (m - n) ↔ (Odd n ↔ Even m)
-- Int.even_mul_succ_self
lemma even_mul_succ_self (n : ℤ) : Even (n * (n + 1)) 
Arguments: (n : ℤ)
Goal: Even (n * (n + 1))
-- Int.even_mul_pred_self
lemma even_mul_pred_self (n : ℤ) : Even (n * (n - 1)) 
Arguments: (n : ℤ)
Goal: Even (n * (n - 1))
-- Int.odd_coe_nat
@[norm_cast] lemma odd_coe_nat (n : ℕ) : Odd (n : ℤ) ↔ Odd n 
Arguments: (n : ℕ)
Goal: Odd ↑n ↔ Odd n
-- Int.natAbs_even
@[simp] lemma natAbs_even : Even n.natAbs ↔ Even n 
Arguments: {n : ℤ}
Goal: Even n.natAbs ↔ Even n
-- Int.natAbs_odd
lemma natAbs_odd : Odd n.natAbs ↔ Odd n 
Arguments: {n : ℤ}
Goal: Odd n.natAbs ↔ Odd n
-- Int.four_dvd_add_or_sub_of_odd
lemma four_dvd_add_or_sub_of_odd {a b : ℤ} (ha : Odd a) (hb : Odd b) :
    4 ∣ a + b ∨ 4 ∣ a - b 
Arguments: {a b : ℤ} (ha : Odd a) (hb : Odd b)
Goal: 4 ∣ a + b ∨ 4 ∣ a - b
-- Int.two_mul_ediv_two_add_one_of_odd
lemma two_mul_ediv_two_add_one_of_odd : Odd n → 2 * (n / 2) + 1 = n 
Arguments: {n : ℤ}
Goal: Odd n → 2 * (n / 2) + 1 = n
-- Int.ediv_two_mul_two_add_one_of_odd
lemma ediv_two_mul_two_add_one_of_odd : Odd n → n / 2 * 2 + 1 = n 
Arguments: {n : ℤ}
Goal: Odd n → n / 2 * 2 + 1 = n
-- Int.add_one_ediv_two_mul_two_of_odd
lemma add_one_ediv_two_mul_two_of_odd : Odd n → 1 + n / 2 * 2 = n 
Arguments: {n : ℤ}
Goal: Odd n → 1 + n / 2 * 2 = n
-- Int.two_mul_ediv_two_of_odd
lemma two_mul_ediv_two_of_odd (h : Odd n) : 2 * (n / 2) = n - 1 
Arguments: {n : ℤ} (h : Odd n)
Goal: 2 * (n / 2) = n - 1
-- Int.isSquare_natCast_iff
@[norm_cast, simp]
theorem isSquare_natCast_iff {n : ℕ} : IsSquare (n : ℤ) ↔ IsSquare n 
Arguments: {n : ℕ}
Goal: IsSquare ↑n ↔ IsSquare n
-- Int.isSquare_ofNat_iff
@[simp]
theorem isSquare_ofNat_iff {n : ℕ} :
    IsSquare (no_index (OfNat.ofNat n) : ℤ) ↔ IsSquare (OfNat.ofNat n : ℕ) 
Arguments: {n : ℕ}
Goal: IsSquare (OfNat.ofNat n) ↔ IsSquare (OfNat.ofNat n)
-- sq_add_sq_mul_sq_add_sq
theorem sq_add_sq_mul_sq_add_sq :
    (x₁ ^ 2 + x₂ ^ 2) * (y₁ ^ 2 + y₂ ^ 2) = (x₁ * y₁ - x₂ * y₂) ^ 2 + (x₁ * y₂ + x₂ * y₁) ^ 2 
Arguments: {R : Type u_1} [CommRing R] {x₁ x₂ y₁ y₂ : R}
Goal: (x₁ ^ 2 + x₂ ^ 2) * (y₁ ^ 2 + y₂ ^ 2) = (x₁ * y₁ - x₂ * y₂) ^ 2 + (x₁ * y₂ + x₂ * y₁) ^ 2
-- sq_add_mul_sq_mul_sq_add_mul_sq
theorem sq_add_mul_sq_mul_sq_add_mul_sq :
    (x₁ ^ 2 + n * x₂ ^ 2) * (y₁ ^ 2 + n * y₂ ^ 2) =
    (x₁ * y₁ - n * x₂ * y₂) ^ 2 + n * (x₁ * y₂ + x₂ * y₁) ^ 2 
Arguments: {R : Type u_1} [CommRing R] {x₁ x₂ y₁ y₂ n : R}
Goal: (x₁ ^ 2 + n * x₂ ^ 2) * (y₁ ^ 2 + n * y₂ ^ 2) = (x₁ * y₁ - n * x₂ * y₂) ^ 2 + n * (x₁ * y₂ + x₂ * y₁) ^ 2
-- pow_four_add_four_mul_pow_four
theorem pow_four_add_four_mul_pow_four :
    a ^ 4 + 4 * b ^ 4 = ((a - b) ^ 2 + b ^ 2) * ((a + b) ^ 2 + b ^ 2) 
Arguments: {R : Type u_1} [CommRing R] {a b : R}
Goal: a ^ 4 + 4 * b ^ 4 = ((a - b) ^ 2 + b ^ 2) * ((a + b) ^ 2 + b ^ 2)
-- pow_four_add_four_mul_pow_four'
theorem pow_four_add_four_mul_pow_four' :
    a ^ 4 + 4 * b ^ 4 = (a ^ 2 - 2 * a * b + 2 * b ^ 2) * (a ^ 2 + 2 * a * b + 2 * b ^ 2) 
Arguments: {R : Type u_1} [CommRing R] {a b : R}
Goal: a ^ 4 + 4 * b ^ 4 = (a ^ 2 - 2 * a * b + 2 * b ^ 2) * (a ^ 2 + 2 * a * b + 2 * b ^ 2)
-- sum_four_sq_mul_sum_four_sq
theorem sum_four_sq_mul_sum_four_sq :
    (x₁ ^ 2 + x₂ ^ 2 + x₃ ^ 2 + x₄ ^ 2) * (y₁ ^ 2 + y₂ ^ 2 + y₃ ^ 2 + y₄ ^ 2) =
      (x₁ * y₁ - x₂ * y₂ - x₃ * y₃ - x₄ * y₄) ^ 2 + (x₁ * y₂ + x₂ * y₁ + x₃ * y₄ - x₄ * y₃) ^ 2 +
          (x₁ * y₃ - x₂ * y₄ + x₃ * y₁ + x₄ * y₂) ^ 2 +
        (x₁ * y₄ + x₂ * y₃ - x₃ * y₂ + x₄ * y₁) ^ 2 
Arguments: {R : Type u_1} [CommRing R] {x₁ x₂ x₃ x₄ y₁ y₂ y₃ y₄ : R}
Goal: (x₁ ^ 2 + x₂ ^ 2 + x₃ ^ 2 + x₄ ^ 2) * (y₁ ^ 2 + y₂ ^ 2 + y₃ ^ 2 + y₄ ^ 2) =
  (x₁ * y₁ - x₂ * y₂ - x₃ * y₃ - x₄ * y₄) ^ 2 + (x₁ * y₂ + x₂ * y₁ + x₃ * y₄ - x₄ * y₃) ^ 2 +
      (x₁ * y₃ - x₂ * y₄ + x₃ * y₁ + x₄ * y₂) ^ 2 +
    (x₁ * y₄ + x₂ * y₃ - x₃ * y₂ + x₄ * y₁) ^ 2