ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Module.sum_smul_eq_zero_of_isTrivialRelation
theorem sum_smul_eq_zero_of_isTrivialRelation (h : IsTrivialRelation f x) :
    ∑ i, f i • x i = 0 
Arguments: {R M : Type u} [CommRing R] [AddCommGroup M] [Module R M] {ι : Type u} [Fintype ι] {f : ι → R} {x : ι → M} (h : Module.IsTrivialRelation f x)
Goal: ∑ i : ι, f i • x i = 0
-- Module.Flat.tfae_equational_criterion
theorem tfae_equational_criterion : List.TFAE [
    Flat R M,
    ∀ (I : Ideal R), Function.Injective ⇑(rTensor M (Submodule.subtype I)),
    ∀ {ι : Type u} [Fintype ι] {f : ι → R} {x : ι → M}, ∑ i, f i ⊗ₜ x i = (0 : R ⊗[R] M) →
      VanishesTrivially R f x,
    ∀ {ι : Type u} [Fintype ι] {f : ι → R} {x : ι → M}, ∑ i, f i • x i = 0 → IsTrivialRelation f x,
    ∀ {ι : Type u} [Fintype ι] {f : ι →₀ R} {x : (ι →₀ R) →ₗ[R] M}, x f = 0 →
      ∃ (κ : Type u) (_ : Fintype κ) (a : (ι →₀ R) →ₗ[R] (κ →₀ R)) (y : (κ →₀ R) →ₗ[R] M),
        x = y ∘ₗ a ∧ a f = 0,
    ∀ {N : Type u} [AddCommGroup N] [Module R N] [Free R N] [Finite R N] {f : N} {x : N →ₗ[R] M},
      x f = 0 →
        ∃ (κ : Type u) (_ : Fintype κ) (a : N →ₗ[R] (κ →₀ R)) (y : (κ →₀ R) →ₗ[R] M),
          x = y ∘ₗ a ∧ a f = 0] 
Arguments: (R M : Type u) [CommRing R] [AddCommGroup M] [Module R M]
Goal: [Module.Flat R M, ∀ (I : Ideal R), Function.Injective ⇑(LinearMap.rTensor M (Submodule.subtype I)),
    ∀ {ι : Type u} [inst : Fintype ι] {f : ι → R} {x : ι → M},
      ∑ i : ι, f i ⊗ₜ[R] x i = 0 → TensorProduct.VanishesTrivially R f x,
    ∀ {ι : Type u} [inst : Fintype ι] {f : ι → R} {x : ι → M}, ∑ i : ι, f i • x i = 0 → Module.IsTrivialRelation f x,
    ∀ {ι : Type u} [inst : Fintype ι] {f : ι →₀ R} {x : (ι →₀ R) →ₗ[R] M}, x f = 0 → ∃ κ x_1 a y, x = y ∘ₗ a ∧ a f = 0,
    ∀ {N : Type u} [inst : AddCommGroup N] [inst_1 : Module R N] [inst_2 : Module.Free R N] [inst_3 : Module.Finite R N]
      {f : N} {x : N →ₗ[R] M}, x f = 0 → ∃ κ x_1 a y, x = y ∘ₗ a ∧ a f = 0].TFAE
-- Module.Flat.iff_forall_isTrivialRelation
theorem iff_forall_isTrivialRelation : Flat R M ↔ ∀ {ι : Type u} [Fintype ι] {f : ι → R}
    {x : ι → M}, ∑ i, f i • x i = 0 → IsTrivialRelation f x 
Arguments: {R M : Type u} [CommRing R] [AddCommGroup M] [Module R M]
Goal: Module.Flat R M ↔
  ∀ {ι : Type u} [inst : Fintype ι] {f : ι → R} {x : ι → M}, ∑ i : ι, f i • x i = 0 → Module.IsTrivialRelation f x
-- Module.Flat.isTrivialRelation_of_sum_smul_eq_zero
theorem isTrivialRelation_of_sum_smul_eq_zero [Flat R M] {ι : Type u} [Fintype ι] {f : ι → R}
    {x : ι → M} (h : ∑ i, f i • x i = 0) : IsTrivialRelation f x 
Arguments: {R M : Type u} [CommRing R] [AddCommGroup M] [Module R M] [Module.Flat R M] {ι : Type u} [Fintype ι] {f : ι → R} {x : ι → M} (h : ∑ i : ι, f i • x i = 0)
Goal: Module.IsTrivialRelation f x
-- Module.Flat.of_forall_isTrivialRelation
theorem of_forall_isTrivialRelation (hfx : ∀ {ι : Type u} [Fintype ι] {f : ι → R} {x : ι → M},
    ∑ i, f i • x i = 0 → IsTrivialRelation f x) : Flat R M 
