Finite field vector spaces #
Here we define the notion of a vector space over a finite field, and record basic results about it.
Main classes #
ElementaryAddCommGroup
: An elementary p-group.
An elementary p
-group, i.e., a commutative additive group in which every nonzero element has
order exactly p
.
- orderOf_of_ne : ∀ {x : G}, x ≠ 0 → addOrderOf x = p
Instances
theorem
ElementaryAddCommGroup.orderOf_of_ne
{G : Type u_1}
[AddCommGroup G]
{p : outParam ℕ}
[self : ElementaryAddCommGroup G p]
{x : G}
(hx : x ≠ 0)
:
addOrderOf x = p
@[simp]
theorem
ElementaryAddCommGroup.torsion
{G : Type u_1}
[AddCommGroup G]
(p : ℕ)
[elem : ElementaryAddCommGroup G p]
(x : G)
:
theorem
ElementaryAddCommGroup.of_torsion
{G : Type u_1}
[AddCommGroup G]
{p : ℕ}
(hp : p.Prime)
(h : ∀ (x : G), p • x = 0)
:
theorem
ElementaryAddCommGroup.ofModule
{G : Type u_1}
{p : ℕ}
[AddCommGroup G]
[Module (ZMod p) G]
[Fact p.Prime]
:
A vector space over Z/p is an elementary abelian p-group.
@[instance 100]
instance
ElementaryAddCommGroup.module
{G : Type u_1}
{n : ℕ}
[AddCommGroup G]
[ElementaryAddCommGroup G n]
:
Equations
- ElementaryAddCommGroup.module = AddCommGroup.zmodModule ⋯
instance
ElementaryAddCommGroup.instOfNatNatOfModuleZMod
{G : Type u_1}
[AddCommGroup G]
[Module (ZMod 2) G]
:
Equations
- ⋯ = ⋯
theorem
ElementaryAddCommGroup.exists_subgroup_subset_card_le
{G : Type u_1}
{p : ℕ}
(hp : p.Prime)
[AddCommGroup G]
[h : ElementaryAddCommGroup G p]
{k : ℕ}
(H : AddSubgroup G)
(hk : k ≤ Nat.card ↥H)
(h'k : k ≠ 0)
:
In an elementary abelian $p$-group, every finite subgroup $H$ contains a further subgroup of cardinality between $k$ and $pk$, if $k \leq |H|$.
@[simp]
theorem
ElementaryAddCommGroup.sub_eq_add
{G : Type u_1}
[AddCommGroup G]
[elem : ElementaryAddCommGroup G 2]
(x : G)
(y : G)
:
@[simp]
theorem
ElementaryAddCommGroup.add_self
{G : Type u_1}
[AddCommGroup G]
[elem : ElementaryAddCommGroup G 2]
(x : G)
:
@[simp]
theorem
ElementaryAddCommGroup.neg_eq_self
{G : Type u_1}
[AddCommGroup G]
[elem : ElementaryAddCommGroup G 2]
(x : G)
:
theorem
ElementaryAddCommGroup.sum_add_sum_eq_sum
{G : Type u_1}
[AddCommGroup G]
[elem : ElementaryAddCommGroup G 2]
(x : G)
(y : G)
(z : G)
:
theorem
ElementaryAddCommGroup.sum_add_sum_add_sum_eq_zero
{G : Type u_1}
[AddCommGroup G]
[elem : ElementaryAddCommGroup G 2]
(x : G)
(y : G)
(z : G)
:
@[simp]
theorem
ElementaryAddCommGroup.char_smul_eq_zero
{p : ℕ}
{Γ : Type u_1}
[AddCommGroup Γ]
[ElementaryAddCommGroup Γ p]
(x : Γ)
:
theorem
ElementaryAddCommGroup.char_ne_one_of_ne_zero
{p : ℕ}
{Γ : Type u_1}
[AddCommGroup Γ]
[ElementaryAddCommGroup Γ p]
{x : Γ}
(x_ne_zero : x ≠ 0)
:
p ≠ 1
@[simp]
theorem
ElementaryAddCommGroup.char_smul_eq_zero'
{p : ℕ}
{Γ : Type u_1}
[AddCommGroup Γ]
[ElementaryAddCommGroup Γ p]
(x : Γ)
(k : ℤ)
:
theorem
ElementaryAddCommGroup.two_le_char_of_ne_zero
{p : ℕ}
{Γ : Type u_1}
[NeZero p]
[AddCommGroup Γ]
[ElementaryAddCommGroup Γ p]
{x : Γ}
(x_ne_zero : x ≠ 0)
:
2 ≤ p
theorem
ElementaryAddCommGroup.mem_periodicPts
{p : ℕ}
{Γ : Type u_1}
[NeZero p]
[AddCommGroup Γ]
[ElementaryAddCommGroup Γ p]
{x : Γ}
(y : Γ)
:
y ∈ Function.periodicPts fun (z : Γ) => x + z
instance
ElementaryAddCommGroup.instForallOfNeZeroNat
(Ω : Type u_1)
(Γ : Type u_2)
(p : ℕ)
[NeZero p]
[AddCommGroup Γ]
[ElementaryAddCommGroup Γ p]
:
ElementaryAddCommGroup (Ω → Γ) p
Equations
- ⋯ = ⋯
theorem
ElementaryAddCommGroup.exists_finsupp
{G : Type u_1}
[AddCommGroup G]
{n : ℕ}
[ElementaryAddCommGroup G (n + 1)]
{A : Set G}
{x : G}
(hx : x ∈ Submodule.span ℤ A)
:
theorem
ElementaryAddCommGroup.finite_closure
{G : Type u_1}
[AddCommGroup G]
{n : ℕ}
[ElementaryAddCommGroup G (n + 1)]
{A : Set G}
(h : A.Finite)
:
(↑(AddSubgroup.closure A)).Finite
theorem
ElementaryAddCommGroup.subgroup
{G : Type u_1}
[AddCommGroup G]
{n : ℕ}
[ElementaryAddCommGroup G n]
(H : AddSubgroup G)
:
ElementaryAddCommGroup (↥H) n
theorem
ElementaryAddCommGroup.quotient_group
{G : Type u_1}
[AddCommGroup G]
{p : ℕ}
(hp : p.Prime)
{H : AddSubgroup G}
(hH : ∀ (x : G), p • x ∈ H)
:
ElementaryAddCommGroup (G ⧸ H) p