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_toAffineSubspace {R : Type u} {V : Type v} [AddCommGroup V] [Ring R] [Module R V] (s : Submodule R V) :
      (↑s).dim = ↑(Module.rank R ↥s)
      @[simp]
      theorem AffineSubspace.finDim_toAffineSubspace {R : Type u} {V : Type v} [AddCommGroup V] [Ring R] [Module R V] (s : Submodule R V) :
      (↑s).finDim = ↑(Module.finrank R ↥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) :