Arguments: {R M : Type u} [CommRing R] [AddCommGroup M] [Module R M] (hfx : ∀ {ι : Type u} [inst : Fintype ι] {f : ι → R} {x : ι → M}, ∑ i : ι, f i • x i = 0 → Module.IsTrivialRelation f x)
Goal: Module.Flat R M
-- Module.Flat.iff_forall_exists_factorization
theorem iff_forall_exists_factorization : Flat R M ↔
    ∀ {ι : Type u} [Fintype ι] {f : ι →₀ R} {x : (ι →₀ R) →ₗ[R] M}, x f = 0 →
      ∃ (κ : Type u) (_ : Fintype κ) (a : (ι →₀ R) →ₗ[R] (κ →₀ R)) (y : (κ →₀ R) →ₗ[R] M),
        x = y ∘ₗ a ∧ a f = 0 
Arguments: {R M : Type u} [CommRing R] [AddCommGroup M] [Module R M]
Goal: Module.Flat R M ↔
  ∀ {ι : Type u} [inst : Fintype ι] {f : ι →₀ R} {x : (ι →₀ R) →ₗ[R] M}, x f = 0 → ∃ κ x_1 a y, x = y ∘ₗ a ∧ a f = 0
-- Module.Flat.exists_factorization_of_apply_eq_zero
theorem exists_factorization_of_apply_eq_zero [Flat R M] {ι : Type u} [_root_.Finite ι]
    {f : ι →₀ R} {x : (ι →₀ R) →ₗ[R] M} (h : x f = 0) :
    ∃ (κ : Type u) (_ : Fintype κ) (a : (ι →₀ R) →ₗ[R] (κ →₀ R)) (y : (κ →₀ R) →ₗ[R] M),
      x = y ∘ₗ a ∧ a f = 0 
Arguments: {R M : Type u} [CommRing R] [AddCommGroup M] [Module R M] [Module.Flat R M] {ι : Type u} [Finite ι] {f : ι →₀ R} {x : (ι →₀ R) →ₗ[R] M} (h : x f = 0)
Goal: ∃ κ x_1 a y, x = y ∘ₗ a ∧ a f = 0
-- Module.Flat.of_forall_exists_factorization
theorem of_forall_exists_factorization (h : ∀ {ι : Type u} [Fintype ι] {f : ι →₀ R}
    {x : (ι →₀ R) →ₗ[R] M}, x f = 0 →
      ∃ (κ : Type u) (_ : Fintype κ) (a : (ι →₀ R) →ₗ[R] (κ →₀ R)) (y : (κ →₀ R) →ₗ[R] M),
      x = y ∘ₗ a ∧ a f = 0) : Flat R M 
Arguments: {R M : Type u} [CommRing R] [AddCommGroup M] [Module R M] (h : ∀ {ι : Type u} [inst : Fintype ι] {f : ι →₀ R} {x : (ι →₀ R) →ₗ[R] M}, x f = 0 → ∃ κ x_1 a y, x = y ∘ₗ a ∧ a f = 0)
Goal: Module.Flat R M
-- Module.Flat.exists_factorization_of_apply_eq_zero_of_free
theorem exists_factorization_of_apply_eq_zero_of_free [Flat R M] {N : Type u}
    [AddCommGroup N] [Module R N] [Free R N] [Finite R N] {f : N} {x : N →ₗ[R] M} (h : x f = 0) :
    ∃ (κ : Type u) (_ : Fintype κ) (a : N →ₗ[R] (κ →₀ R)) (y : (κ →₀ R) →ₗ[R] M),
      x = y ∘ₗ a ∧ a f = 0 
Arguments: {R M : Type u} [CommRing R] [AddCommGroup M] [Module R M] [Module.Flat R M] {N : Type u} [AddCommGroup N] [Module R N] [Module.Free R N] [Module.Finite R N] {f : N} {x : N →ₗ[R] M} (h : x f = 0)
Goal: ∃ κ x_1 a y, x = y ∘ₗ a ∧ a f = 0
-- Module.Flat.exists_factorization_of_comp_eq_zero_of_free
theorem exists_factorization_of_comp_eq_zero_of_free [Flat R M] {K N : Type u}
    [AddCommGroup K] [Module R K] [Finite R K] [AddCommGroup N] [Module R N] [Free R N] [Finite R N]
    {f : K →ₗ[R] N} {x : N →ₗ[R] M} (h : x ∘ₗ f = 0) :
    ∃ (κ : Type u) (_ : Fintype κ) (a : N →ₗ[R] (κ →₀ R)) (y : (κ →₀ R) →ₗ[R] M),
      x = y ∘ₗ a ∧ a ∘ₗ f = 0 
