Documentation

PFR.ForMathlib.Elementary

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 #

An elementary p-group, i.e., a commutative additive group in which every nonzero element has order exactly p.

Instances
    theorem ElementaryAddCommGroup.orderOf_of_ne {G : Type u_1} [AddCommGroup G] {p : outParam } [self : ElementaryAddCommGroup G p] {x : G} (hx : x 0) :
    @[simp]
    theorem ElementaryAddCommGroup.torsion {G : Type u_1} [AddCommGroup G] (p : ) [elem : ElementaryAddCommGroup G p] (x : G) :
    p x = 0
    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]
    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) :
    ∃ (H' : AddSubgroup G), Nat.card H' k k < p * Nat.card H' H' H

    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) :
    x - y = x + y
    @[simp]
    theorem ElementaryAddCommGroup.add_self {G : Type u_1} [AddCommGroup G] [elem : ElementaryAddCommGroup G 2] (x : G) :
    x + x = 0
    @[simp]
    theorem ElementaryAddCommGroup.neg_eq_self {G : Type u_1} [AddCommGroup G] [elem : ElementaryAddCommGroup G 2] (x : G) :
    -x = x
    theorem ElementaryAddCommGroup.sum_add_sum_eq_sum {G : Type u_1} [AddCommGroup G] [elem : ElementaryAddCommGroup G 2] (x : G) (y : G) (z : G) :
    x + y + (y + z) = x + z
    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) :
    x + y + (y + z) + (z + x) = 0
    @[simp]
    theorem ElementaryAddCommGroup.char_smul_eq_zero {p : } {Γ : Type u_1} [AddCommGroup Γ] [ElementaryAddCommGroup Γ p] (x : Γ) :
    p x = 0
    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 : ) :
    (k * p) x = 0
    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
    Equations
    • =
    theorem ElementaryAddCommGroup.Int.mod_eq (n : ) (m : ) :
    n % m = n - n / m * m
    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) :
    ∃ (μ : A →₀ ZMod (n + 1)), (μ.sum fun (a : A) (r : ZMod (n + 1)) => r.cast a) = x
    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.quotient_group {G : Type u_1} [AddCommGroup G] {p : } (hp : p.Prime) {H : AddSubgroup G} (hH : ∀ (x : G), p x H) :