linear_algebra.annihilating_polynomial
β·
Mathlib.LinearAlgebra.AnnihilatingPolynomial
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -204,7 +204,7 @@ theorem monic_generator_eq_minpoly (a : A) (p : π[X]) (p_monic : p.Monic)
by
by_cases h : p = 0
Β· rwa [h, ann_ideal_generator_eq_zero_iff, β p_gen, ideal.span_singleton_eq_bot.mpr]
- Β· rw [β span_singleton_ann_ideal_generator, Ideal.span_singleton_eq_span_singleton] at p_gen
+ Β· rw [β span_singleton_ann_ideal_generator, Ideal.span_singleton_eq_span_singleton] at p_gen
rw [eq_comm]
apply eq_of_monic_of_associated p_monic _ p_gen
Β· apply monic_ann_ideal_generator _ _ ((Associated.ne_zero_iff p_gen).mp h)
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,8 +3,8 @@ Copyright (c) 2022 Justin Thomas. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Justin Thomas
-/
-import Mathbin.FieldTheory.Minpoly.Field
-import Mathbin.RingTheory.PrincipalIdealDomain
+import FieldTheory.Minpoly.Field
+import RingTheory.PrincipalIdealDomain
#align_import linear_algebra.annihilating_polynomial from "leanprover-community/mathlib"@"61db041ab8e4aaf8cb5c7dc10a7d4ff261997536"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,15 +2,12 @@
Copyright (c) 2022 Justin Thomas. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Justin Thomas
-
-! This file was ported from Lean 3 source module linear_algebra.annihilating_polynomial
-! leanprover-community/mathlib commit 61db041ab8e4aaf8cb5c7dc10a7d4ff261997536
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.FieldTheory.Minpoly.Field
import Mathbin.RingTheory.PrincipalIdealDomain
+#align_import linear_algebra.annihilating_polynomial from "leanprover-community/mathlib"@"61db041ab8e4aaf8cb5c7dc10a7d4ff261997536"
+
/-!
# Annihilating Ideal
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -64,11 +64,13 @@ noncomputable def annIdeal (a : A) : Ideal R[X] :=
variable {R}
+#print Polynomial.mem_annIdeal_iff_aeval_eq_zero /-
/-- It is useful to refer to ideal membership sometimes
and the annihilation condition other times. -/
theorem mem_annIdeal_iff_aeval_eq_zero {a : A} {p : R[X]} : p β annIdeal R a β aeval a p = 0 :=
Iff.rfl
#align polynomial.mem_ann_ideal_iff_aeval_eq_zero Polynomial.mem_annIdeal_iff_aeval_eq_zero
+-/
end Semiring
@@ -97,14 +99,17 @@ section
variable {π}
+#print Polynomial.annIdealGenerator_eq_zero_iff /-
@[simp]
theorem annIdealGenerator_eq_zero_iff {a : A} : annIdealGenerator π a = 0 β annIdeal π a = β₯ := by
simp only [ann_ideal_generator, mul_eq_zero, is_principal.eq_bot_iff_generator_eq_zero,
Polynomial.C_eq_zero, inv_eq_zero, Polynomial.leadingCoeff_eq_zero, or_self_iff]
#align polynomial.ann_ideal_generator_eq_zero_iff Polynomial.annIdealGenerator_eq_zero_iff
+-/
end
+#print Polynomial.span_singleton_annIdealGenerator /-
/-- `ann_ideal_generator π a` is indeed a generator. -/
@[simp]
theorem span_singleton_annIdealGenerator (a : A) :
@@ -119,22 +124,29 @@ theorem span_singleton_annIdealGenerator (a : A) :
apply polynomial.leading_coeff_eq_zero.not.mpr
apply (mul_ne_zero_iff.mp h).1
#align polynomial.span_singleton_ann_ideal_generator Polynomial.span_singleton_annIdealGenerator
+-/
+#print Polynomial.annIdealGenerator_mem /-
/-- The annihilating ideal generator is a member of the annihilating ideal. -/
theorem annIdealGenerator_mem (a : A) : annIdealGenerator π a β annIdeal π a :=
Ideal.mul_mem_right _ _ (Submodule.IsPrincipal.generator_mem _)
#align polynomial.ann_ideal_generator_mem Polynomial.annIdealGenerator_mem
+-/
+#print Polynomial.mem_iff_eq_smul_annIdealGenerator /-
theorem mem_iff_eq_smul_annIdealGenerator {p : π[X]} (a : A) :
p β annIdeal π a β β s : π[X], p = s β’ annIdealGenerator π a := by
simp_rw [@eq_comm _ p, β mem_span_singleton, β span_singleton_ann_ideal_generator π a, Ideal.span]
#align polynomial.mem_iff_eq_smul_ann_ideal_generator Polynomial.mem_iff_eq_smul_annIdealGenerator
+-/
+#print Polynomial.monic_annIdealGenerator /-
/-- The generator we chose for the annihilating ideal is monic when the ideal is non-zero. -/
theorem monic_annIdealGenerator (a : A) (hg : annIdealGenerator π a β 0) :
Monic (annIdealGenerator π a) :=
monic_mul_leadingCoeff_inv (mul_ne_zero_iff.mp hg).1
#align polynomial.monic_ann_ideal_generator Polynomial.monic_annIdealGenerator
+-/
/-! We are working toward showing the generator of the annihilating ideal
in the field case is the minimal polynomial. We are going to use a uniqueness
@@ -143,26 +155,33 @@ theorem of the minimal polynomial.
This is the first condition: it must annihilate the original element `a : A`. -/
+#print Polynomial.annIdealGenerator_aeval_eq_zero /-
theorem annIdealGenerator_aeval_eq_zero (a : A) : aeval a (annIdealGenerator π a) = 0 :=
mem_annIdeal_iff_aeval_eq_zero.mp (annIdealGenerator_mem π a)
#align polynomial.ann_ideal_generator_aeval_eq_zero Polynomial.annIdealGenerator_aeval_eq_zero
+-/
variable {π}
+#print Polynomial.mem_iff_annIdealGenerator_dvd /-
theorem mem_iff_annIdealGenerator_dvd {p : π[X]} {a : A} :
p β annIdeal π a β annIdealGenerator π a β£ p := by
rw [β Ideal.mem_span_singleton, span_singleton_ann_ideal_generator]
#align polynomial.mem_iff_ann_ideal_generator_dvd Polynomial.mem_iff_annIdealGenerator_dvd
+-/
+#print Polynomial.degree_annIdealGenerator_le_of_mem /-
/-- The generator of the annihilating ideal has minimal degree among
the non-zero members of the annihilating ideal -/
theorem degree_annIdealGenerator_le_of_mem (a : A) (p : π[X]) (hp : p β annIdeal π a)
(hpn0 : p β 0) : degree (annIdealGenerator π a) β€ degree p :=
degree_le_of_dvd (mem_iff_annIdealGenerator_dvd.1 hp) hpn0
#align polynomial.degree_ann_ideal_generator_le_of_mem Polynomial.degree_annIdealGenerator_le_of_mem
+-/
variable (π)
+#print Polynomial.annIdealGenerator_eq_minpoly /-
/-- The generator of the annihilating ideal is the minimal polynomial. -/
theorem annIdealGenerator_eq_minpoly (a : A) : annIdealGenerator π a = minpoly π a :=
by
@@ -178,7 +197,9 @@ theorem annIdealGenerator_eq_minpoly (a : A) : annIdealGenerator π a = minpol
degree_ann_ideal_generator_le_of_mem a q (mem_ann_ideal_iff_aeval_eq_zero.mpr hq)
q_monic.NeZero
#align polynomial.ann_ideal_generator_eq_minpoly Polynomial.annIdealGenerator_eq_minpoly
+-/
+#print Polynomial.monic_generator_eq_minpoly /-
/-- If a monic generates the annihilating ideal, it must match our choice
of the annihilating ideal generator. -/
theorem monic_generator_eq_minpoly (a : A) (p : π[X]) (p_monic : p.Monic)
@@ -191,6 +212,7 @@ theorem monic_generator_eq_minpoly (a : A) (p : π[X]) (p_monic : p.Monic)
apply eq_of_monic_of_associated p_monic _ p_gen
Β· apply monic_ann_ideal_generator _ _ ((Associated.ne_zero_iff p_gen).mp h)
#align polynomial.monic_generator_eq_minpoly Polynomial.monic_generator_eq_minpoly
+-/
end Field
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -186,7 +186,7 @@ theorem monic_generator_eq_minpoly (a : A) (p : π[X]) (p_monic : p.Monic)
by
by_cases h : p = 0
Β· rwa [h, ann_ideal_generator_eq_zero_iff, β p_gen, ideal.span_singleton_eq_bot.mpr]
- Β· rw [β span_singleton_ann_ideal_generator, Ideal.span_singleton_eq_span_singleton] at p_gen
+ Β· rw [β span_singleton_ann_ideal_generator, Ideal.span_singleton_eq_span_singleton] at p_gen
rw [eq_comm]
apply eq_of_monic_of_associated p_monic _ p_gen
Β· apply monic_ann_ideal_generator _ _ ((Associated.ne_zero_iff p_gen).mp h)
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -143,11 +143,9 @@ theorem of the minimal polynomial.
This is the first condition: it must annihilate the original element `a : A`. -/
-#print Polynomial.annIdealGenerator_aeval_eq_zero /-
theorem annIdealGenerator_aeval_eq_zero (a : A) : aeval a (annIdealGenerator π a) = 0 :=
mem_annIdeal_iff_aeval_eq_zero.mp (annIdealGenerator_mem π a)
#align polynomial.ann_ideal_generator_aeval_eq_zero Polynomial.annIdealGenerator_aeval_eq_zero
--/
variable {π}
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -40,7 +40,7 @@ there are some common specializations which may be more familiar.
-/
-open Polynomial
+open scoped Polynomial
namespace Polynomial
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -64,9 +64,6 @@ noncomputable def annIdeal (a : A) : Ideal R[X] :=
variable {R}
-/- warning: polynomial.mem_ann_ideal_iff_aeval_eq_zero -> Polynomial.mem_annIdeal_iff_aeval_eq_zero is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align polynomial.mem_ann_ideal_iff_aeval_eq_zero Polynomial.mem_annIdeal_iff_aeval_eq_zeroβ'. -/
/-- It is useful to refer to ideal membership sometimes
and the annihilation condition other times. -/
theorem mem_annIdeal_iff_aeval_eq_zero {a : A} {p : R[X]} : p β annIdeal R a β aeval a p = 0 :=
@@ -100,12 +97,6 @@ section
variable {π}
-/- warning: polynomial.ann_ideal_generator_eq_zero_iff -> Polynomial.annIdealGenerator_eq_zero_iff is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} {A : Type.{u2}} [_inst_1 : Field.{u1} π] [_inst_2 : Ring.{u2} A] [_inst_3 : Algebra.{u1, u2} π A (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)) (Ring.toSemiring.{u2} A _inst_2)] {a : A}, Iff (Eq.{succ u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (Polynomial.annIdealGenerator.{u1, u2} π A _inst_1 _inst_2 _inst_3 a) (OfNat.ofNat.{u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) 0 (OfNat.mk.{u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) 0 (Zero.zero.{u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (Polynomial.zero.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))))))) (Eq.{succ u1} (Ideal.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))) (Polynomial.annIdeal.{u1, u2} π A (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)) (Ring.toSemiring.{u2} A _inst_2) _inst_3 a) (Bot.bot.{u1} (Ideal.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))) (Submodule.hasBot.{u1, u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))))) (Semiring.toModule.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))))))
-but is expected to have type
- forall {π : Type.{u2}} {A : Type.{u1}} [_inst_1 : Field.{u2} π] [_inst_2 : Ring.{u1} A] [_inst_3 : Algebra.{u2, u1} π A (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)) (Ring.toSemiring.{u1} A _inst_2)] {a : A}, Iff (Eq.{succ u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.annIdealGenerator.{u2, u1} π A _inst_1 _inst_2 _inst_3 a) (OfNat.ofNat.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) 0 (Zero.toOfNat0.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.zero.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))))) (Eq.{succ u2} (Ideal.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))) (Polynomial.annIdeal.{u2, u1} π A (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)) (Ring.toSemiring.{u1} A _inst_2) _inst_3 a) (Bot.bot.{u2} (Ideal.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))) (Submodule.instBotSubmodule.{u2, u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))))) (Semiring.toModule.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))))))
-Case conversion may be inaccurate. Consider using '#align polynomial.ann_ideal_generator_eq_zero_iff Polynomial.annIdealGenerator_eq_zero_iffβ'. -/
@[simp]
theorem annIdealGenerator_eq_zero_iff {a : A} : annIdealGenerator π a = 0 β annIdeal π a = β₯ := by
simp only [ann_ideal_generator, mul_eq_zero, is_principal.eq_bot_iff_generator_eq_zero,
@@ -114,12 +105,6 @@ theorem annIdealGenerator_eq_zero_iff {a : A} : annIdealGenerator π a = 0 β
end
-/- warning: polynomial.span_singleton_ann_ideal_generator -> Polynomial.span_singleton_annIdealGenerator is a dubious translation:
-lean 3 declaration is
- forall (π : Type.{u1}) {A : Type.{u2}} [_inst_1 : Field.{u1} π] [_inst_2 : Ring.{u2} A] [_inst_3 : Algebra.{u1, u2} π A (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)) (Ring.toSemiring.{u2} A _inst_2)] (a : A), Eq.{succ u1} (Ideal.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))) (Ideal.span.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Singleton.singleton.{u1, u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (Set.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))) (Set.hasSingleton.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))) (Polynomial.annIdealGenerator.{u1, u2} π A _inst_1 _inst_2 _inst_3 a))) (Polynomial.annIdeal.{u1, u2} π A (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)) (Ring.toSemiring.{u2} A _inst_2) _inst_3 a)
-but is expected to have type
- forall (π : Type.{u2}) {A : Type.{u1}} [_inst_1 : Field.{u2} π] [_inst_2 : Ring.{u1} A] [_inst_3 : Algebra.{u2, u1} π A (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)) (Ring.toSemiring.{u1} A _inst_2)] (a : A), Eq.{succ u2} (Ideal.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))) (Ideal.span.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Singleton.singleton.{u2, u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Set.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))) (Set.instSingletonSet.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))) (Polynomial.annIdealGenerator.{u2, u1} π A _inst_1 _inst_2 _inst_3 a))) (Polynomial.annIdeal.{u2, u1} π A (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)) (Ring.toSemiring.{u1} A _inst_2) _inst_3 a)
-Case conversion may be inaccurate. Consider using '#align polynomial.span_singleton_ann_ideal_generator Polynomial.span_singleton_annIdealGeneratorβ'. -/
/-- `ann_ideal_generator π a` is indeed a generator. -/
@[simp]
theorem span_singleton_annIdealGenerator (a : A) :
@@ -135,34 +120,16 @@ theorem span_singleton_annIdealGenerator (a : A) :
apply (mul_ne_zero_iff.mp h).1
#align polynomial.span_singleton_ann_ideal_generator Polynomial.span_singleton_annIdealGenerator
-/- warning: polynomial.ann_ideal_generator_mem -> Polynomial.annIdealGenerator_mem is a dubious translation:
-lean 3 declaration is
- forall (π : Type.{u1}) {A : Type.{u2}} [_inst_1 : Field.{u1} π] [_inst_2 : Ring.{u2} A] [_inst_3 : Algebra.{u1, u2} π A (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)) (Ring.toSemiring.{u2} A _inst_2)] (a : A), Membership.Mem.{u1, u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (Ideal.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))) (SetLike.hasMem.{u1, u1} (Ideal.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))) (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Submodule.setLike.{u1, u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))))) (Semiring.toModule.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))))) (Polynomial.annIdealGenerator.{u1, u2} π A _inst_1 _inst_2 _inst_3 a) (Polynomial.annIdeal.{u1, u2} π A (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)) (Ring.toSemiring.{u2} A _inst_2) _inst_3 a)
-but is expected to have type
- forall (π : Type.{u2}) {A : Type.{u1}} [_inst_1 : Field.{u2} π] [_inst_2 : Ring.{u1} A] [_inst_3 : Algebra.{u2, u1} π A (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)) (Ring.toSemiring.{u1} A _inst_2)] (a : A), Membership.mem.{u2, u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Ideal.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))) (SetLike.instMembership.{u2, u2} (Ideal.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))) (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Submodule.setLike.{u2, u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))))) (Semiring.toModule.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))))) (Polynomial.annIdealGenerator.{u2, u1} π A _inst_1 _inst_2 _inst_3 a) (Polynomial.annIdeal.{u2, u1} π A (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)) (Ring.toSemiring.{u1} A _inst_2) _inst_3 a)
-Case conversion may be inaccurate. Consider using '#align polynomial.ann_ideal_generator_mem Polynomial.annIdealGenerator_memβ'. -/
/-- The annihilating ideal generator is a member of the annihilating ideal. -/
theorem annIdealGenerator_mem (a : A) : annIdealGenerator π a β annIdeal π a :=
Ideal.mul_mem_right _ _ (Submodule.IsPrincipal.generator_mem _)
#align polynomial.ann_ideal_generator_mem Polynomial.annIdealGenerator_mem
-/- warning: polynomial.mem_iff_eq_smul_ann_ideal_generator -> Polynomial.mem_iff_eq_smul_annIdealGenerator is a dubious translation:
-lean 3 declaration is
- forall (π : Type.{u1}) {A : Type.{u2}} [_inst_1 : Field.{u1} π] [_inst_2 : Ring.{u2} A] [_inst_3 : Algebra.{u1, u2} π A (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)) (Ring.toSemiring.{u2} A _inst_2)] {p : Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))} (a : A), Iff (Membership.Mem.{u1, u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (Ideal.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))) (SetLike.hasMem.{u1, u1} (Ideal.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))) (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Submodule.setLike.{u1, u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))))) (Semiring.toModule.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))))) p (Polynomial.annIdeal.{u1, u2} π A (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)) (Ring.toSemiring.{u2} A _inst_2) _inst_3 a)) (Exists.{succ u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (fun (s : Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) => Eq.{succ u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) p (SMul.smul.{u1, u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (Mul.toSMul.{u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (Polynomial.mul'.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1))))) s (Polynomial.annIdealGenerator.{u1, u2} π A _inst_1 _inst_2 _inst_3 a))))
-but is expected to have type
- forall (π : Type.{u2}) {A : Type.{u1}} [_inst_1 : Field.{u2} π] [_inst_2 : Ring.{u1} A] [_inst_3 : Algebra.{u2, u1} π A (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)) (Ring.toSemiring.{u1} A _inst_2)] {p : Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))} (a : A), Iff (Membership.mem.{u2, u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Ideal.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))) (SetLike.instMembership.{u2, u2} (Ideal.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))) (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Submodule.setLike.{u2, u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))))) (Semiring.toModule.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))))) p (Polynomial.annIdeal.{u2, u1} π A (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)) (Ring.toSemiring.{u1} A _inst_2) _inst_3 a)) (Exists.{succ u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (fun (s : Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) => Eq.{succ u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) p (HSMul.hSMul.{u2, u2, u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (instHSMul.{u2, u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Algebra.toSMul.{u2, u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.commSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))) (Polynomial.semiring.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Algebra.id.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.commSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))))) s (Polynomial.annIdealGenerator.{u2, u1} π A _inst_1 _inst_2 _inst_3 a))))
-Case conversion may be inaccurate. Consider using '#align polynomial.mem_iff_eq_smul_ann_ideal_generator Polynomial.mem_iff_eq_smul_annIdealGeneratorβ'. -/
theorem mem_iff_eq_smul_annIdealGenerator {p : π[X]} (a : A) :
p β annIdeal π a β β s : π[X], p = s β’ annIdealGenerator π a := by
simp_rw [@eq_comm _ p, β mem_span_singleton, β span_singleton_ann_ideal_generator π a, Ideal.span]
#align polynomial.mem_iff_eq_smul_ann_ideal_generator Polynomial.mem_iff_eq_smul_annIdealGenerator
-/- warning: polynomial.monic_ann_ideal_generator -> Polynomial.monic_annIdealGenerator is a dubious translation:
-lean 3 declaration is
- forall (π : Type.{u1}) {A : Type.{u2}} [_inst_1 : Field.{u1} π] [_inst_2 : Ring.{u2} A] [_inst_3 : Algebra.{u1, u2} π A (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)) (Ring.toSemiring.{u2} A _inst_2)] (a : A), (Ne.{succ u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (Polynomial.annIdealGenerator.{u1, u2} π A _inst_1 _inst_2 _inst_3 a) (OfNat.ofNat.{u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) 0 (OfNat.mk.{u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) 0 (Zero.zero.{u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (Polynomial.zero.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))))))) -> (Polynomial.Monic.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1))) (Polynomial.annIdealGenerator.{u1, u2} π A _inst_1 _inst_2 _inst_3 a))
-but is expected to have type
- forall (π : Type.{u2}) {A : Type.{u1}} [_inst_1 : Field.{u2} π] [_inst_2 : Ring.{u1} A] [_inst_3 : Algebra.{u2, u1} π A (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)) (Ring.toSemiring.{u1} A _inst_2)] (a : A), (Ne.{succ u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.annIdealGenerator.{u2, u1} π A _inst_1 _inst_2 _inst_3 a) (OfNat.ofNat.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) 0 (Zero.toOfNat0.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.zero.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))))) -> (Polynomial.Monic.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))) (Polynomial.annIdealGenerator.{u2, u1} π A _inst_1 _inst_2 _inst_3 a))
-Case conversion may be inaccurate. Consider using '#align polynomial.monic_ann_ideal_generator Polynomial.monic_annIdealGeneratorβ'. -/
/-- The generator we chose for the annihilating ideal is monic when the ideal is non-zero. -/
theorem monic_annIdealGenerator (a : A) (hg : annIdealGenerator π a β 0) :
Monic (annIdealGenerator π a) :=
@@ -184,23 +151,11 @@ theorem annIdealGenerator_aeval_eq_zero (a : A) : aeval a (annIdealGenerator
variable {π}
-/- warning: polynomial.mem_iff_ann_ideal_generator_dvd -> Polynomial.mem_iff_annIdealGenerator_dvd is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} {A : Type.{u2}} [_inst_1 : Field.{u1} π] [_inst_2 : Ring.{u2} A] [_inst_3 : Algebra.{u1, u2} π A (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)) (Ring.toSemiring.{u2} A _inst_2)] {p : Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))} {a : A}, Iff (Membership.Mem.{u1, u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (Ideal.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))) (SetLike.hasMem.{u1, u1} (Ideal.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))) (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Submodule.setLike.{u1, u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))))) (Semiring.toModule.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))))) p (Polynomial.annIdeal.{u1, u2} π A (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)) (Ring.toSemiring.{u2} A _inst_2) _inst_3 a)) (Dvd.Dvd.{u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (semigroupDvd.{u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (SemigroupWithZero.toSemigroup.{u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (NonUnitalSemiring.toSemigroupWithZero.{u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (NonUnitalRing.toNonUnitalSemiring.{u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (NonUnitalCommRing.toNonUnitalRing.{u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (CommRing.toNonUnitalCommRing.{u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (Polynomial.commRing.{u1} π (EuclideanDomain.toCommRing.{u1} π (Field.toEuclideanDomain.{u1} π _inst_1))))))))) (Polynomial.annIdealGenerator.{u1, u2} π A _inst_1 _inst_2 _inst_3 a) p)
-but is expected to have type
- forall {π : Type.{u2}} {A : Type.{u1}} [_inst_1 : Field.{u2} π] [_inst_2 : Ring.{u1} A] [_inst_3 : Algebra.{u2, u1} π A (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)) (Ring.toSemiring.{u1} A _inst_2)] {p : Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))} {a : A}, Iff (Membership.mem.{u2, u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Ideal.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))) (SetLike.instMembership.{u2, u2} (Ideal.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))) (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Submodule.setLike.{u2, u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))))) (Semiring.toModule.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))))) p (Polynomial.annIdeal.{u2, u1} π A (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)) (Ring.toSemiring.{u1} A _inst_2) _inst_3 a)) (Dvd.dvd.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (semigroupDvd.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (SemigroupWithZero.toSemigroup.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (NonUnitalSemiring.toSemigroupWithZero.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (NonUnitalCommSemiring.toNonUnitalSemiring.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (NonUnitalCommRing.toNonUnitalCommSemiring.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (CommRing.toNonUnitalCommRing.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.commRing.{u2} π (EuclideanDomain.toCommRing.{u2} π (Field.toEuclideanDomain.{u2} π _inst_1))))))))) (Polynomial.annIdealGenerator.{u2, u1} π A _inst_1 _inst_2 _inst_3 a) p)
-Case conversion may be inaccurate. Consider using '#align polynomial.mem_iff_ann_ideal_generator_dvd Polynomial.mem_iff_annIdealGenerator_dvdβ'. -/
theorem mem_iff_annIdealGenerator_dvd {p : π[X]} {a : A} :
p β annIdeal π a β annIdealGenerator π a β£ p := by
rw [β Ideal.mem_span_singleton, span_singleton_ann_ideal_generator]
#align polynomial.mem_iff_ann_ideal_generator_dvd Polynomial.mem_iff_annIdealGenerator_dvd
-/- warning: polynomial.degree_ann_ideal_generator_le_of_mem -> Polynomial.degree_annIdealGenerator_le_of_mem is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} {A : Type.{u2}} [_inst_1 : Field.{u1} π] [_inst_2 : Ring.{u2} A] [_inst_3 : Algebra.{u1, u2} π A (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)) (Ring.toSemiring.{u2} A _inst_2)] (a : A) (p : Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))), (Membership.Mem.{u1, u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (Ideal.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))) (SetLike.hasMem.{u1, u1} (Ideal.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))) (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Submodule.setLike.{u1, u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))))) (Semiring.toModule.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))))) p (Polynomial.annIdeal.{u1, u2} π A (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)) (Ring.toSemiring.{u2} A _inst_2) _inst_3 a)) -> (Ne.{succ u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) p (OfNat.ofNat.{u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) 0 (OfNat.mk.{u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) 0 (Zero.zero.{u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (Polynomial.zero.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))))))) -> (LE.le.{0} (WithBot.{0} Nat) (Preorder.toHasLe.{0} (WithBot.{0} Nat) (WithBot.preorder.{0} Nat (PartialOrder.toPreorder.{0} Nat (OrderedCancelAddCommMonoid.toPartialOrder.{0} Nat (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} Nat Nat.strictOrderedSemiring))))) (Polynomial.degree.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1))) (Polynomial.annIdealGenerator.{u1, u2} π A _inst_1 _inst_2 _inst_3 a)) (Polynomial.degree.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1))) p))
-but is expected to have type
- forall {π : Type.{u2}} {A : Type.{u1}} [_inst_1 : Field.{u2} π] [_inst_2 : Ring.{u1} A] [_inst_3 : Algebra.{u2, u1} π A (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)) (Ring.toSemiring.{u1} A _inst_2)] (a : A) (p : Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))), (Membership.mem.{u2, u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Ideal.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))) (SetLike.instMembership.{u2, u2} (Ideal.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))) (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Submodule.setLike.{u2, u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))))) (Semiring.toModule.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))))) p (Polynomial.annIdeal.{u2, u1} π A (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)) (Ring.toSemiring.{u1} A _inst_2) _inst_3 a)) -> (Ne.{succ u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) p (OfNat.ofNat.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) 0 (Zero.toOfNat0.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.zero.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))))) -> (LE.le.{0} (WithBot.{0} Nat) (Preorder.toLE.{0} (WithBot.{0} Nat) (WithBot.preorder.{0} Nat (PartialOrder.toPreorder.{0} Nat (StrictOrderedSemiring.toPartialOrder.{0} Nat Nat.strictOrderedSemiring)))) (Polynomial.degree.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))) (Polynomial.annIdealGenerator.{u2, u1} π A _inst_1 _inst_2 _inst_3 a)) (Polynomial.degree.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))) p))
-Case conversion may be inaccurate. Consider using '#align polynomial.degree_ann_ideal_generator_le_of_mem Polynomial.degree_annIdealGenerator_le_of_memβ'. -/
/-- The generator of the annihilating ideal has minimal degree among
the non-zero members of the annihilating ideal -/
theorem degree_annIdealGenerator_le_of_mem (a : A) (p : π[X]) (hp : p β annIdeal π a)
@@ -210,12 +165,6 @@ theorem degree_annIdealGenerator_le_of_mem (a : A) (p : π[X]) (hp : p β ann
variable (π)
-/- warning: polynomial.ann_ideal_generator_eq_minpoly -> Polynomial.annIdealGenerator_eq_minpoly is a dubious translation:
-lean 3 declaration is
- forall (π : Type.{u1}) {A : Type.{u2}} [_inst_1 : Field.{u1} π] [_inst_2 : Ring.{u2} A] [_inst_3 : Algebra.{u1, u2} π A (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)) (Ring.toSemiring.{u2} A _inst_2)] (a : A), Eq.{succ u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (Polynomial.annIdealGenerator.{u1, u2} π A _inst_1 _inst_2 _inst_3 a) (minpoly.{u1, u2} π A (EuclideanDomain.toCommRing.{u1} π (Field.toEuclideanDomain.{u1} π _inst_1)) _inst_2 _inst_3 a)
-but is expected to have type
- forall (π : Type.{u2}) {A : Type.{u1}} [_inst_1 : Field.{u2} π] [_inst_2 : Ring.{u1} A] [_inst_3 : Algebra.{u2, u1} π A (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)) (Ring.toSemiring.{u1} A _inst_2)] (a : A), Eq.{succ u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.annIdealGenerator.{u2, u1} π A _inst_1 _inst_2 _inst_3 a) (minpoly.{u2, u1} π A (EuclideanDomain.toCommRing.{u2} π (Field.toEuclideanDomain.{u2} π _inst_1)) _inst_2 _inst_3 a)
-Case conversion may be inaccurate. Consider using '#align polynomial.ann_ideal_generator_eq_minpoly Polynomial.annIdealGenerator_eq_minpolyβ'. -/
/-- The generator of the annihilating ideal is the minimal polynomial. -/
theorem annIdealGenerator_eq_minpoly (a : A) : annIdealGenerator π a = minpoly π a :=
by
@@ -232,12 +181,6 @@ theorem annIdealGenerator_eq_minpoly (a : A) : annIdealGenerator π a = minpol
q_monic.NeZero
#align polynomial.ann_ideal_generator_eq_minpoly Polynomial.annIdealGenerator_eq_minpoly
-/- warning: polynomial.monic_generator_eq_minpoly -> Polynomial.monic_generator_eq_minpoly is a dubious translation:
-lean 3 declaration is
- forall (π : Type.{u1}) {A : Type.{u2}} [_inst_1 : Field.{u1} π] [_inst_2 : Ring.{u2} A] [_inst_3 : Algebra.{u1, u2} π A (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)) (Ring.toSemiring.{u2} A _inst_2)] (a : A) (p : Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))), (Polynomial.Monic.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1))) p) -> (Eq.{succ u1} (Ideal.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))) (Ideal.span.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Singleton.singleton.{u1, u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (Set.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))) (Set.hasSingleton.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))) p)) (Polynomial.annIdeal.{u1, u2} π A (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)) (Ring.toSemiring.{u2} A _inst_2) _inst_3 a)) -> (Eq.{succ u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (Polynomial.annIdealGenerator.{u1, u2} π A _inst_1 _inst_2 _inst_3 a) p)
-but is expected to have type
- forall (π : Type.{u2}) {A : Type.{u1}} [_inst_1 : Field.{u2} π] [_inst_2 : Ring.{u1} A] [_inst_3 : Algebra.{u2, u1} π A (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)) (Ring.toSemiring.{u1} A _inst_2)] (a : A) (p : Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))), (Polynomial.Monic.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))) p) -> (Eq.{succ u2} (Ideal.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))) (Ideal.span.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Singleton.singleton.{u2, u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Set.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))) (Set.instSingletonSet.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))) p)) (Polynomial.annIdeal.{u2, u1} π A (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)) (Ring.toSemiring.{u1} A _inst_2) _inst_3 a)) -> (Eq.{succ u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.annIdealGenerator.{u2, u1} π A _inst_1 _inst_2 _inst_3 a) p)
-Case conversion may be inaccurate. Consider using '#align polynomial.monic_generator_eq_minpoly Polynomial.monic_generator_eq_minpolyβ'. -/
/-- If a monic generates the annihilating ideal, it must match our choice
of the annihilating ideal generator. -/
theorem monic_generator_eq_minpoly (a : A) (p : π[X]) (p_monic : p.Monic)
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -65,10 +65,7 @@ noncomputable def annIdeal (a : A) : Ideal R[X] :=
variable {R}
/- warning: polynomial.mem_ann_ideal_iff_aeval_eq_zero -> Polynomial.mem_annIdeal_iff_aeval_eq_zero is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} {A : Type.{u2}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : Semiring.{u2} A] [_inst_3 : Algebra.{u1, u2} R A _inst_1 _inst_2] {a : A} {p : Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)}, Iff (Membership.Mem.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Ideal.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (SetLike.hasMem.{u1, u1} (Ideal.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Submodule.setLike.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (Semiring.toModule.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) p (Polynomial.annIdeal.{u1, u2} R A _inst_1 _inst_2 _inst_3 a)) (Eq.{succ u2} A (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (AlgHom.{u1, u1, u2} R (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) A _inst_1 (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) _inst_2 (Polynomial.algebraOfAlgebra.{u1, u1} R R _inst_1 (CommSemiring.toSemiring.{u1} R _inst_1) (Algebra.id.{u1} R _inst_1)) _inst_3) (fun (_x : AlgHom.{u1, u1, u2} R (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) A _inst_1 (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) _inst_2 (Polynomial.algebraOfAlgebra.{u1, u1} R R _inst_1 (CommSemiring.toSemiring.{u1} R _inst_1) (Algebra.id.{u1} R _inst_1)) _inst_3) => (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) -> A) ([anonymous].{u1, u1, u2} R (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) A _inst_1 (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) _inst_2 (Polynomial.algebraOfAlgebra.{u1, u1} R R _inst_1 (CommSemiring.toSemiring.{u1} R _inst_1) (Algebra.id.{u1} R _inst_1)) _inst_3) (Polynomial.aeval.{u1, u2} R A _inst_1 _inst_2 _inst_3 a) p) (OfNat.ofNat.{u2} A 0 (OfNat.mk.{u2} A 0 (Zero.zero.{u2} A (MulZeroClass.toHasZero.{u2} A (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2))))))))
-but is expected to have type
- forall {R : Type.{u2}} {A : Type.{u1}} [_inst_1 : CommSemiring.{u2} R] [_inst_2 : Semiring.{u1} A] [_inst_3 : Algebra.{u2, u1} R A _inst_1 _inst_2] {a : A} {p : Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)}, Iff (Membership.mem.{u2, u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Ideal.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (SetLike.instMembership.{u2, u2} (Ideal.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Submodule.setLike.{u2, u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))))) (Semiring.toModule.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))))) p (Polynomial.annIdeal.{u2, u1} R A _inst_1 _inst_2 _inst_3 a)) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) => A) p) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (AlgHom.{u2, u2, u1} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) A _inst_1 (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) _inst_2 (Polynomial.algebraOfAlgebra.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1)) _inst_3) (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (fun (_x : Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) => A) _x) (SMulHomClass.toFunLike.{max u1 u2, u2, u2, u1} (AlgHom.{u2, u2, u1} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) A _inst_1 (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) _inst_2 (Polynomial.algebraOfAlgebra.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1)) _inst_3) R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) A (SMulZeroClass.toSMul.{u2, u2} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (AddMonoid.toZero.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (AddCommMonoid.toAddMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))))))) (DistribSMul.toSMulZeroClass.{u2, u2} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (AddMonoid.toAddZeroClass.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (AddCommMonoid.toAddMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))))))) (DistribMulAction.toDistribSMul.{u2, u2} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))))) (Module.toDistribMulAction.{u2, u2} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))))) (Algebra.toModule.{u2, u2} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) _inst_1 (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.algebraOfAlgebra.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1))))))) (SMulZeroClass.toSMul.{u2, u1} R A (AddMonoid.toZero.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u2, u1} R A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribMulAction.toDistribSMul.{u2, u1} R A (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u2, u1} R A (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u2, u1} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max u1 u2, u2, u2, u1} (AlgHom.{u2, u2, u1} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) A _inst_1 (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) _inst_2 (Polynomial.algebraOfAlgebra.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1)) _inst_3) R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) A (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u2, u2} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))))) (Algebra.toModule.{u2, u2} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) _inst_1 (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.algebraOfAlgebra.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1)))) (Module.toDistribMulAction.{u2, u1} R A (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u2, u1} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max u1 u2, u2, u2, u1} (AlgHom.{u2, u2, u1} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) A _inst_1 (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) _inst_2 (Polynomial.algebraOfAlgebra.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1)) _inst_3) R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) A (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)) (Module.toDistribMulAction.{u2, u2} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))))) (Algebra.toModule.{u2, u2} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) _inst_1 (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.algebraOfAlgebra.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1)))) (Module.toDistribMulAction.{u2, u1} R A (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u2, u1} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u2, u2, u1, max u1 u2} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) A _inst_1 (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) _inst_2 (Polynomial.algebraOfAlgebra.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1)) _inst_3 (AlgHom.{u2, u2, u1} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) A _inst_1 (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) _inst_2 (Polynomial.algebraOfAlgebra.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1)) _inst_3) (AlgHom.algHomClass.{u2, u2, u1} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) A _inst_1 (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) _inst_2 (Polynomial.algebraOfAlgebra.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1)) _inst_3))))) (Polynomial.aeval.{u2, u1} R A _inst_1 _inst_2 _inst_3 a) p) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) => A) p) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) => A) p) (MonoidWithZero.toZero.{u1} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) => A) p) (Semiring.toMonoidWithZero.{u1} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) => A) p) _inst_2)))))
+<too large>
Case conversion may be inaccurate. Consider using '#align polynomial.mem_ann_ideal_iff_aeval_eq_zero Polynomial.mem_annIdeal_iff_aeval_eq_zeroβ'. -/
/-- It is useful to refer to ideal membership sometimes
and the annihilation condition other times. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/ef95945cd48c932c9e034872bd25c3c220d9c946
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Justin Thomas
! This file was ported from Lean 3 source module linear_algebra.annihilating_polynomial
-! leanprover-community/mathlib commit d3e8e0a0237c10c2627bf52c246b15ff8e7df4c0
+! leanprover-community/mathlib commit 61db041ab8e4aaf8cb5c7dc10a7d4ff261997536
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -14,6 +14,9 @@ import Mathbin.RingTheory.PrincipalIdealDomain
/-!
# Annihilating Ideal
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
Given a commutative ring `R` and an `R`-algebra `A`
Every element `a : A` defines
an ideal `polynomial.ann_ideal a β R[X]`.
mathlib commit https://github.com/leanprover-community/mathlib/commit/8d33f09cd7089ecf074b4791907588245aec5d1b
@@ -65,7 +65,7 @@ variable {R}
lean 3 declaration is
forall {R : Type.{u1}} {A : Type.{u2}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : Semiring.{u2} A] [_inst_3 : Algebra.{u1, u2} R A _inst_1 _inst_2] {a : A} {p : Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)}, Iff (Membership.Mem.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Ideal.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (SetLike.hasMem.{u1, u1} (Ideal.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Submodule.setLike.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (Semiring.toModule.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) p (Polynomial.annIdeal.{u1, u2} R A _inst_1 _inst_2 _inst_3 a)) (Eq.{succ u2} A (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (AlgHom.{u1, u1, u2} R (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) A _inst_1 (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) _inst_2 (Polynomial.algebraOfAlgebra.{u1, u1} R R _inst_1 (CommSemiring.toSemiring.{u1} R _inst_1) (Algebra.id.{u1} R _inst_1)) _inst_3) (fun (_x : AlgHom.{u1, u1, u2} R (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) A _inst_1 (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) _inst_2 (Polynomial.algebraOfAlgebra.{u1, u1} R R _inst_1 (CommSemiring.toSemiring.{u1} R _inst_1) (Algebra.id.{u1} R _inst_1)) _inst_3) => (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) -> A) ([anonymous].{u1, u1, u2} R (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) A _inst_1 (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) _inst_2 (Polynomial.algebraOfAlgebra.{u1, u1} R R _inst_1 (CommSemiring.toSemiring.{u1} R _inst_1) (Algebra.id.{u1} R _inst_1)) _inst_3) (Polynomial.aeval.{u1, u2} R A _inst_1 _inst_2 _inst_3 a) p) (OfNat.ofNat.{u2} A 0 (OfNat.mk.{u2} A 0 (Zero.zero.{u2} A (MulZeroClass.toHasZero.{u2} A (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2))))))))
but is expected to have type
- forall {R : Type.{u2}} {A : Type.{u1}} [_inst_1 : CommSemiring.{u2} R] [_inst_2 : Semiring.{u1} A] [_inst_3 : Algebra.{u2, u1} R A _inst_1 _inst_2] {a : A} {p : Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)}, Iff (Membership.mem.{u2, u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Ideal.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (SetLike.instMembership.{u2, u2} (Ideal.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Submodule.setLike.{u2, u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))))) (Semiring.toModule.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))))) p (Polynomial.annIdeal.{u2, u1} R A _inst_1 _inst_2 _inst_3 a)) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) => A) p) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (AlgHom.{u2, u2, u1} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) A _inst_1 (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) _inst_2 (Polynomial.algebraOfAlgebra.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1)) _inst_3) (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (fun (_x : Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) => A) _x) (SMulHomClass.toFunLike.{max u1 u2, u2, u2, u1} (AlgHom.{u2, u2, u1} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) A _inst_1 (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) _inst_2 (Polynomial.algebraOfAlgebra.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1)) _inst_3) R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) A (SMulZeroClass.toSMul.{u2, u2} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (AddMonoid.toZero.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (AddCommMonoid.toAddMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))))))) (DistribSMul.toSMulZeroClass.{u2, u2} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (AddMonoid.toAddZeroClass.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (AddCommMonoid.toAddMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))))))) (DistribMulAction.toDistribSMul.{u2, u2} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))))) (Module.toDistribMulAction.{u2, u2} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))))) (Algebra.toModule.{u2, u2} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) _inst_1 (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.algebraOfAlgebra.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1))))))) (SMulZeroClass.toSMul.{u2, u1} R A (AddMonoid.toZero.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u2, u1} R A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribMulAction.toDistribSMul.{u2, u1} R A (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u2, u1} R A (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u2, u1} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max u1 u2, u2, u2, u1} (AlgHom.{u2, u2, u1} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) A _inst_1 (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) _inst_2 (Polynomial.algebraOfAlgebra.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1)) _inst_3) R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) A (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u2, u2} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))))) (Algebra.toModule.{u2, u2} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) _inst_1 (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.algebraOfAlgebra.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1)))) (Module.toDistribMulAction.{u2, u1} R A (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u2, u1} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max u1 u2, u2, u2, u1} (AlgHom.{u2, u2, u1} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) A _inst_1 (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) _inst_2 (Polynomial.algebraOfAlgebra.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1)) _inst_3) R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) A (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)) (Module.toDistribMulAction.{u2, u2} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))))) (Algebra.toModule.{u2, u2} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) _inst_1 (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.algebraOfAlgebra.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1)))) (Module.toDistribMulAction.{u2, u1} R A (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u2, u1} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u2, u2, u1, max u1 u2} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) A _inst_1 (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) _inst_2 (Polynomial.algebraOfAlgebra.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1)) _inst_3 (AlgHom.{u2, u2, u1} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) A _inst_1 (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) _inst_2 (Polynomial.algebraOfAlgebra.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1)) _inst_3) (AlgHom.algHomClass.{u2, u2, u1} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) A _inst_1 (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) _inst_2 (Polynomial.algebraOfAlgebra.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1)) _inst_3))))) (Polynomial.aeval.{u2, u1} R A _inst_1 _inst_2 _inst_3 a) p) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) => A) p) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) => A) p) (MonoidWithZero.toZero.{u1} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) => A) p) (Semiring.toMonoidWithZero.{u1} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) => A) p) _inst_2)))))
+ forall {R : Type.{u2}} {A : Type.{u1}} [_inst_1 : CommSemiring.{u2} R] [_inst_2 : Semiring.{u1} A] [_inst_3 : Algebra.{u2, u1} R A _inst_1 _inst_2] {a : A} {p : Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)}, Iff (Membership.mem.{u2, u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Ideal.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (SetLike.instMembership.{u2, u2} (Ideal.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Submodule.setLike.{u2, u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))))) (Semiring.toModule.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))))) p (Polynomial.annIdeal.{u2, u1} R A _inst_1 _inst_2 _inst_3 a)) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) => A) p) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (AlgHom.{u2, u2, u1} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) A _inst_1 (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) _inst_2 (Polynomial.algebraOfAlgebra.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1)) _inst_3) (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (fun (_x : Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) => A) _x) (SMulHomClass.toFunLike.{max u1 u2, u2, u2, u1} (AlgHom.{u2, u2, u1} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) A _inst_1 (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) _inst_2 (Polynomial.algebraOfAlgebra.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1)) _inst_3) R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) A (SMulZeroClass.toSMul.{u2, u2} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (AddMonoid.toZero.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (AddCommMonoid.toAddMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))))))) (DistribSMul.toSMulZeroClass.{u2, u2} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (AddMonoid.toAddZeroClass.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (AddCommMonoid.toAddMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))))))) (DistribMulAction.toDistribSMul.{u2, u2} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))))) (Module.toDistribMulAction.{u2, u2} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))))) (Algebra.toModule.{u2, u2} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) _inst_1 (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.algebraOfAlgebra.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1))))))) (SMulZeroClass.toSMul.{u2, u1} R A (AddMonoid.toZero.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u2, u1} R A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribMulAction.toDistribSMul.{u2, u1} R A (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u2, u1} R A (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u2, u1} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max u1 u2, u2, u2, u1} (AlgHom.{u2, u2, u1} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) A _inst_1 (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) _inst_2 (Polynomial.algebraOfAlgebra.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1)) _inst_3) R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) A (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u2, u2} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))))) (Algebra.toModule.{u2, u2} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) _inst_1 (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.algebraOfAlgebra.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1)))) (Module.toDistribMulAction.{u2, u1} R A (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u2, u1} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max u1 u2, u2, u2, u1} (AlgHom.{u2, u2, u1} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) A _inst_1 (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) _inst_2 (Polynomial.algebraOfAlgebra.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1)) _inst_3) R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) A (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)) (Module.toDistribMulAction.{u2, u2} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))))) (Algebra.toModule.{u2, u2} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) _inst_1 (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.algebraOfAlgebra.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1)))) (Module.toDistribMulAction.{u2, u1} R A (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u2, u1} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u2, u2, u1, max u1 u2} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) A _inst_1 (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) _inst_2 (Polynomial.algebraOfAlgebra.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1)) _inst_3 (AlgHom.{u2, u2, u1} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) A _inst_1 (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) _inst_2 (Polynomial.algebraOfAlgebra.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1)) _inst_3) (AlgHom.algHomClass.{u2, u2, u1} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) A _inst_1 (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) _inst_2 (Polynomial.algebraOfAlgebra.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1)) _inst_3))))) (Polynomial.aeval.{u2, u1} R A _inst_1 _inst_2 _inst_3 a) p) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) => A) p) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) => A) p) (MonoidWithZero.toZero.{u1} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) => A) p) (Semiring.toMonoidWithZero.{u1} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) => A) p) _inst_2)))))
Case conversion may be inaccurate. Consider using '#align polynomial.mem_ann_ideal_iff_aeval_eq_zero Polynomial.mem_annIdeal_iff_aeval_eq_zeroβ'. -/
/-- It is useful to refer to ideal membership sometimes
and the annihilation condition other times. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/75e7fca56381d056096ce5d05e938f63a6567828
@@ -47,6 +47,7 @@ variable {R A : Type _} [CommSemiring R] [Semiring A] [Algebra R A]
variable (R)
+#print Polynomial.annIdeal /-
/-- `ann_ideal R a` is the *annihilating ideal* of all `p : R[X]` such that `p(a) = 0`.
The informal notation `p(a)` stand for `polynomial.aeval a p`.
@@ -56,9 +57,16 @@ The formal definition uses the kernel of the aeval map. -/
noncomputable def annIdeal (a : A) : Ideal R[X] :=
((aeval a).toRingHom : R[X] β+* A).ker
#align polynomial.ann_ideal Polynomial.annIdeal
+-/
variable {R}
+/- warning: polynomial.mem_ann_ideal_iff_aeval_eq_zero -> Polynomial.mem_annIdeal_iff_aeval_eq_zero is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} {A : Type.{u2}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : Semiring.{u2} A] [_inst_3 : Algebra.{u1, u2} R A _inst_1 _inst_2] {a : A} {p : Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)}, Iff (Membership.Mem.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Ideal.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (SetLike.hasMem.{u1, u1} (Ideal.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Submodule.setLike.{u1, u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (Semiring.toModule.{u1} (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) p (Polynomial.annIdeal.{u1, u2} R A _inst_1 _inst_2 _inst_3 a)) (Eq.{succ u2} A (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (AlgHom.{u1, u1, u2} R (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) A _inst_1 (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) _inst_2 (Polynomial.algebraOfAlgebra.{u1, u1} R R _inst_1 (CommSemiring.toSemiring.{u1} R _inst_1) (Algebra.id.{u1} R _inst_1)) _inst_3) (fun (_x : AlgHom.{u1, u1, u2} R (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) A _inst_1 (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) _inst_2 (Polynomial.algebraOfAlgebra.{u1, u1} R R _inst_1 (CommSemiring.toSemiring.{u1} R _inst_1) (Algebra.id.{u1} R _inst_1)) _inst_3) => (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) -> A) ([anonymous].{u1, u1, u2} R (Polynomial.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) A _inst_1 (Polynomial.semiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) _inst_2 (Polynomial.algebraOfAlgebra.{u1, u1} R R _inst_1 (CommSemiring.toSemiring.{u1} R _inst_1) (Algebra.id.{u1} R _inst_1)) _inst_3) (Polynomial.aeval.{u1, u2} R A _inst_1 _inst_2 _inst_3 a) p) (OfNat.ofNat.{u2} A 0 (OfNat.mk.{u2} A 0 (Zero.zero.{u2} A (MulZeroClass.toHasZero.{u2} A (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2))))))))
+but is expected to have type
+ forall {R : Type.{u2}} {A : Type.{u1}} [_inst_1 : CommSemiring.{u2} R] [_inst_2 : Semiring.{u1} A] [_inst_3 : Algebra.{u2, u1} R A _inst_1 _inst_2] {a : A} {p : Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)}, Iff (Membership.mem.{u2, u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Ideal.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (SetLike.instMembership.{u2, u2} (Ideal.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Submodule.setLike.{u2, u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))))) (Semiring.toModule.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))))) p (Polynomial.annIdeal.{u2, u1} R A _inst_1 _inst_2 _inst_3 a)) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) => A) p) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (AlgHom.{u2, u2, u1} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) A _inst_1 (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) _inst_2 (Polynomial.algebraOfAlgebra.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1)) _inst_3) (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (fun (_x : Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) => A) _x) (SMulHomClass.toFunLike.{max u1 u2, u2, u2, u1} (AlgHom.{u2, u2, u1} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) A _inst_1 (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) _inst_2 (Polynomial.algebraOfAlgebra.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1)) _inst_3) R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) A (SMulZeroClass.toSMul.{u2, u2} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (AddMonoid.toZero.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (AddCommMonoid.toAddMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))))))) (DistribSMul.toSMulZeroClass.{u2, u2} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (AddMonoid.toAddZeroClass.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (AddCommMonoid.toAddMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))))))) (DistribMulAction.toDistribSMul.{u2, u2} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))))) (Module.toDistribMulAction.{u2, u2} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))))) (Algebra.toModule.{u2, u2} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) _inst_1 (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.algebraOfAlgebra.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1))))))) (SMulZeroClass.toSMul.{u2, u1} R A (AddMonoid.toZero.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u2, u1} R A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribMulAction.toDistribSMul.{u2, u1} R A (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u2, u1} R A (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u2, u1} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max u1 u2, u2, u2, u1} (AlgHom.{u2, u2, u1} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) A _inst_1 (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) _inst_2 (Polynomial.algebraOfAlgebra.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1)) _inst_3) R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) A (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u2, u2} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))))) (Algebra.toModule.{u2, u2} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) _inst_1 (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.algebraOfAlgebra.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1)))) (Module.toDistribMulAction.{u2, u1} R A (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u2, u1} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max u1 u2, u2, u2, u1} (AlgHom.{u2, u2, u1} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) A _inst_1 (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) _inst_2 (Polynomial.algebraOfAlgebra.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1)) _inst_3) R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) A (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)) (Module.toDistribMulAction.{u2, u2} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))))) (Algebra.toModule.{u2, u2} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) _inst_1 (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Polynomial.algebraOfAlgebra.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1)))) (Module.toDistribMulAction.{u2, u1} R A (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u2, u1} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u2, u2, u1, max u1 u2} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) A _inst_1 (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) _inst_2 (Polynomial.algebraOfAlgebra.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1)) _inst_3 (AlgHom.{u2, u2, u1} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) A _inst_1 (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) _inst_2 (Polynomial.algebraOfAlgebra.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1)) _inst_3) (AlgHom.algHomClass.{u2, u2, u1} R (Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) A _inst_1 (Polynomial.semiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) _inst_2 (Polynomial.algebraOfAlgebra.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1)) _inst_3))))) (Polynomial.aeval.{u2, u1} R A _inst_1 _inst_2 _inst_3 a) p) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) => A) p) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) => A) p) (MonoidWithZero.toZero.{u1} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) => A) p) (Semiring.toMonoidWithZero.{u1} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : Polynomial.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) => A) p) _inst_2)))))
+Case conversion may be inaccurate. Consider using '#align polynomial.mem_ann_ideal_iff_aeval_eq_zero Polynomial.mem_annIdeal_iff_aeval_eq_zeroβ'. -/
/-- It is useful to refer to ideal membership sometimes
and the annihilation condition other times. -/
theorem mem_annIdeal_iff_aeval_eq_zero {a : A} {p : R[X]} : p β annIdeal R a β aeval a p = 0 :=
@@ -75,6 +83,7 @@ variable (π)
open Submodule
+#print Polynomial.annIdealGenerator /-
/-- `ann_ideal_generator π a` is the monic generator of `ann_ideal π a`
if one exists, otherwise `0`.
@@ -85,11 +94,18 @@ noncomputable def annIdealGenerator (a : A) : π[X] :=
let g := IsPrincipal.generator <| annIdeal π a
g * C g.leadingCoeffβ»ΒΉ
#align polynomial.ann_ideal_generator Polynomial.annIdealGenerator
+-/
section
variable {π}
+/- warning: polynomial.ann_ideal_generator_eq_zero_iff -> Polynomial.annIdealGenerator_eq_zero_iff is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} {A : Type.{u2}} [_inst_1 : Field.{u1} π] [_inst_2 : Ring.{u2} A] [_inst_3 : Algebra.{u1, u2} π A (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)) (Ring.toSemiring.{u2} A _inst_2)] {a : A}, Iff (Eq.{succ u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (Polynomial.annIdealGenerator.{u1, u2} π A _inst_1 _inst_2 _inst_3 a) (OfNat.ofNat.{u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) 0 (OfNat.mk.{u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) 0 (Zero.zero.{u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (Polynomial.zero.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))))))) (Eq.{succ u1} (Ideal.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))) (Polynomial.annIdeal.{u1, u2} π A (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)) (Ring.toSemiring.{u2} A _inst_2) _inst_3 a) (Bot.bot.{u1} (Ideal.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))) (Submodule.hasBot.{u1, u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))))) (Semiring.toModule.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))))))
+but is expected to have type
+ forall {π : Type.{u2}} {A : Type.{u1}} [_inst_1 : Field.{u2} π] [_inst_2 : Ring.{u1} A] [_inst_3 : Algebra.{u2, u1} π A (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)) (Ring.toSemiring.{u1} A _inst_2)] {a : A}, Iff (Eq.{succ u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.annIdealGenerator.{u2, u1} π A _inst_1 _inst_2 _inst_3 a) (OfNat.ofNat.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) 0 (Zero.toOfNat0.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.zero.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))))) (Eq.{succ u2} (Ideal.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))) (Polynomial.annIdeal.{u2, u1} π A (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)) (Ring.toSemiring.{u1} A _inst_2) _inst_3 a) (Bot.bot.{u2} (Ideal.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))) (Submodule.instBotSubmodule.{u2, u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))))) (Semiring.toModule.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))))))
+Case conversion may be inaccurate. Consider using '#align polynomial.ann_ideal_generator_eq_zero_iff Polynomial.annIdealGenerator_eq_zero_iffβ'. -/
@[simp]
theorem annIdealGenerator_eq_zero_iff {a : A} : annIdealGenerator π a = 0 β annIdeal π a = β₯ := by
simp only [ann_ideal_generator, mul_eq_zero, is_principal.eq_bot_iff_generator_eq_zero,
@@ -98,6 +114,12 @@ theorem annIdealGenerator_eq_zero_iff {a : A} : annIdealGenerator π a = 0 β
end
+/- warning: polynomial.span_singleton_ann_ideal_generator -> Polynomial.span_singleton_annIdealGenerator is a dubious translation:
+lean 3 declaration is
+ forall (π : Type.{u1}) {A : Type.{u2}} [_inst_1 : Field.{u1} π] [_inst_2 : Ring.{u2} A] [_inst_3 : Algebra.{u1, u2} π A (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)) (Ring.toSemiring.{u2} A _inst_2)] (a : A), Eq.{succ u1} (Ideal.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))) (Ideal.span.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Singleton.singleton.{u1, u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (Set.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))) (Set.hasSingleton.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))) (Polynomial.annIdealGenerator.{u1, u2} π A _inst_1 _inst_2 _inst_3 a))) (Polynomial.annIdeal.{u1, u2} π A (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)) (Ring.toSemiring.{u2} A _inst_2) _inst_3 a)
+but is expected to have type
+ forall (π : Type.{u2}) {A : Type.{u1}} [_inst_1 : Field.{u2} π] [_inst_2 : Ring.{u1} A] [_inst_3 : Algebra.{u2, u1} π A (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)) (Ring.toSemiring.{u1} A _inst_2)] (a : A), Eq.{succ u2} (Ideal.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))) (Ideal.span.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Singleton.singleton.{u2, u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Set.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))) (Set.instSingletonSet.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))) (Polynomial.annIdealGenerator.{u2, u1} π A _inst_1 _inst_2 _inst_3 a))) (Polynomial.annIdeal.{u2, u1} π A (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)) (Ring.toSemiring.{u1} A _inst_2) _inst_3 a)
+Case conversion may be inaccurate. Consider using '#align polynomial.span_singleton_ann_ideal_generator Polynomial.span_singleton_annIdealGeneratorβ'. -/
/-- `ann_ideal_generator π a` is indeed a generator. -/
@[simp]
theorem span_singleton_annIdealGenerator (a : A) :
@@ -113,16 +135,34 @@ theorem span_singleton_annIdealGenerator (a : A) :
apply (mul_ne_zero_iff.mp h).1
#align polynomial.span_singleton_ann_ideal_generator Polynomial.span_singleton_annIdealGenerator
+/- warning: polynomial.ann_ideal_generator_mem -> Polynomial.annIdealGenerator_mem is a dubious translation:
+lean 3 declaration is
+ forall (π : Type.{u1}) {A : Type.{u2}} [_inst_1 : Field.{u1} π] [_inst_2 : Ring.{u2} A] [_inst_3 : Algebra.{u1, u2} π A (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)) (Ring.toSemiring.{u2} A _inst_2)] (a : A), Membership.Mem.{u1, u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (Ideal.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))) (SetLike.hasMem.{u1, u1} (Ideal.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))) (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Submodule.setLike.{u1, u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))))) (Semiring.toModule.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))))) (Polynomial.annIdealGenerator.{u1, u2} π A _inst_1 _inst_2 _inst_3 a) (Polynomial.annIdeal.{u1, u2} π A (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)) (Ring.toSemiring.{u2} A _inst_2) _inst_3 a)
+but is expected to have type
+ forall (π : Type.{u2}) {A : Type.{u1}} [_inst_1 : Field.{u2} π] [_inst_2 : Ring.{u1} A] [_inst_3 : Algebra.{u2, u1} π A (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)) (Ring.toSemiring.{u1} A _inst_2)] (a : A), Membership.mem.{u2, u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Ideal.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))) (SetLike.instMembership.{u2, u2} (Ideal.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))) (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Submodule.setLike.{u2, u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))))) (Semiring.toModule.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))))) (Polynomial.annIdealGenerator.{u2, u1} π A _inst_1 _inst_2 _inst_3 a) (Polynomial.annIdeal.{u2, u1} π A (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)) (Ring.toSemiring.{u1} A _inst_2) _inst_3 a)
+Case conversion may be inaccurate. Consider using '#align polynomial.ann_ideal_generator_mem Polynomial.annIdealGenerator_memβ'. -/
/-- The annihilating ideal generator is a member of the annihilating ideal. -/
theorem annIdealGenerator_mem (a : A) : annIdealGenerator π a β annIdeal π a :=
Ideal.mul_mem_right _ _ (Submodule.IsPrincipal.generator_mem _)
#align polynomial.ann_ideal_generator_mem Polynomial.annIdealGenerator_mem
+/- warning: polynomial.mem_iff_eq_smul_ann_ideal_generator -> Polynomial.mem_iff_eq_smul_annIdealGenerator is a dubious translation:
+lean 3 declaration is
+ forall (π : Type.{u1}) {A : Type.{u2}} [_inst_1 : Field.{u1} π] [_inst_2 : Ring.{u2} A] [_inst_3 : Algebra.{u1, u2} π A (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)) (Ring.toSemiring.{u2} A _inst_2)] {p : Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))} (a : A), Iff (Membership.Mem.{u1, u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (Ideal.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))) (SetLike.hasMem.{u1, u1} (Ideal.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))) (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Submodule.setLike.{u1, u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))))) (Semiring.toModule.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))))) p (Polynomial.annIdeal.{u1, u2} π A (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)) (Ring.toSemiring.{u2} A _inst_2) _inst_3 a)) (Exists.{succ u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (fun (s : Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) => Eq.{succ u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) p (SMul.smul.{u1, u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (Mul.toSMul.{u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (Polynomial.mul'.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1))))) s (Polynomial.annIdealGenerator.{u1, u2} π A _inst_1 _inst_2 _inst_3 a))))
+but is expected to have type
+ forall (π : Type.{u2}) {A : Type.{u1}} [_inst_1 : Field.{u2} π] [_inst_2 : Ring.{u1} A] [_inst_3 : Algebra.{u2, u1} π A (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)) (Ring.toSemiring.{u1} A _inst_2)] {p : Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))} (a : A), Iff (Membership.mem.{u2, u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Ideal.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))) (SetLike.instMembership.{u2, u2} (Ideal.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))) (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Submodule.setLike.{u2, u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))))) (Semiring.toModule.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))))) p (Polynomial.annIdeal.{u2, u1} π A (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)) (Ring.toSemiring.{u1} A _inst_2) _inst_3 a)) (Exists.{succ u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (fun (s : Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) => Eq.{succ u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) p (HSMul.hSMul.{u2, u2, u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (instHSMul.{u2, u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Algebra.toSMul.{u2, u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.commSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))) (Polynomial.semiring.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Algebra.id.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.commSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))))) s (Polynomial.annIdealGenerator.{u2, u1} π A _inst_1 _inst_2 _inst_3 a))))
+Case conversion may be inaccurate. Consider using '#align polynomial.mem_iff_eq_smul_ann_ideal_generator Polynomial.mem_iff_eq_smul_annIdealGeneratorβ'. -/
theorem mem_iff_eq_smul_annIdealGenerator {p : π[X]} (a : A) :
p β annIdeal π a β β s : π[X], p = s β’ annIdealGenerator π a := by
simp_rw [@eq_comm _ p, β mem_span_singleton, β span_singleton_ann_ideal_generator π a, Ideal.span]
#align polynomial.mem_iff_eq_smul_ann_ideal_generator Polynomial.mem_iff_eq_smul_annIdealGenerator
+/- warning: polynomial.monic_ann_ideal_generator -> Polynomial.monic_annIdealGenerator is a dubious translation:
+lean 3 declaration is
+ forall (π : Type.{u1}) {A : Type.{u2}} [_inst_1 : Field.{u1} π] [_inst_2 : Ring.{u2} A] [_inst_3 : Algebra.{u1, u2} π A (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)) (Ring.toSemiring.{u2} A _inst_2)] (a : A), (Ne.{succ u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (Polynomial.annIdealGenerator.{u1, u2} π A _inst_1 _inst_2 _inst_3 a) (OfNat.ofNat.{u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) 0 (OfNat.mk.{u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) 0 (Zero.zero.{u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (Polynomial.zero.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))))))) -> (Polynomial.Monic.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1))) (Polynomial.annIdealGenerator.{u1, u2} π A _inst_1 _inst_2 _inst_3 a))
+but is expected to have type
+ forall (π : Type.{u2}) {A : Type.{u1}} [_inst_1 : Field.{u2} π] [_inst_2 : Ring.{u1} A] [_inst_3 : Algebra.{u2, u1} π A (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)) (Ring.toSemiring.{u1} A _inst_2)] (a : A), (Ne.{succ u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.annIdealGenerator.{u2, u1} π A _inst_1 _inst_2 _inst_3 a) (OfNat.ofNat.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) 0 (Zero.toOfNat0.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.zero.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))))) -> (Polynomial.Monic.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))) (Polynomial.annIdealGenerator.{u2, u1} π A _inst_1 _inst_2 _inst_3 a))
+Case conversion may be inaccurate. Consider using '#align polynomial.monic_ann_ideal_generator Polynomial.monic_annIdealGeneratorβ'. -/
/-- The generator we chose for the annihilating ideal is monic when the ideal is non-zero. -/
theorem monic_annIdealGenerator (a : A) (hg : annIdealGenerator π a β 0) :
Monic (annIdealGenerator π a) :=
@@ -136,17 +176,31 @@ theorem of the minimal polynomial.
This is the first condition: it must annihilate the original element `a : A`. -/
+#print Polynomial.annIdealGenerator_aeval_eq_zero /-
theorem annIdealGenerator_aeval_eq_zero (a : A) : aeval a (annIdealGenerator π a) = 0 :=
mem_annIdeal_iff_aeval_eq_zero.mp (annIdealGenerator_mem π a)
#align polynomial.ann_ideal_generator_aeval_eq_zero Polynomial.annIdealGenerator_aeval_eq_zero
+-/
variable {π}
+/- warning: polynomial.mem_iff_ann_ideal_generator_dvd -> Polynomial.mem_iff_annIdealGenerator_dvd is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} {A : Type.{u2}} [_inst_1 : Field.{u1} π] [_inst_2 : Ring.{u2} A] [_inst_3 : Algebra.{u1, u2} π A (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)) (Ring.toSemiring.{u2} A _inst_2)] {p : Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))} {a : A}, Iff (Membership.Mem.{u1, u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (Ideal.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))) (SetLike.hasMem.{u1, u1} (Ideal.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))) (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Submodule.setLike.{u1, u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))))) (Semiring.toModule.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))))) p (Polynomial.annIdeal.{u1, u2} π A (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)) (Ring.toSemiring.{u2} A _inst_2) _inst_3 a)) (Dvd.Dvd.{u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (semigroupDvd.{u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (SemigroupWithZero.toSemigroup.{u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (NonUnitalSemiring.toSemigroupWithZero.{u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (NonUnitalRing.toNonUnitalSemiring.{u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (NonUnitalCommRing.toNonUnitalRing.{u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (CommRing.toNonUnitalCommRing.{u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (Polynomial.commRing.{u1} π (EuclideanDomain.toCommRing.{u1} π (Field.toEuclideanDomain.{u1} π _inst_1))))))))) (Polynomial.annIdealGenerator.{u1, u2} π A _inst_1 _inst_2 _inst_3 a) p)
+but is expected to have type
+ forall {π : Type.{u2}} {A : Type.{u1}} [_inst_1 : Field.{u2} π] [_inst_2 : Ring.{u1} A] [_inst_3 : Algebra.{u2, u1} π A (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)) (Ring.toSemiring.{u1} A _inst_2)] {p : Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))} {a : A}, Iff (Membership.mem.{u2, u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Ideal.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))) (SetLike.instMembership.{u2, u2} (Ideal.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))) (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Submodule.setLike.{u2, u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))))) (Semiring.toModule.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))))) p (Polynomial.annIdeal.{u2, u1} π A (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)) (Ring.toSemiring.{u1} A _inst_2) _inst_3 a)) (Dvd.dvd.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (semigroupDvd.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (SemigroupWithZero.toSemigroup.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (NonUnitalSemiring.toSemigroupWithZero.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (NonUnitalCommSemiring.toNonUnitalSemiring.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (NonUnitalCommRing.toNonUnitalCommSemiring.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (CommRing.toNonUnitalCommRing.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.commRing.{u2} π (EuclideanDomain.toCommRing.{u2} π (Field.toEuclideanDomain.{u2} π _inst_1))))))))) (Polynomial.annIdealGenerator.{u2, u1} π A _inst_1 _inst_2 _inst_3 a) p)
+Case conversion may be inaccurate. Consider using '#align polynomial.mem_iff_ann_ideal_generator_dvd Polynomial.mem_iff_annIdealGenerator_dvdβ'. -/
theorem mem_iff_annIdealGenerator_dvd {p : π[X]} {a : A} :
p β annIdeal π a β annIdealGenerator π a β£ p := by
rw [β Ideal.mem_span_singleton, span_singleton_ann_ideal_generator]
#align polynomial.mem_iff_ann_ideal_generator_dvd Polynomial.mem_iff_annIdealGenerator_dvd
+/- warning: polynomial.degree_ann_ideal_generator_le_of_mem -> Polynomial.degree_annIdealGenerator_le_of_mem is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} {A : Type.{u2}} [_inst_1 : Field.{u1} π] [_inst_2 : Ring.{u2} A] [_inst_3 : Algebra.{u1, u2} π A (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)) (Ring.toSemiring.{u2} A _inst_2)] (a : A) (p : Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))), (Membership.Mem.{u1, u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (Ideal.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))) (SetLike.hasMem.{u1, u1} (Ideal.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))) (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Submodule.setLike.{u1, u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))))) (Semiring.toModule.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))))) p (Polynomial.annIdeal.{u1, u2} π A (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)) (Ring.toSemiring.{u2} A _inst_2) _inst_3 a)) -> (Ne.{succ u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) p (OfNat.ofNat.{u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) 0 (OfNat.mk.{u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) 0 (Zero.zero.{u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (Polynomial.zero.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))))))) -> (LE.le.{0} (WithBot.{0} Nat) (Preorder.toHasLe.{0} (WithBot.{0} Nat) (WithBot.preorder.{0} Nat (PartialOrder.toPreorder.{0} Nat (OrderedCancelAddCommMonoid.toPartialOrder.{0} Nat (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} Nat Nat.strictOrderedSemiring))))) (Polynomial.degree.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1))) (Polynomial.annIdealGenerator.{u1, u2} π A _inst_1 _inst_2 _inst_3 a)) (Polynomial.degree.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1))) p))
+but is expected to have type
+ forall {π : Type.{u2}} {A : Type.{u1}} [_inst_1 : Field.{u2} π] [_inst_2 : Ring.{u1} A] [_inst_3 : Algebra.{u2, u1} π A (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)) (Ring.toSemiring.{u1} A _inst_2)] (a : A) (p : Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))), (Membership.mem.{u2, u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Ideal.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))) (SetLike.instMembership.{u2, u2} (Ideal.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))) (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Submodule.setLike.{u2, u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Semiring.toNonAssocSemiring.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))))) (Semiring.toModule.{u2} (Polynomial.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (CommSemiring.toSemiring.{u2} π (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))))) p (Polynomial.annIdeal.{u2, u1} π A (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)) (Ring.toSemiring.{u1} A _inst_2) _inst_3 a)) -> (Ne.{succ u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) p (OfNat.ofNat.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) 0 (Zero.toOfNat0.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.zero.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))))) -> (LE.le.{0} (WithBot.{0} Nat) (Preorder.toLE.{0} (WithBot.{0} Nat) (WithBot.preorder.{0} Nat (PartialOrder.toPreorder.{0} Nat (StrictOrderedSemiring.toPartialOrder.{0} Nat Nat.strictOrderedSemiring)))) (Polynomial.degree.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))) (Polynomial.annIdealGenerator.{u2, u1} π A _inst_1 _inst_2 _inst_3 a)) (Polynomial.degree.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))) p))
+Case conversion may be inaccurate. Consider using '#align polynomial.degree_ann_ideal_generator_le_of_mem Polynomial.degree_annIdealGenerator_le_of_memβ'. -/
/-- The generator of the annihilating ideal has minimal degree among
the non-zero members of the annihilating ideal -/
theorem degree_annIdealGenerator_le_of_mem (a : A) (p : π[X]) (hp : p β annIdeal π a)
@@ -156,6 +210,12 @@ theorem degree_annIdealGenerator_le_of_mem (a : A) (p : π[X]) (hp : p β ann
variable (π)
+/- warning: polynomial.ann_ideal_generator_eq_minpoly -> Polynomial.annIdealGenerator_eq_minpoly is a dubious translation:
+lean 3 declaration is
+ forall (π : Type.{u1}) {A : Type.{u2}} [_inst_1 : Field.{u1} π] [_inst_2 : Ring.{u2} A] [_inst_3 : Algebra.{u1, u2} π A (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)) (Ring.toSemiring.{u2} A _inst_2)] (a : A), Eq.{succ u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (Polynomial.annIdealGenerator.{u1, u2} π A _inst_1 _inst_2 _inst_3 a) (minpoly.{u1, u2} π A (EuclideanDomain.toCommRing.{u1} π (Field.toEuclideanDomain.{u1} π _inst_1)) _inst_2 _inst_3 a)
+but is expected to have type
+ forall (π : Type.{u2}) {A : Type.{u1}} [_inst_1 : Field.{u2} π] [_inst_2 : Ring.{u1} A] [_inst_3 : Algebra.{u2, u1} π A (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)) (Ring.toSemiring.{u1} A _inst_2)] (a : A), Eq.{succ u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.annIdealGenerator.{u2, u1} π A _inst_1 _inst_2 _inst_3 a) (minpoly.{u2, u1} π A (EuclideanDomain.toCommRing.{u2} π (Field.toEuclideanDomain.{u2} π _inst_1)) _inst_2 _inst_3 a)
+Case conversion may be inaccurate. Consider using '#align polynomial.ann_ideal_generator_eq_minpoly Polynomial.annIdealGenerator_eq_minpolyβ'. -/
/-- The generator of the annihilating ideal is the minimal polynomial. -/
theorem annIdealGenerator_eq_minpoly (a : A) : annIdealGenerator π a = minpoly π a :=
by
@@ -172,6 +232,12 @@ theorem annIdealGenerator_eq_minpoly (a : A) : annIdealGenerator π a = minpol
q_monic.NeZero
#align polynomial.ann_ideal_generator_eq_minpoly Polynomial.annIdealGenerator_eq_minpoly
+/- warning: polynomial.monic_generator_eq_minpoly -> Polynomial.monic_generator_eq_minpoly is a dubious translation:
+lean 3 declaration is
+ forall (π : Type.{u1}) {A : Type.{u2}} [_inst_1 : Field.{u1} π] [_inst_2 : Ring.{u2} A] [_inst_3 : Algebra.{u1, u2} π A (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)) (Ring.toSemiring.{u2} A _inst_2)] (a : A) (p : Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))), (Polynomial.Monic.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1))) p) -> (Eq.{succ u1} (Ideal.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))) (Ideal.span.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Polynomial.semiring.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)))) (Singleton.singleton.{u1, u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (Set.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))) (Set.hasSingleton.{u1} (Polynomial.{u1} π (CommSemiring.toSemiring.{u1} π (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1))))) p)) (Polynomial.annIdeal.{u1, u2} π A (Semifield.toCommSemiring.{u1} π (Field.toSemifield.{u1} π _inst_1)) (Ring.toSemiring.{u2} A _inst_2) _inst_3 a)) -> (Eq.{succ u1} (Polynomial.{u1} π (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π _inst_1)))) (Polynomial.annIdealGenerator.{u1, u2} π A _inst_1 _inst_2 _inst_3 a) p)
+but is expected to have type
+ forall (π : Type.{u2}) {A : Type.{u1}} [_inst_1 : Field.{u2} π] [_inst_2 : Ring.{u1} A] [_inst_3 : Algebra.{u2, u1} π A (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)) (Ring.toSemiring.{u1} A _inst_2)] (a : A) (p : Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))), (Polynomial.Monic.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))) p) -> (Eq.{succ u2} (Ideal.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))) (Ideal.span.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.semiring.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Singleton.singleton.{u2, u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Set.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))) (Set.instSingletonSet.{u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1))))) p)) (Polynomial.annIdeal.{u2, u1} π A (Semifield.toCommSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)) (Ring.toSemiring.{u1} A _inst_2) _inst_3 a)) -> (Eq.{succ u2} (Polynomial.{u2} π (DivisionSemiring.toSemiring.{u2} π (Semifield.toDivisionSemiring.{u2} π (Field.toSemifield.{u2} π _inst_1)))) (Polynomial.annIdealGenerator.{u2, u1} π A _inst_1 _inst_2 _inst_3 a) p)
+Case conversion may be inaccurate. Consider using '#align polynomial.monic_generator_eq_minpoly Polynomial.monic_generator_eq_minpolyβ'. -/
/-- If a monic generates the annihilating ideal, it must match our choice
of the annihilating ideal generator. -/
theorem monic_generator_eq_minpoly (a : A) (p : π[X]) (p_monic : p.Monic)
mathlib commit https://github.com/leanprover-community/mathlib/commit/38f16f960f5006c6c0c2bac7b0aba5273188f4e5
@@ -83,7 +83,7 @@ Since `π[X]` is a principal ideal domain there is a polynomial `g` such that
We prefer the monic generator of the ideal. -/
noncomputable def annIdealGenerator (a : A) : π[X] :=
let g := IsPrincipal.generator <| annIdeal π a
- g * c g.leadingCoeffβ»ΒΉ
+ g * C g.leadingCoeffβ»ΒΉ
#align polynomial.ann_ideal_generator Polynomial.annIdealGenerator
section
@@ -93,7 +93,7 @@ variable {π}
@[simp]
theorem annIdealGenerator_eq_zero_iff {a : A} : annIdealGenerator π a = 0 β annIdeal π a = β₯ := by
simp only [ann_ideal_generator, mul_eq_zero, is_principal.eq_bot_iff_generator_eq_zero,
- Polynomial.c_eq_zero, inv_eq_zero, Polynomial.leadingCoeff_eq_zero, or_self_iff]
+ Polynomial.C_eq_zero, inv_eq_zero, Polynomial.leadingCoeff_eq_zero, or_self_iff]
#align polynomial.ann_ideal_generator_eq_zero_iff Polynomial.annIdealGenerator_eq_zero_iff
end
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
Empty lines were removed by executing the following Python script twice
import os
import re
# Loop through each file in the repository
for dir_path, dirs, files in os.walk('.'):
for filename in files:
if filename.endswith('.lean'):
file_path = os.path.join(dir_path, filename)
# Open the file and read its contents
with open(file_path, 'r') as file:
content = file.read()
# Use a regular expression to replace sequences of "variable" lines separated by empty lines
# with sequences without empty lines
modified_content = re.sub(r'(variable.*\n)\n(variable(?! .* in))', r'\1\2', content)
# Write the modified content back to the file
with open(file_path, 'w') as file:
file.write(modified_content)
@@ -41,7 +41,6 @@ namespace Polynomial
section Semiring
variable {R A : Type*} [CommSemiring R] [Semiring A] [Algebra R A]
-
variable (R)
/-- `annIdeal R a` is the *annihilating ideal* of all `p : R[X]` such that `p(a) = 0`.
@@ -67,7 +66,6 @@ end Semiring
section Field
variable {π A : Type*} [Field π] [Ring A] [Algebra π A]
-
variable (π)
open Submodule
Prove isSemisimple_of_mem_adjoin
: if two commuting endomorphisms of a finite-dimensional vector space over a perfect field are both semisimple, then every endomorphism in the algebra generated by them (in particular their product and sum) is semisimple.
In the same file LinearAlgebra/Semisimple.lean, eq_zero_of_isNilpotent_isSemisimple
and isSemisimple_of_squarefree_aeval_eq_zero
are golfed, and IsSemisimple.minpoly_squarefree
is proved
RingTheory/SimpleModule.lean:
Define IsSemisimpleRing R
to mean that R is a semisimple R-module.
add properties of simple modules and a characterization (they are exactly the quotients of the ring by maximal left ideals).
The annihilator of a semisimple module is a radical ideal.
Any module over a semisimple ring is semisimple.
A finite product of semisimple rings is semisimple.
Any quotient of a semisimple ring is semisimple.
Add Artin--Wedderburn as a TODO (proof_wanted).
Order/Atoms.lean: add the instance from IsSimpleOrder
to ComplementedLattice
, so that IsSimpleModule β IsSemisimpleModule
is automatically inferred.
Prerequisites for showing a product of semisimple rings is semisimple:
Algebra/Module/Submodule/Map.lean: generalize orderIsoMapComap
so that it only requires RingHomSurjective
rather than RingHomInvPair
Algebra/Ring/CompTypeclasses.lean, Mathlib/Algebra/Ring/Pi.lean, Algebra/Ring/Prod.lean: add RingHomSurjective instances
RingTheory/Artinian.lean:
quotNilradicalEquivPi
: the quotient of a commutative Artinian ring R by its nilradical is isomorphic to the (finite) product of its quotients by maximal ideals (therefore a product of fields).
equivPi
: if the ring is moreover reduced, then the ring itself is a product of fields. Deduce that R is a semisimple ring and both R and R[X] are decomposition monoids. Requires RingEquiv.quotientBot
in RingTheory/Ideal/QuotientOperations.lean.
Data/Polynomial/Eval.lean: the polynomial ring over a finite product of rings is isomorphic to the product of polynomial rings over individual rings. (Used to show R[X] is a decomposition monoid.)
Other necessary results:
FieldTheory/Minpoly/Field.lean: the minimal polynomial of an element in a reduced algebra over a field is radical.
RingTheory/PowerBasis.lean: generalize PowerBasis.finiteDimensional
and rename it to .finite
.
Annihilator stuff, some of which do not end up being used:
RingTheory/Ideal/Operations.lean: define Module.annihilator
and redefine Submodule.annihilator
in terms of it; add lemmas, including one that says an arbitrary intersection of radical ideals is radical. The new lemma Ideal.isRadical_iff_pow_one_lt
depends on pow_imp_self_of_one_lt
in Mathlib/Data/Nat/Interval.lean, which is also used to golf the proof of isRadical_iff_pow_one_lt
.
Algebra/Module/Torsion.lean: add a lemma and an instance (unused)
Data/Polynomial/Module/Basic.lean: add a def (unused) and a lemma
LinearAlgebra/AnnihilatingPolynomial.lean: add lemma span_minpoly_eq_annihilator
Some results about idempotent linear maps (projections) and idempotent elements, used to show that any (left) ideal in a semisimple ring is spanned by an idempotent element (unused):
LinearAlgebra/Projection.lean: add def isIdempotentElemEquiv
LinearAlgebra/Span.lean: add two lemmas
Co-authored-by: Junyan Xu <junyanxu.math@gmail.com>
@@ -177,6 +177,11 @@ theorem monic_generator_eq_minpoly (a : A) (p : π[X]) (p_monic : p.Monic)
Β· apply monic_annIdealGenerator _ _ ((Associated.ne_zero_iff p_gen).mp h)
#align polynomial.monic_generator_eq_minpoly Polynomial.monic_generator_eq_minpoly
+theorem span_minpoly_eq_annihilator {M} [AddCommGroup M] [Module π M] (f : Module.End π M) :
+ Ideal.span {minpoly π f} = Module.annihilator π[X] (Module.AEval' f) := by
+ rw [β annIdealGenerator_eq_minpoly, span_singleton_annIdealGenerator]; ext
+ rw [mem_annIdeal_iff_aeval_eq_zero, DFunLike.ext_iff, Module.mem_annihilator]; rfl
+
end Field
end Polynomial
@@ -72,7 +72,6 @@ variable (π)
open Submodule
-set_option synthInstance.maxHeartbeats 35000 in
/-- `annIdealGenerator π a` is the monic generator of `annIdeal π a`
if one exists, otherwise `0`.
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -40,7 +40,7 @@ namespace Polynomial
section Semiring
-variable {R A : Type _} [CommSemiring R] [Semiring A] [Algebra R A]
+variable {R A : Type*} [CommSemiring R] [Semiring A] [Algebra R A]
variable (R)
@@ -66,7 +66,7 @@ end Semiring
section Field
-variable {π A : Type _} [Field π] [Ring A] [Algebra π A]
+variable {π A : Type*} [Field π] [Ring A] [Algebra π A]
variable (π)
@@ -2,15 +2,12 @@
Copyright (c) 2022 Justin Thomas. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Justin Thomas
-
-! This file was ported from Lean 3 source module linear_algebra.annihilating_polynomial
-! leanprover-community/mathlib commit d3e8e0a0237c10c2627bf52c246b15ff8e7df4c0
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.FieldTheory.Minpoly.Field
import Mathlib.RingTheory.PrincipalIdealDomain
+#align_import linear_algebra.annihilating_polynomial from "leanprover-community/mathlib"@"d3e8e0a0237c10c2627bf52c246b15ff8e7df4c0"
+
/-!
# Annihilating Ideal
The unported dependencies are