Arguments: {R M : Type u} [CommRing R] [AddCommGroup M] [Module R M] [Module.Flat R M] {K N : Type u} [AddCommGroup K] [Module R K] [Module.Finite R K] [AddCommGroup N] [Module R N] [Module.Free R N] [Module.Finite R N] {f : K →ₗ[R] N} {x : N →ₗ[R] M} (h : x ∘ₗ f = 0)
Goal: ∃ κ x_1 a y, x = y ∘ₗ a ∧ a ∘ₗ f = 0
-- Module.Flat.exists_factorization_of_isFinitelyPresented
theorem exists_factorization_of_isFinitelyPresented [Flat R M] {P : Type u} [AddCommGroup P]
    [Module R P] [FinitePresentation R P] (h₁ : P →ₗ[R] M) :
      ∃ (κ : Type u) (_ : Fintype κ) (h₂ : P →ₗ[R] (κ →₀ R)) (h₃ : (κ →₀ R) →ₗ[R] M),
        h₁ = h₃ ∘ₗ h₂ 
Arguments: {R M : Type u} [CommRing R] [AddCommGroup M] [Module R M] [Module.Flat R M] {P : Type u} [AddCommGroup P] [Module R P] [Module.FinitePresentation R P] (h₁ : P →ₗ[R] M)
Goal: ∃ κ x h₂ h₃, h₁ = h₃ ∘ₗ h₂
-- OreLocalization.zero_smul
protected theorem zero_smul (x : X[S⁻¹]) : (0 : R[S⁻¹]) • x = 0 
Arguments: {R : Type u_1} [Semiring R] {S : Submonoid R} [OreLocalization.OreSet S] {X : Type u_2} [AddCommMonoid X] [Module R X] (x : OreLocalization S X)
Goal: 0 • x = 0
-- OreLocalization.add_smul
protected theorem add_smul (y z : R[S⁻¹]) (x : X[S⁻¹]) :
    (y + z) • x = y • x + z • x 
Arguments: {R : Type u_1} [Semiring R] {S : Submonoid R} [OreLocalization.OreSet S] {X : Type u_2} [AddCommMonoid X] [Module R X] (y z : OreLocalization S R) (x : OreLocalization S X)
Goal: (y + z) • x = y • x + z • x
-- OreLocalization.zero_mul
protected theorem zero_mul (x : R[S⁻¹]) : 0 * x = 0 
Arguments: {R : Type u_1} [Semiring R] {S : Submonoid R} [OreLocalization.OreSet S] (x : OreLocalization S R)
Goal: 0 * x = 0
-- OreLocalization.mul_zero
protected theorem mul_zero (x : R[S⁻¹]) : x * 0 = 0 
Arguments: {R : Type u_1} [Semiring R] {S : Submonoid R} [OreLocalization.OreSet S] (x : OreLocalization S R)
Goal: x * 0 = 0
-- OreLocalization.left_distrib
protected theorem left_distrib (x y z : R[S⁻¹]) : x * (y + z) = x * y + x * z 
Arguments: {R : Type u_1} [Semiring R] {S : Submonoid R} [OreLocalization.OreSet S] (x y z : OreLocalization S R)
Goal: x * (y + z) = x * y + x * z
-- OreLocalization.right_distrib
theorem right_distrib (x y z : R[S⁻¹]) : (x + y) * z = x * z + y * z 
Arguments: {R : Type u_1} [Semiring R] {S : Submonoid R} [OreLocalization.OreSet S] (x y z : OreLocalization S R)
Goal: (x + y) * z = x * z + y * z
-- OreLocalization.nsmul_eq_nsmul
@[simp]
lemma nsmul_eq_nsmul (n : ℕ) (x : X[S⁻¹]) :
    letI inst := OreLocalization.instModuleOfIsScalarTower (R₀ := ℕ) (R := R) (X := X) (S := S)
    HSMul.hSMul (self := @instHSMul _ _ inst.toSMul) n x = n • x 
Arguments: {R : Type u_1} [Semiring R] {S : Submonoid R} [OreLocalization.OreSet S] {X : Type u_2} [AddCommMonoid X] [Module R X] (n : ℕ) (x : OreLocalization S X)
Goal: n • x = n • x
-- OreLocalization.numeratorRingHom_apply
@[simps!]
def numeratorRingHom : R →+* R[S⁻¹] 
Arguments: {R : Type u_1} [Semiring R] {S : Submonoid R} [OreLocalization.OreSet S] (r : R)
Goal: OreLocalization.numeratorRingHom r = r /ₒ 1
-- OreLocalization.universalHom_apply
theorem universalHom_apply {r : R} {s : S} :
    universalHom f fS hf (r /ₒ s) = ((fS s)⁻¹ : Units T) * f r 
