You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
import TestGame.Metadata
|
|
|
|
|
|
|
|
|
|
import Mathlib.Algebra.Module.Submodule.Lattice
|
|
|
|
|
|
|
|
|
|
Game "TestGame"
|
|
|
|
|
World "Module"
|
|
|
|
|
Level 4
|
|
|
|
|
|
|
|
|
|
Title "Untervektorräume"
|
|
|
|
|
|
|
|
|
|
Introduction
|
|
|
|
|
"
|
|
|
|
|
Sei `K` ein Körper und `V` ein `K`-Modul.
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
variable {K V : Type _} [Field K]
|
|
|
|
|
variable [AddCommMonoid V] [Module K V]
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Untermodule/Untervektorräume werden in Lean ein bisschen anders definiert als Module/Vektorräume.
|
|
|
|
|
|
|
|
|
|
Grob gesagt ist `V` ein Typ (denke z.B. an eine generelle Menge)
|
|
|
|
|
und `[module K V]` eine Instanz, die von Lean automatisc gefunden wird und
|
|
|
|
|
sagt, dass auf `V` eine `K`-Modulstruktur existiert. Hingegen ist `submodule K V` die Menge aller
|
|
|
|
|
Untermodulen
|
|
|
|
|
in `V`. Deshalb definieren wir Untermodule, indem wir Elemente aus dieser Menge auswählen:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
variable (U : Submodule K V)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Unter anderem hat dies den Vorteil, dass `submodule K V` eine Lattice ist, also eine `≤`-Operation
|
|
|
|
|
besitzt. Auf dem Papier
|
|
|
|
|
schreibt man normalerweise `U₁ ⊆ U₂` um zu sagen, dass das eine Untermodul eine Teilmenge des
|
|
|
|
|
anderen ist, in Lean braucht
|
|
|
|
|
man dafür immer `≤`.
|
|
|
|
|
|
|
|
|
|
Ganz `V` als Untermodul von sich selbst betrachtet, schreibt man als `⊤` (`\\top`), also das
|
|
|
|
|
grösste Element in dieser Lattice,
|
|
|
|
|
und das Null-Untermodule `{0}` with als `⊥` geschrieben (`\\bot`), also das kleinste Element.
|
|
|
|
|
"
|
|
|
|
|
|
|
|
|
|
Statement
|
|
|
|
|
"Jeder Untervektorraum `U ⊆ V` ist eine Teilmenge von `V`."
|
|
|
|
|
{K V : Type _} [Field K] [AddCommMonoid V] [Module K V] (U : Submodule K V) : U ≤ ⊤ := by
|
|
|
|
|
simp only [le_top]
|