Documentation

Mathlib.LinearAlgebra.AffineSpace.Dimension

(Finite) Dimension of an affine subspace #

This file defines the dimension of an affine subspace to be for the empty subspace, and otherwise equal to the Module.rank of the direction of the subspace. The finite dimension is similary defined using Module.finrank.

Main definitions #

noncomputable def AffineSubspace.dim {R : Type u} {V : Type v} {A : Type a} [AddCommGroup V] [AddTorsor V A] [Ring R] [Module R V] (s : AffineSubspace R A) :

The dimension of s is equal to if s = ⊥, and otherwise it is equal to the dimension of s interpreted as a linear space.

Equations
Instances For
    noncomputable def AffineSubspace.finDim {R : Type u} {V : Type v} {A : Type a} [AddCommGroup V] [AddTorsor V A] [Ring R] [Module R V] (s : AffineSubspace R A) :

    The dimension of s is equal to if s = ⊥, and otherwise it is equal to the finite dimension of s interpreted as a linear space. Note that this inherits Module.finranks junk value: AffineSubspace.finDim s = 0 for infinite dimensional subspaces.

    Equations
    Instances For
      @[simp]
      theorem AffineSubspace.dim_bot {R : Type u} {V : Type v} {A : Type a} [AddCommGroup V] [AddTorsor V A] [Ring R] [Module R V] :
      @[simp]
      theorem AffineSubspace.finDim_bot {R : Type u} {V : Type v} {A : Type a} [AddCommGroup V] [AddTorsor V A] [Ring R] [Module R V] :
      @[simp]
      theorem AffineSubspace.dim_singleton {R : Type u} {V : Type v} {A : Type a} [AddCommGroup V] [AddTorsor V A] [Ring R] [Module R V] [Nontrivial R] (x : A) :
      {x}.dim = 0
      @[simp]
      theorem AffineSubspace.finDim_singleton {R : Type u} {V : Type v} {A : Type a} [AddCommGroup V] [AddTorsor V A] [Ring R] [Module R V] [Nontrivial R] (x : A) :
      @[simp]
      theorem AffineSubspace.dim_eq_bot_iff {R : Type u} {V : Type v} {A : Type a} [AddCommGroup V] [AddTorsor V A] [Ring R] [Module R V] {s : AffineSubspace R A} :
      @[simp]
      theorem AffineSubspace.finDim_eq_bot_iff {R : Type u} {V : Type v} {A : Type a} [AddCommGroup V] [AddTorsor V A] [Ring R] [Module R V] {s : AffineSubspace R A} :
      theorem AffineSubspace.dim_ne_bot_iff {R : Type u} {V : Type v} {A : Type a} [AddCommGroup V] [AddTorsor V A] [Ring R] [Module R V] {s : AffineSubspace R A} :
      theorem AffineSubspace.finDim_ne_bot_iff {R : Type u} {V : Type v} {A : Type a} [AddCommGroup V] [AddTorsor V A] [Ring R] [Module R V] {s : AffineSubspace R A} :
      theorem AffineSubspace.dim_eq_rank {R : Type u} {V : Type v} {A : Type a} [AddCommGroup V] [AddTorsor V A] [Ring R] [Module R V] {s : AffineSubspace R A} (h : s ) :
      s.dim = (Module.rank R s.direction)
      theorem AffineSubspace.finDim_eq_finrank {R : Type u} {V : Type v} {A : Type a} [AddCommGroup V] [AddTorsor V A] [Ring R] [Module R V] {s : AffineSubspace R A} (h : s ) :
      @[simp]
      theorem AffineSubspace.dim_eq_finDim_unbot {R : Type u} {V : Type v} {A : Type a} [AddCommGroup V] [AddTorsor V A] [Ring R] [Module R V] {s : AffineSubspace R A} (hs : s ) [StrongRankCondition R] [Module.Finite R s.direction] :
      s.dim = (s.finDim.unbot )
      theorem AffineSubspace.dim_mono {R : Type u} {V : Type v} {A : Type a} [AddCommGroup V] [AddTorsor V A] [Ring R] [Module R V] {s t : AffineSubspace R A} (h : s t) :
      s.dim t.dim
      theorem AffineSubspace.finDim_mono {R : Type u} {V : Type v} {A : Type a} [AddCommGroup V] [AddTorsor V A] [Ring R] [Module R V] {s t : AffineSubspace R A} [StrongRankCondition R] [Module.Finite R t.direction] (h : s t) :
      theorem AffineSubspace.lift_dim_map_le {R : Type u} {V : Type v} {V' : Type v'} {A : Type a} {A' : Type a'} [AddCommGroup V] [AddTorsor V A] [AddCommGroup V'] [AddTorsor V' A'] [Ring R] [Module R V] [Module R V'] (f : A →ᵃ[R] A') (s : AffineSubspace R A) :
      theorem AffineSubspace.dim_map_le {R : Type u} {V : Type v} {A A₁ : Type a} [AddCommGroup V] [AddTorsor V A] [AddTorsor V A₁] [Ring R] [Module R V] (f : A →ᵃ[R] A₁) (s : AffineSubspace R A) :
      (map f s).dim s.dim
      theorem AffineSubspace.finDim_map_le_finDim {R : Type u} {V : Type v} {V' : Type v'} {A : Type a} {A' : Type a'} [AddCommGroup V] [AddTorsor V A] [AddCommGroup V'] [AddTorsor V' A'] [Ring R] [Module R V] [Module R V'] [StrongRankCondition R] (f : A →ᵃ[R] A') (s : AffineSubspace R A) [Module.Finite R s.direction] :
      theorem AffineSubspace.dim_map_of_injective {R : Type u} {V : Type v} {A A₁ : Type a} [AddCommGroup V] [AddTorsor V A] [AddTorsor V A₁] [Ring R] [Module R V] {f : A →ᵃ[R] A₁} (hf : Function.Injective f) (s : AffineSubspace R A) :
      (map f s).dim = s.dim
      theorem AffineSubspace.finDim_map_of_injective {R : Type u} {V : Type v} {V' : Type v'} {A : Type a} {A' : Type a'} [AddCommGroup V] [AddTorsor V A] [AddCommGroup V'] [AddTorsor V' A'] [Ring R] [Module R V] [Module R V'] {f : A →ᵃ[R] A'} (hf : Function.Injective f) (s : AffineSubspace R A) :
      (map f s).finDim = s.finDim
      @[simp]
      theorem AffineSubspace.finDim_strictMono {R : Type u} {V : Type v} {A : Type a} [AddCommGroup V] [AddTorsor V A] [DivisionRing R] [Module R V] {s t : AffineSubspace R A} [Module.Finite R t.direction] (h : s < t) :