Arguments: {R : Type u_1} [Semiring R] {S : Submonoid R} [OreLocalization.OreSet S] {T : Type u_3} [Semiring T] (f : R →+* T) (fS : ↥S →* Tˣ) (hf : ∀ (s : ↥S), f ↑s = ↑(fS s)) {r : R} {s : ↥S}
Goal: (OreLocalization.universalHom f fS hf) (r /ₒ s) = ↑(fS s)⁻¹ * f r
-- OreLocalization.universalHom_commutes
theorem universalHom_commutes {r : R} : universalHom f fS hf (numeratorHom r) = f r 
Arguments: {R : Type u_1} [Semiring R] {S : Submonoid R} [OreLocalization.OreSet S] {T : Type u_3} [Semiring T] (f : R →+* T) (fS : ↥S →* Tˣ) (hf : ∀ (s : ↥S), f ↑s = ↑(fS s)) {r : R}
Goal: (OreLocalization.universalHom f fS hf) (OreLocalization.numeratorHom r) = f r
-- OreLocalization.universalHom_unique
theorem universalHom_unique (φ : R[S⁻¹] →+* T) (huniv : ∀ r : R, φ (numeratorHom r) = f r) :
    φ = universalHom f fS hf 
Arguments: {R : Type u_1} [Semiring R] {S : Submonoid R} [OreLocalization.OreSet S] {T : Type u_3} [Semiring T] (f : R →+* T) (fS : ↥S →* Tˣ) (hf : ∀ (s : ↥S), f ↑s = ↑(fS s)) (φ : OreLocalization S R →+* T) (huniv : ∀ (r : R), φ (OreLocalization.numeratorHom r) = f r)
Goal: φ = OreLocalization.universalHom f fS hf
-- OreLocalization.zsmul_eq_zsmul
@[simp]
lemma zsmul_eq_zsmul (n : ℤ) (x : X[S⁻¹]) :
    letI inst := OreLocalization.instModuleOfIsScalarTower (R₀ := ℤ) (R := R) (X := X) (S := S)
    HSMul.hSMul (self := @instHSMul _ _ inst.toSMul) n x = n • x 
Arguments: {R : Type u_1} [Ring R] {S : Submonoid R} [OreLocalization.OreSet S] {X : Type u_2} [AddCommGroup X] [Module R X] (n : ℤ) (x : OreLocalization S X)
Goal: n • x = n • x
-- OreLocalization.numeratorHom_inj
theorem numeratorHom_inj (hS : S ≤ nonZeroDivisorsRight R) :
    Function.Injective (numeratorHom : R → R[S⁻¹]) 
Arguments: {R : Type u_1} [Ring R] {S : Submonoid R} [OreLocalization.OreSet S] (hS : S ≤ nonZeroDivisorsRight R)
Goal: Function.Injective ⇑OreLocalization.numeratorHom
-- OreLocalization.subsingleton_iff
theorem subsingleton_iff :
    Subsingleton R[S⁻¹] ↔ 0 ∈ S 
Arguments: {R : Type u_1} [Ring R] {S : Submonoid R} [OreLocalization.OreSet S]
Goal: Subsingleton (OreLocalization S R) ↔ 0 ∈ S
-- OreLocalization.nontrivial_iff
theorem nontrivial_iff :
    Nontrivial R[S⁻¹] ↔ 0 ∉ S 
Arguments: {R : Type u_1} [Ring R] {S : Submonoid R} [OreLocalization.OreSet S]
Goal: Nontrivial (OreLocalization S R) ↔ 0 ∉ S
-- OreLocalization.nontrivial_of_nonZeroDivisors
theorem nontrivial_of_nonZeroDivisors [Nontrivial R] (hS : S ≤ R⁰) :
    Nontrivial R[S⁻¹] 
Arguments: {R : Type u_1} [Ring R] {S : Submonoid R} [OreLocalization.OreSet S] [Nontrivial R] (hS : S ≤ nonZeroDivisors R)
Goal: Nontrivial (OreLocalization S R)
-- OreLocalization.inv_def
protected theorem inv_def {r : R} {s : R⁰} :
    (r /ₒ s)⁻¹ =
      if hr : r = (0 : R) then (0 : R[R⁰⁻¹])
      else s /ₒ ⟨r, fun _ => eq_zero_of_ne_zero_of_mul_right_eq_zero hr⟩ 
