Adding material
This commit is contained in:
@@ -0,0 +1,209 @@
|
||||
import VersoManual
|
||||
import Manual.Meta
|
||||
-- Minimal-Imports statt `import Mathlib`, ermittelt mit
|
||||
-- `#min_imports`.
|
||||
import Mathlib.FieldTheory.IntermediateField.Adjoin.Basic
|
||||
import Mathlib.RingTheory.Henselian
|
||||
import Mathlib.RingTheory.RegularLocalRing.Defs
|
||||
import Mathlib.RingTheory.SimpleRing.Principal
|
||||
|
||||
open Verso.Genre
|
||||
open Verso.Genre.Manual.InlineLean
|
||||
|
||||
set_option pp.rawOnError true
|
||||
set_option verso.docstring.allowMissing true
|
||||
|
||||
#doc (Manual) "Algebraische Elemente und Transitivität" =>
|
||||
%%%
|
||||
htmlSplit := .never
|
||||
tag := "elemente"
|
||||
file := "elemente"
|
||||
%%%
|
||||
|
||||
Dieses Kapitel übersetzt zwei weitere Resultate aus Kapitel 3 des
|
||||
Skripts nach Lean: den Satz über den Grad einer einfachen
|
||||
algebraischen Erweiterung, $`[a:K] = [K(a):K]`, und die
|
||||
Transitivität der Algebraizität. Beide bauen auf der Gradformel
|
||||
aus dem letzten Kapitel auf.
|
||||
|
||||
# Das Mathlib-Wörterbuch
|
||||
|
||||
* „$`a` ist algebraisch über $`K`“ heißt `IsAlgebraic K a`. Über
|
||||
Körpern ist das gleichbedeutend damit, dass $`a` Nullstelle
|
||||
eines _normierten_ Polynoms ist — in Mathlib `IsIntegral K a`
|
||||
(„$`a` ist ganz über $`K`“). Die Umrechnungen heißen
|
||||
`IsAlgebraic.isIntegral` und `IsIntegral.isAlgebraic`; die
|
||||
meisten Mathlib-Lemmata sind für `IsIntegral` formuliert.
|
||||
|
||||
* Das Minimalpolynom heißt `minpoly K a`; der Grad $`[a:K]` des
|
||||
Skripts ist sein Grad `(minpoly K a).natDegree`. Für
|
||||
transzendentes $`a` setzt Mathlib `minpoly K a = 0`, und das
|
||||
Nullpolynom hat `natDegree` 0 — wir treffen also wieder die
|
||||
0-Konvention für $`\infty` aus dem letzten Kapitel.
|
||||
|
||||
* Der Zwischenkörper $`K(a)` heißt `K⟮a⟯`, kurz für
|
||||
`IntermediateField.adjoin K {a}`. Die Klammer-Notation wird
|
||||
durch `open IntermediateField` verfügbar; Vorsicht, `⟮…⟯` sind
|
||||
eigene Unicode-Zeichen, keine gewöhnlichen Klammern.
|
||||
|
||||
* „Die Erweiterung $`L/K` ist algebraisch“ — jedes Element von
|
||||
$`L` ist algebraisch über $`K` — ist die Typklasse
|
||||
`Algebra.IsAlgebraic K L`. Das elementweise Ausbuchstabieren
|
||||
übernimmt `Algebra.IsAlgebraic.isAlgebraic`.
|
||||
|
||||
# Der Grad eines Elements
|
||||
|
||||
Satz 3.5.4 des Skripts verbindet den Grad eines Elements mit dem
|
||||
Grad der von ihm erzeugten Körpererweiterung:
|
||||
|
||||
> *Satz 3.5.4 (Grad von Körpererweiterungen und Grad von
|
||||
Elementen).* Es sei $`L/K` eine Körpererweiterung und es sei
|
||||
$`a ∈ L`. Dann gilt die Gleichheit $`[a:K] = [K(a):K]`.
|
||||
|
||||
Der Beweis im algebraischen Fall:
|
||||
|
||||
> _Beweis von Satz 3.5.4, falls $`a` algebraisch ist._ Setze
|
||||
$`m := [a:K]` und schreibe das Minimalpolynom von $`a` über
|
||||
$`K` als $`f(x) = λ_0 + λ_1 x + ⋯ + λ_{m-1} x^{m-1} + x^m`.
|
||||
Die Menge $`\{1, a, a^2, …, a^{m-1}\} ⊆ K(a)` ist linear
|
||||
unabhängig über $`K` … Betrachte deshalb den
|
||||
$`m`-dimensionalen Untervektorraum
|
||||
$`V := \langle 1, a, a^2, …, a^{m-1} \rangle_K ⊆ K(a)`.
|
||||
Ich behaupte, dass $`V = K(a)` ist; damit ist dann
|
||||
$`[K(a):K] = \dim_K V = m` und der Satz ist bewiesen. …
|
||||
|
||||
Die Behauptung — mit den beiden Beweisschritten
|
||||
„Abgeschlossenheit unter Multiplikation“ und „Abgeschlossenheit
|
||||
unter Inversenbildung“ — ist in Mathlib die Konstruktion
|
||||
`IntermediateField.adjoin.powerBasis`: Für ganzes $`a` baut sie
|
||||
aus den Potenzen $`1, a, …, a^{m-1}` eine Basis von `K⟮a⟯`, eine
|
||||
sogenannte _Potenzbasis_. Wie bei der Gradformel bleibt für uns
|
||||
das Abzählen der Basis.
|
||||
|
||||
```lean
|
||||
open IntermediateField
|
||||
|
||||
theorem grad_element {K L : Type*} [Field K] [Field L]
|
||||
[Algebra K L] {a : L} (ha : IsIntegral K a) :
|
||||
Module.finrank K K⟮a⟯ = (minpoly K a).natDegree := by
|
||||
-- „Betrachte deshalb den m-dimensionalen Untervektorraum
|
||||
-- V := ⟨1, a, a², …, a^{m-1}⟩ ⊆ K(a). Ich behaupte,
|
||||
-- dass V = K(a) ist …“ — die Potenzbasis von K⟮a⟯:
|
||||
let pb := IntermediateField.adjoin.powerBasis ha
|
||||
-- „… damit ist dann [K(a):K] = dim_K V = m und der Satz
|
||||
-- ist bewiesen.“
|
||||
rw [Module.finrank_eq_card_basis pb.basis,
|
||||
Fintype.card_fin]
|
||||
rfl
|
||||
```
|
||||
|
||||
Den transzendenten Fall — $`[a:K] = ∞ = [K(a):K]` — behandelt
|
||||
das Skript mit den unendlichen Potenzen $`1, a, a^2, …`; in
|
||||
Mathlibs 0-Konvention steht auf beiden Seiten schlicht 0. Als
|
||||
fertiges Zitat heißt unser Satz übrigens
|
||||
`IntermediateField.adjoin.finrank`.
|
||||
|
||||
# Die Transitivität der Algebraizität
|
||||
|
||||
Das Hauptresultat von Kapitel 3 des Skripts:
|
||||
|
||||
> *Korollar 3.7.1 (Transitivität der Algebraizität).* Es seien
|
||||
$`L/K` und $`M/L` zwei algebraische Körpererweiterungen. Dann
|
||||
ist auch $`M/K` algebraisch.
|
||||
|
||||
> _Beweis._ Es sei ein Element $`m ∈ M` gegeben. Wir wissen,
|
||||
dass $`m` algebraisch über $`L` ist; es sei
|
||||
$`f(x) = λ_0 + λ_1 x + ⋯ + λ_{n-1} x^{n-1} + x^n` das
|
||||
Minimalpolynom von $`m` über $`L`. Die Koeffizienten $`λ_i`
|
||||
liegen in $`L`. Betrachte jetzt den Körper
|
||||
$`Z := K(λ_0, …, λ_{n-1})` und die Kette von
|
||||
Körpererweiterungen $`K ⊆ Z ⊆ Z(m) ∋ m`. Die Erweiterung
|
||||
$`L/K` ist algebraisch, also sind die endlich vielen Elemente
|
||||
$`λ_0, …, λ_{n-1}` allesamt algebraisch über $`K`; deshalb ist
|
||||
$`[Z:K] < ∞`. Weiter liegt das Polynom $`f` in $`Z[x]` und
|
||||
hat $`m` als Nullstelle. Also ist $`m` auch algebraisch über
|
||||
$`Z`, und Satz 3.5.4 liefert $`[Z(m):Z] < ∞`. Mit der
|
||||
Gradformel folgt $`[Z(m):K] = [Z(m):Z]·[Z:K] < ∞`. Also ist
|
||||
die Erweiterung $`Z(m)/K` algebraisch; insbesondere ist das
|
||||
Element $`m ∈ Z(m)` algebraisch über $`K`.
|
||||
|
||||
Genau dieses Argument — adjungiere die endlich vielen
|
||||
Koeffizienten des Minimalpolynoms, schließe auf Endlichkeit und
|
||||
klettere mit der Gradformel den Turm hinauf — steckt in Mathlib
|
||||
im Lemma `isIntegral_trans`. Unser Beweis übersetzt die
|
||||
Rahmensätze des Skripts und zitiert für den Kern dieses Lemma:
|
||||
|
||||
```lean
|
||||
theorem transitivitaet (K L M : Type*) [Field K] [Field L]
|
||||
[Field M] [Algebra K L] [Algebra L M] [Algebra K M]
|
||||
[IsScalarTower K L M]
|
||||
[Algebra.IsAlgebraic K L] [Algebra.IsAlgebraic L M] :
|
||||
Algebra.IsAlgebraic K M := by
|
||||
constructor
|
||||
-- „Es sei ein Element m ∈ M gegeben.“
|
||||
intro m
|
||||
-- „Wir wissen, dass m algebraisch über L ist“ — über
|
||||
-- Körpern gleichbedeutend: m ist ganz über L.
|
||||
have hm : IsIntegral L m :=
|
||||
(Algebra.IsAlgebraic.isAlgebraic m).isIntegral
|
||||
-- Ebenso ist die algebraische Erweiterung L/K ganz.
|
||||
have : Algebra.IsIntegral K L :=
|
||||
Algebra.IsAlgebraic.isIntegral
|
||||
-- „Betrachte jetzt den Körper Z := K(λ₀, …, λ_{n-1}) und
|
||||
-- die Kette K ⊆ Z ⊆ Z(m) ∋ m …“ — der gesamte Rest
|
||||
-- des Skript-Beweises ist das Lemma isIntegral_trans.
|
||||
exact (isIntegral_trans m hm).isAlgebraic
|
||||
```
|
||||
|
||||
Das Skript warnt an dieser Stelle:
|
||||
|
||||
> *Warnung (Prüfungsfalle).* Der Satz über die Transitivität der
|
||||
Algebraizität wird in Prüfungen sehr gern gefragt. Beachten
|
||||
Sie, dass der Beweis ziemlich indirekt ist. In Prüfungen
|
||||
sehen wir oft, dass Kandidatinnen und Kandidaten für ein
|
||||
gegebenes $`a ∈ M` direkt ein Minimalpolynom konstruieren
|
||||
wollen. Das hat in der Geschichte der Mathematik noch in
|
||||
keiner Prüfung funktioniert. Lassen Sie das!
|
||||
|
||||
Die Warnung gilt wortgleich in Lean: Auch Mathlib konstruiert
|
||||
nirgendwo ein Minimalpolynom von $`m` über $`K` — der Beweis von
|
||||
`isIntegral_trans` läuft über die Endlichkeit von Moduln, nicht
|
||||
über explizite Polynome.
|
||||
|
||||
# Bemerkungen
|
||||
|
||||
1. Wer in den Beweis von `isIntegral_trans` hineinschaut, findet
|
||||
die Schritte des Skripts wieder: Dort wird die von den
|
||||
Koeffizienten des Minimalpolynoms erzeugte Unteralgebra
|
||||
gebildet (das $`Z` des Skripts), ihre Endlichkeit als Modul
|
||||
gezeigt, und am Ende die Endlichkeit längs des Turms
|
||||
komponiert — `Module.Finite.trans`, die Gradformel in der
|
||||
Gestalt „endlich über endlich ist endlich“.
|
||||
|
||||
2. Als fertiges Zitat ist die Transitivität in Mathlib die
|
||||
Instanz `Algebra.IsAlgebraic.trans K L M` — eine Zeile.
|
||||
|
||||
# Übungsaufgabe
|
||||
|
||||
Das Skript zieht aus der Transitivität eine schöne Folgerung:
|
||||
|
||||
> *Satz und Definition (Algebraischer Abschluss in einem
|
||||
Oberkörper).* Es sei $`L/K` eine Körpererweiterung. Dann
|
||||
bildet die Menge
|
||||
$`\overline{K} := \{ a ∈ L : a \text{ ist algebraisch über } K \}`
|
||||
einen Unterkörper von $`L`, genannt der _algebraische
|
||||
Abschluss von $`K` im Oberkörper $`L`_.
|
||||
|
||||
Die einzelnen Abgeschlossenheiten kennt Mathlib als
|
||||
`IsIntegral.add`, `IsIntegral.neg`, `IsIntegral.mul`,
|
||||
`IsIntegral.pow` und `IsIntegral.inv`. Die Übung: Kombinieren
|
||||
Sie sie. Öffnen Sie `AlgebraInLean/Elements.lean` und ersetzen
|
||||
Sie das `sorry` durch einen Beweis.
|
||||
|
||||
```lean
|
||||
theorem algebraisch_quadrat {K L : Type*} [Field K]
|
||||
[Field L] [Algebra K L] {a : L}
|
||||
(ha : IsIntegral K a) :
|
||||
IsIntegral K (a ^ 2 + a) := by
|
||||
sorry
|
||||
```
|
||||
Reference in New Issue
Block a user