Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Prove Mbar_eval_eq_zero, update blueprint #156

Merged
merged 1 commit into from
Oct 3, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 31 additions & 5 deletions FLT/MathlibExperiments/FrobeniusRiou.lean
Original file line number Diff line number Diff line change
Expand Up @@ -450,9 +450,31 @@ theorem Ideal.Quotient.eq_zero_iff_mem' (x : A) :

section B_mod_Q_over_A_mod_P_stuff

section Mathlib.RingTheory.Ideal.Quotient

namespace Ideal

variable {R : Type*} [CommRing R] {I : Ideal R}

protected noncomputable
def Quotient.out (x : R ⧸ I) :=
Quotient.out' x

theorem Quotient.out_eq (x : R ⧸ I) : Ideal.Quotient.mk I (Ideal.Quotient.out x) = x := by
simp only [Ideal.Quotient.out, Ideal.Quotient.mk, RingHom.coe_mk, MonoidHom.coe_mk, OneHom.coe_mk,
Submodule.Quotient.mk, Quotient.out_eq']

@[elab_as_elim]
protected theorem Quotient.induction_on
{p : R ⧸ I → Prop} (x : R ⧸ I) (h : ∀ a, p (Ideal.Quotient.mk I a)) : p x :=
Quotient.inductionOn x h

end Ideal

end Mathlib.RingTheory.Ideal.Quotient

namespace MulSemiringAction.CharacteristicPolynomial

example : Function.Surjective (Ideal.Quotient.mk Q) := Ideal.Quotient.mk_surjective

open Polynomial
/-
Expand All @@ -466,8 +488,7 @@ variable {Q} in
noncomputable def Mbar
(hFull' : ∀ (b : B), (∀ (g : G), g • b = b) → ∃ a : A, b = a)
(bbar : B ⧸ Q) : (A ⧸ P)[X] :=
Polynomial.map (Ideal.Quotient.mk P) <| M hFull' <|
(Ideal.Quotient.mk_surjective bbar).choose
Polynomial.map (Ideal.Quotient.mk P) <| M hFull' <| Ideal.Quotient.out bbar

variable (hFull' : ∀ (b : B), (∀ (g : G), g • b = b) → ∃ a : A, b = a)

Expand All @@ -486,8 +507,13 @@ theorem Mbar_deg [Nontrivial A] [Nontrivial B] (bbar : B ⧸ Q) :
· rw [(M_monic hFull' _).leadingCoeff]
simp only [map_one, ne_eq, one_ne_zero, not_false_eq_true]

theorem Mbar_eval_eq_zero (bbar : B ⧸ Q) : eval₂ (algebraMap (A ⧸ P) (B ⧸ Q)) bbar (Mbar P hFull' bbar) = 0 := by
sorry
omit [SMulCommClass G A B] [Q.IsPrime] [P.IsPrime] in
theorem Mbar_eval_eq_zero [Nontrivial A] [Nontrivial B] (bbar : B ⧸ Q) :
eval₂ (algebraMap (A ⧸ P) (B ⧸ Q)) bbar (Mbar P hFull' bbar) = 0 := by
have h := congr_arg (algebraMap B (B ⧸ Q)) (M_eval_eq_zero hFull' (Ideal.Quotient.out bbar))
rw [map_zero, hom_eval₂, Ideal.Quotient.algebraMap_eq, Ideal.Quotient.out_eq] at h
simpa [Mbar, eval₂_map, ← Ideal.Quotient.algebraMap_eq,
← IsScalarTower.algebraMap_eq A (A ⧸ P) (B ⧸ Q), IsScalarTower.algebraMap_eq A B (B ⧸ Q)]

end CharacteristicPolynomial

Expand Down
59 changes: 43 additions & 16 deletions blueprint/src/chapter/FrobeniusProject.tex
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,9 @@ \section{The extension $B/A$.}
\leanok
If $B$ is nontrivial then $F_b$ is monic.
\end{lemma}
\begin{proof} Obvious.
\begin{proof}
\leanok
Obvious.
\end{proof}

It's also clear that $F_b$ has degree $|G|$ and has $b$ as a root.
Expand All @@ -157,6 +159,7 @@ \section{The extension $B/A$.}
\begin{definition}
\lean{MulSemiringAction.CharacteristicPolynomial.M}
\label{MulSemiringAction.CharacteristicPolynomial.M}
\uses{MulSemiringAction.CharacteristicPolynomial.F}
\leanok
$M_b$ is any monic degree $|G|$ polynomial in $A[X]$ whose
image in $B[X]$ is $F_b$.
Expand All @@ -166,9 +169,12 @@ \section{The extension $B/A$.}
\label{MulSemiringAction.CharacteristicPolynomial.M_eval_eq_zero}
\lean{MulSemiringAction.CharacteristicPolynomial.M_eval_eq_zero}
\uses{MulSemiringAction.CharacteristicPolynomial.M}
\leanok
$M_b$ has $b$ as a root.
\end{lemma}
\begin{proof} Follows from the fact that $F_b$ has $b$ as a root.
\begin{proof}
\leanok
Follows from the fact that $F_b$ has $b$ as a root.
\end{proof}
\begin{lemma}
\label{MulSemiringAction.CharacteristicPolynomial.M_deg}
Expand All @@ -178,6 +184,7 @@ \section{The extension $B/A$.}
$M_b$ has degree $n$.
\end{lemma}
\begin{proof}
\uses{MulSemiringAction.CharacteristicPolynomial.F_degree}
\leanok
Exercise.
\end{proof}
Expand All @@ -196,11 +203,14 @@ \section{The extension $B/A$.}
\begin{theorem}
\lean{MulSemiringAction.CharacteristicPolynomial.isIntegral}
\label{MulSemiringAction.CharacteristicPolynomial.isIntegral}
\uses{MulSemiringAction.CharacteristicPolynomial.M,
MulSemiringAction.CharacteristicPolynomial.M_monic}
\uses{MulSemiringAction.CharacteristicPolynomial.M}
\leanok
$B/A$ is integral.
\end{theorem}
\begin{proof} Use $M_b$.
\begin{proof}
\uses{MulSemiringAction.CharacteristicPolynomial.M_monic}
\leanok
Use $M_b$.
\end{proof}

\section{The extension $(B/Q)/(A/P)$.}
Expand All @@ -223,38 +233,53 @@ \section{The extension $(B/Q)/(A/P)$.}
\begin{theorem}
\lean{MulSemiringAction.CharacteristicPolynomial.Mbar_deg}
\label{MulSemiringAction.CharacteristicPolynomial.Mbar_deg}
\uses{MulSemiringAction.CharacteristicPolynomial.M}
\uses{MulSemiringAction.CharacteristicPolynomial.Mbar}
\leanok
$\overline{M}_{\overline{b}}$ has degree $|G|$.
\end{theorem}
\begin{proof} Exercise.
\begin{proof}
\uses{MulSemiringAction.CharacteristicPolynomial.M_deg,
MulSemiringAction.CharacteristicPolynomial.M_monic}
\leanok
Exercise.
\end{proof}

\begin{theorem}
\lean{MulSemiringAction.CharacteristicPolynomial.Mbar_monic}
\label{MulSemiringAction.CharacteristicPolynomial.Mbar_monic}
\uses{MulSemiringAction.CharacteristicPolynomial.M}
$\overline{M}_{\overline{b}}$ is monic.
\uses{MulSemiringAction.CharacteristicPolynomial.Mbar}
\leanok
$\overline{M}_{\overline{b}}$ is monic.
\end{theorem}
\begin{proof} Exercise (note that integral domains are nontrivial).
\begin{proof}
\uses{MulSemiringAction.CharacteristicPolynomial.M_monic}
\leanok
Exercise (note that integral domains are nontrivial).
\end{proof}

\begin{theorem}
\lean{MulSemiringAction.CharacteristicPolynomial.Mbar_eval_eq_zero}
\label{MulSemiringAction.CharacteristicPolynomial.Mbar_eval_eq_zero}
\uses{MulSemiringAction.CharacteristicPolynomial.M}
\uses{MulSemiringAction.CharacteristicPolynomial.Mbar}
\leanok
$\overline{M}_{\overline{b}}$ has $\overline{b}$ as a root.
\end{theorem}
\begin{proof} Exercise.
\begin{proof}
\uses{MulSemiringAction.CharacteristicPolynomial.M_eval_eq_zero}
\leanok
Exercise.
\end{proof}

\begin{theorem}
\lean{MulSemiringAction.reduction_isIntegral}
\label{MulSemiringAction.reduction_isIntegral}
\uses{MulSemiringAction.CharacteristicPolynomial.M}
\uses{MulSemiringAction.CharacteristicPolynomial.Mbar}
\leanok
$(B/Q)/(A/P)$ is an integral extension.
\end{theorem}
\begin{proof}
\uses{MulSemiringAction.CharacteristicPolynomial.Mbar_monic}
\uses{MulSemiringAction.CharacteristicPolynomial.Mbar_monic,
MulSemiringAction.CharacteristicPolynomial.Mbar_eval_eq_zero}
Use $\overline{M}_{\overline{b}}$.
\end{proof}

Expand All @@ -263,11 +288,13 @@ \section{The extension $(B/Q)/(A/P)$.}
\begin{corollary}
\lean{Algebra.exists_dvd_nonzero_if_isIntegral}
\label{Algebra.exists_dvd_nonzero_if_isIntegral}
\uses{MulSemiringAction.reduction_isIntegral}
\leanok
If $\beta\in B/Q$ is nonzero then there's some nonzero $\alpha\in A/P$
such that $\beta$ divides the image of $\alpha$ in $B/Q$.
\end{corollary}
\begin{proof} Note: Is this in mathlib already? This proof works for any
\begin{proof}
\uses{MulSemiringAction.reduction_isIntegral}
Note: Is this in mathlib already? This proof works for any
integral extension if the top ring has no zero divisors.

Let $\beta$ be nonzero, and
Expand Down