Arguments: {R : Type u_1} [Ring R] [Nontrivial R] [OreLocalization.OreSet (nonZeroDivisors R)] [NoZeroDivisors R] {r : R} {s : ↥(nonZeroDivisors R)}
Goal: (r /ₒ s)⁻¹ = if hr : r = 0 then 0 else ↑s /ₒ ⟨r, ⋯⟩
-- OreLocalization.mul_inv_cancel
protected theorem mul_inv_cancel (x : R[R⁰⁻¹]) (h : x ≠ 0) : x * x⁻¹ = 1 
Arguments: {R : Type u_1} [Ring R] [Nontrivial R] [OreLocalization.OreSet (nonZeroDivisors R)] [NoZeroDivisors R] (x : OreLocalization (nonZeroDivisors R) R) (h : x ≠ 0)
Goal: x * x⁻¹ = 1
-- OreLocalization.inv_zero
protected theorem inv_zero : (0 : R[R⁰⁻¹])⁻¹ = 0 
Arguments: {R : Type u_1} [Ring R] [Nontrivial R] [OreLocalization.OreSet (nonZeroDivisors R)] [NoZeroDivisors R]
Goal: 0⁻¹ = 0
-- AdjoinRoot.nontrivial
protected theorem nontrivial [IsDomain R] (h : degree f ≠ 0) : Nontrivial (AdjoinRoot f) 
Arguments: {R : Type u} [CommRing R] (f : R[X]) [IsDomain R] (h : f.degree ≠ 0)
Goal: Nontrivial (AdjoinRoot f)
-- AdjoinRoot.induction_on
@[elab_as_elim]
theorem induction_on {C : AdjoinRoot f → Prop} (x : AdjoinRoot f) (ih : ∀ p : R[X], C (mk f p)) :
    C x 
Arguments: {R : Type u} [CommRing R] (f : R[X]) {C : AdjoinRoot f → Prop} (x : AdjoinRoot f) (ih : ∀ (p : R[X]), C ((AdjoinRoot.mk f) p))
Goal: C x
-- AdjoinRoot.smul_mk
@[simp]
theorem smul_mk [DistribSMul S R] [IsScalarTower S R R] (a : S) (x : R[X]) :
    a • mk f x = mk f (a • x) 
Arguments: {R : Type u} {S : Type v} [CommRing R] (f : R[X]) [DistribSMul S R] [IsScalarTower S R R] (a : S) (x : R[X])
Goal: a • (AdjoinRoot.mk f) x = (AdjoinRoot.mk f) (a • x)
-- AdjoinRoot.smul_of
theorem smul_of [DistribSMul S R] [IsScalarTower S R R] (a : S) (x : R) :
    a • of f x = of f (a • x) 
Arguments: {R : Type u} {S : Type v} [CommRing R] (f : R[X]) [DistribSMul S R] [IsScalarTower S R R] (a : S) (x : R)
Goal: a • (AdjoinRoot.of f) x = (AdjoinRoot.of f) (a • x)
-- AdjoinRoot.algebraMap_eq
@[simp]
theorem algebraMap_eq : algebraMap R (AdjoinRoot f) = of f 
Arguments: {R : Type u} [CommRing R] (f : R[X])
Goal: algebraMap R (AdjoinRoot f) = AdjoinRoot.of f
-- AdjoinRoot.algebraMap_eq'
theorem algebraMap_eq' [CommSemiring S] [Algebra S R] :
    algebraMap S (AdjoinRoot f) = (of f).comp (algebraMap S R) 
Arguments: {R : Type u} (S : Type v) [CommRing R] (f : R[X]) [CommSemiring S] [Algebra S R]
Goal: algebraMap S (AdjoinRoot f) = (AdjoinRoot.of f).comp (algebraMap S R)
-- AdjoinRoot.finiteType
theorem finiteType : Algebra.FiniteType R (AdjoinRoot f) 
Arguments: {R : Type u} [CommRing R] (f : R[X])
Goal: Algebra.FiniteType R (AdjoinRoot f)
-- AdjoinRoot.finitePresentation
theorem finitePresentation : Algebra.FinitePresentation R (AdjoinRoot f) 
Arguments: {R : Type u} [CommRing R] (f : R[X])
Goal: Algebra.FinitePresentation R (AdjoinRoot f)
-- AdjoinRoot.algHom_ext
@[ext]
theorem algHom_ext [Semiring S] [Algebra R S] {g₁ g₂ : AdjoinRoot f →ₐ[R] S}
    (h : g₁ (root f) = g₂ (root f)) : g₁ = g₂ 
Arguments: {R : Type u} {S : Type v} [CommRing R] {f : R[X]} [Semiring S] [Algebra R S] {g₁ g₂ : AdjoinRoot f →ₐ[R] S} (h : g₁ (AdjoinRoot.root f) = g₂ (AdjoinRoot.root f))
Goal: g₁ = g₂
-- AdjoinRoot.mk_eq_mk
@[simp]
theorem mk_eq_mk {g h : R[X]} : mk f g = mk f h ↔ f ∣ g - h 
Arguments: {R : Type u} [CommRing R] {f g h : R[X]}
Goal: (AdjoinRoot.mk f) g = (AdjoinRoot.mk f) h ↔ f ∣ g - h
-- AdjoinRoot.mk_eq_zero
@[simp]
theorem mk_eq_zero {g : R[X]} : mk f g = 0 ↔ f ∣ g 
Arguments: {R : Type u} [CommRing R] {f g : R[X]}
Goal: (AdjoinRoot.mk f) g = 0 ↔ f ∣ g
-- AdjoinRoot.mk_self
@[simp]
theorem mk_self : mk f f = 0 
Arguments: {R : Type u} [CommRing R] {f : R[X]}
Goal: (AdjoinRoot.mk f) f = 0
-- AdjoinRoot.mk_C
@[simp]
theorem mk_C (x : R) : mk f (C x) = x 
Arguments: {R : Type u} [CommRing R] {f : R[X]} (x : R)
Goal: (AdjoinRoot.mk f) (Polynomial.C x) = (AdjoinRoot.of f) x
-- AdjoinRoot.mk_X
@[simp]
theorem mk_X : mk f X = root f 
Arguments: {R : Type u} [CommRing R] {f : R[X]}
Goal: (AdjoinRoot.mk f) Polynomial.X = AdjoinRoot.root f
-- AdjoinRoot.mk_ne_zero_of_degree_lt
theorem mk_ne_zero_of_degree_lt (hf : Monic f) {g : R[X]} (h0 : g ≠ 0) (hd : degree g < degree f) :
    mk f g ≠ 0 
Arguments: {R : Type u} [CommRing R] {f : R[X]} (hf : f.Monic) {g : R[X]} (h0 : g ≠ 0) (hd : g.degree < f.degree)
Goal: (AdjoinRoot.mk f) g ≠ 0
-- AdjoinRoot.mk_ne_zero_of_natDegree_lt
theorem mk_ne_zero_of_natDegree_lt (hf : Monic f) {g : R[X]} (h0 : g ≠ 0)
    (hd : natDegree g < natDegree f) : mk f g ≠ 0 
Arguments: {R : Type u} [CommRing R] {f : R[X]} (hf : f.Monic) {g : R[X]} (h0 : g ≠ 0) (hd : g.natDegree < f.natDegree)
Goal: (AdjoinRoot.mk f) g ≠ 0
-- AdjoinRoot.aeval_eq
@[simp]
theorem aeval_eq (p : R[X]) : aeval (root f) p = mk f p 
Arguments: {R : Type u} [CommRing R] {f : R[X]} (p : R[X])
Goal: (Polynomial.aeval (AdjoinRoot.root f)) p = (AdjoinRoot.mk f) p
-- AdjoinRoot.adjoinRoot_eq_top
theorem adjoinRoot_eq_top : Algebra.adjoin R ({root f} : Set (AdjoinRoot f)) = ⊤ 
Arguments: {R : Type u} [CommRing R] {f : R[X]}
Goal: Algebra.adjoin R {AdjoinRoot.root f} = ⊤
-- AdjoinRoot.eval₂_root
@[simp]
theorem eval₂_root (f : R[X]) : f.eval₂ (of f) (root f) = 0 
Arguments: {R : Type u} [CommRing R] (f : R[X])
Goal: Polynomial.eval₂ (AdjoinRoot.of f) (AdjoinRoot.root f) f = 0
-- AdjoinRoot.isRoot_root
theorem isRoot_root (f : R[X]) : IsRoot (f.map (of f)) (root f) 
Arguments: {R : Type u} [CommRing R] (f : R[X])
Goal: (Polynomial.map (AdjoinRoot.of f) f).IsRoot (AdjoinRoot.root f)
-- AdjoinRoot.isAlgebraic_root
theorem isAlgebraic_root (hf : f ≠ 0) : IsAlgebraic R (root f) 
Arguments: {R : Type u} [CommRing R] {f : R[X]} (hf : f ≠ 0)
Goal: IsAlgebraic R (AdjoinRoot.root f)
-- AdjoinRoot.of.injective_of_degree_ne_zero
theorem of.injective_of_degree_ne_zero [IsDomain R] (hf : f.degree ≠ 0) :
    Function.Injective (AdjoinRoot.of f) 
Arguments: {R : Type u} [CommRing R] {f : R[X]} [IsDomain R] (hf : f.degree ≠ 0)
Goal: Function.Injective ⇑(AdjoinRoot.of f)
-- AdjoinRoot.lift_mk
@[simp]
theorem lift_mk (g : R[X]) : lift i a h (mk f g) = g.eval₂ i a 
Arguments: {R : Type u} {S : Type v} [CommRing R] {f : R[X]} [CommRing S] {i : R →+* S} {a : S} (h : Polynomial.eval₂ i a f = 0) (g : R[X])
Goal: (AdjoinRoot.lift i a h) ((AdjoinRoot.mk f) g) = Polynomial.eval₂ i a g
-- AdjoinRoot.lift_root
@[simp]
theorem lift_root : lift i a h (root f) = a 
Arguments: {R : Type u} {S : Type v} [CommRing R] {f : R[X]} [CommRing S] {i : R →+* S} {a : S} (h : Polynomial.eval₂ i a f = 0)
Goal: (AdjoinRoot.lift i a h) (AdjoinRoot.root f) = a
-- AdjoinRoot.lift_of
@[simp]
theorem lift_of {x : R} : lift i a h x = i x 
Arguments: {R : Type u} {S : Type v} [CommRing R] {f : R[X]} [CommRing S] {i : R →+* S} {a : S} (h : Polynomial.eval₂ i a f = 0) {x : R}
Goal: (AdjoinRoot.lift i a h) ((AdjoinRoot.of f) x) = i x
-- AdjoinRoot.lift_comp_of
@[simp]
theorem lift_comp_of : (lift i a h).comp (of f) = i 
Arguments: {R : Type u} {S : Type v} [CommRing R] {f : R[X]} [CommRing S] {i : R →+* S} {a : S} (h : Polynomial.eval₂ i a f = 0)
Goal: (AdjoinRoot.lift i a h).comp (AdjoinRoot.of f) = i
-- AdjoinRoot.coe_liftHom
@[simp]
theorem coe_liftHom (x : S) (hfx : aeval x f = 0) :
    (liftHom f x hfx : AdjoinRoot f →+* S) = lift (algebraMap R S) x hfx 
Arguments: {R : Type u} {S : Type v} [CommRing R] (f : R[X]) [CommRing S] [Algebra R S] (x : S) (hfx : (Polynomial.aeval x) f = 0)
Goal: ↑(AdjoinRoot.liftHom f x hfx) = AdjoinRoot.lift (algebraMap R S) x hfx
-- AdjoinRoot.aeval_algHom_eq_zero
@[simp]
theorem aeval_algHom_eq_zero (ϕ : AdjoinRoot f →ₐ[R] S) : aeval (ϕ (root f)) f = 0 
Arguments: {R : Type u} {S : Type v} [CommRing R] (f : R[X]) [CommRing S] [Algebra R S] (ϕ : AdjoinRoot f →ₐ[R] S)
Goal: (Polynomial.aeval (ϕ (AdjoinRoot.root f))) f = 0
-- AdjoinRoot.liftHom_eq_algHom
@[simp]
theorem liftHom_eq_algHom (f : R[X]) (ϕ : AdjoinRoot f →ₐ[R] S) :
    liftHom f (ϕ (root f)) (aeval_algHom_eq_zero f ϕ) = ϕ 
Arguments: {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] (f : R[X]) (ϕ : AdjoinRoot f →ₐ[R] S)
Goal: AdjoinRoot.liftHom f (ϕ (AdjoinRoot.root f)) ⋯ = ϕ
-- AdjoinRoot.liftHom_mk
@[simp]
theorem liftHom_mk {g : R[X]} : liftHom f a hfx (mk f g) = aeval a g 
Arguments: {R : Type u} {S : Type v} [CommRing R] (f : R[X]) [CommRing S] {a : S} [Algebra R S] (hfx : (Polynomial.aeval a) f = 0) {g : R[X]}
Goal: (AdjoinRoot.liftHom f a hfx) ((AdjoinRoot.mk f) g) = (Polynomial.aeval a) g
-- AdjoinRoot.liftHom_root
@[simp]
theorem liftHom_root : liftHom f a hfx (root f) = a 
Arguments: {R : Type u} {S : Type v} [CommRing R] (f : R[X]) [CommRing S] {a : S} [Algebra R S] (hfx : (Polynomial.aeval a) f = 0)
Goal: (AdjoinRoot.liftHom f a hfx) (AdjoinRoot.root f) = a
-- AdjoinRoot.liftHom_of
@[simp]
theorem liftHom_of {x : R} : liftHom f a hfx (of f x) = algebraMap _ _ x 
Arguments: {R : Type u} {S : Type v} [CommRing R] (f : R[X]) [CommRing S] {a : S} [Algebra R S] (hfx : (Polynomial.aeval a) f = 0) {x : R}
Goal: (AdjoinRoot.liftHom f a hfx) ((AdjoinRoot.of f) x) = (algebraMap R S) x
-- AdjoinRoot.root_isInv
@[simp]
theorem root_isInv (r : R) : of _ r * root (C r * X - 1) = 1 
Arguments: {R : Type u} [CommRing R] (r : R)
Goal: (AdjoinRoot.of (Polynomial.C r * Polynomial.X - 1)) r * AdjoinRoot.root (Polynomial.C r * Polynomial.X - 1) = 1
-- AdjoinRoot.algHom_subsingleton
theorem algHom_subsingleton {S : Type*} [CommRing S] [Algebra R S] {r : R} :
    Subsingleton (AdjoinRoot (C r * X - 1) →ₐ[R] S) 
Arguments: {R : Type u} [CommRing R] {S : Type u_1} [CommRing S] [Algebra R S] {r : R}
Goal: Subsingleton (AdjoinRoot (Polynomial.C r * Polynomial.X - 1) →ₐ[R] S)
-- AdjoinRoot.isDomain_of_prime
theorem isDomain_of_prime (hf : Prime f) : IsDomain (AdjoinRoot f) 
Arguments: {R : Type u} [CommRing R] {f : R[X]} (hf : Prime f)
Goal: IsDomain (AdjoinRoot f)
-- AdjoinRoot.noZeroSMulDivisors_of_prime_of_degree_ne_zero
theorem noZeroSMulDivisors_of_prime_of_degree_ne_zero [IsDomain R] (hf : Prime f)
    (hf' : f.degree ≠ 0) : NoZeroSMulDivisors R (AdjoinRoot f) 
Arguments: {R : Type u} [CommRing R] {f : R[X]} [IsDomain R] (hf : Prime f) (hf' : f.degree ≠ 0)
Goal: NoZeroSMulDivisors R (AdjoinRoot f)
-- AdjoinRoot.coe_injective
theorem coe_injective (h : degree f ≠ 0) : Function.Injective ((↑) : K → AdjoinRoot f) 
Arguments: {K : Type w} [Field K] {f : K[X]} (h : f.degree ≠ 0)
Goal: Function.Injective ⇑(AdjoinRoot.of f)
-- AdjoinRoot.coe_injective'
theorem coe_injective' [Fact (Irreducible f)] : Function.Injective ((↑) : K → AdjoinRoot f) 
Arguments: {K : Type w} [Field K] {f : K[X]} [Fact (Irreducible f)]
Goal: Function.Injective ⇑(AdjoinRoot.of f)
-- AdjoinRoot.mul_div_root_cancel
theorem mul_div_root_cancel [Fact (Irreducible f)] :
    (X - C (root f)) * ((f.map (of f)) / (X - C (root f))) = f.map (of f) 
Arguments: {K : Type w} [Field K] (f : K[X]) [Fact (Irreducible f)]
Goal: (Polynomial.X - Polynomial.C (AdjoinRoot.root f)) *
    (Polynomial.map (AdjoinRoot.of f) f / (Polynomial.X - Polynomial.C (AdjoinRoot.root f))) =
  Polynomial.map (AdjoinRoot.of f) f
-- AdjoinRoot.isIntegral_root'
theorem isIntegral_root' (hg : g.Monic) : IsIntegral R (root g) 
Arguments: {R : Type u} [CommRing R] {g : R[X]} (hg : g.Monic)
Goal: IsIntegral R (AdjoinRoot.root g)
-- AdjoinRoot.modByMonicHom_mk
@[simp]
theorem modByMonicHom_mk (hg : g.Monic) (f : R[X]) : modByMonicHom hg (mk g f) = f %ₘ g 
Arguments: {R : Type u} [CommRing R] {g : R[X]} (hg : g.Monic) (f : R[X])
Goal: (AdjoinRoot.modByMonicHom hg) ((AdjoinRoot.mk g) f) = f %ₘ g
-- AdjoinRoot.mk_leftInverse
theorem mk_leftInverse (hg : g.Monic) : Function.LeftInverse (mk g) (modByMonicHom hg) 
Arguments: {R : Type u} [CommRing R] {g : R[X]} (hg : g.Monic)
Goal: Function.LeftInverse ⇑(AdjoinRoot.mk g) ⇑(AdjoinRoot.modByMonicHom hg)
-- AdjoinRoot.mk_surjective
theorem mk_surjective : Function.Surjective (mk g) 
Arguments: {R : Type u} [CommRing R] {g : R[X]}
Goal: Function.Surjective ⇑(AdjoinRoot.mk g)
-- AdjoinRoot.powerBasisAux'_repr_symm_apply
theorem powerBasisAux'_repr_symm_apply (hg : g.Monic) (c : Fin g.natDegree →₀ R) :
    (powerBasisAux' hg).repr.symm c = mk g (∑ i : Fin _, monomial i (c i)) 
Arguments: {R : Type u} [CommRing R] {g : R[X]} (hg : g.Monic) (c : Fin g.natDegree →₀ R)
Goal: (AdjoinRoot.powerBasisAux' hg).repr.symm c = (AdjoinRoot.mk g) (∑ i : Fin g.natDegree, (Polynomial.monomial ↑i) (c i))
-- AdjoinRoot.powerBasisAux'_repr_apply_to_fun
@[simp]
theorem powerBasisAux'_repr_apply_to_fun (hg : g.Monic) (f : AdjoinRoot g) (i : Fin g.natDegree) :
    (powerBasisAux' hg).repr f i = (modByMonicHom hg f).coeff ↑i 
Arguments: {R : Type u} [CommRing R] {g : R[X]} (hg : g.Monic) (f : AdjoinRoot g) (i : Fin g.natDegree)
Goal: ((AdjoinRoot.powerBasisAux' hg).repr f) i = ((AdjoinRoot.modByMonicHom hg) f).coeff ↑i