(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 #
AffineSubspace.dim: Dimension expressed asWithBot CardinalAffineSubspace.finDim: Dimension expressed asWithBot ℕwith a junk value of 0 for infinite dimensional spaces.
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.
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
- s.finDim = WithBot.map (⇑Cardinal.toNat) s.dim
Instances For
@[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) :
@[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) :
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 ≠ ⊥) :
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) :
@[simp]
theorem AffineSubspace.finDim_toAffineSubspace {R : Type u} {V : Type v} [AddCommGroup V] [Ring R] [Module R V] (s : Submodule R V) :
@[simp]
theorem AffineSubspace.finDim_eq_finrank_of_not_finite {R : Type u} {V : Type v} {A : Type a} [AddCommGroup V] [AddTorsor V A] [Ring R] [Module R V] {s : AffineSubspace R A} [Module.Free R ↥s.direction] [StrongRankCondition R] (h : ¬Module.Finite R ↥s.direction) :
@[simp]
theorem AffineSubspace.dim_lt_aleph0 {R : Type u} {V : Type v} {A : Type a} [AddCommGroup V] [AddTorsor V A] [Ring R] [Module R V] [StrongRankCondition R] (s : AffineSubspace R A) [Module.Finite R ↥s.direction] :
theorem AffineSubspace.finite_iff_dim_lt_aleph0 {R : Type u} {V : Type v} {A : Type a} [AddCommGroup V] [AddTorsor V A] [Ring R] [Module R V] [StrongRankCondition R] (s : AffineSubspace R A) [Module.Free R ↥s.direction] :
theorem AffineSubspace.finite_of_finDim_ne_zero {R : Type u} {V : Type v} {A : Type a} [AddCommGroup V] [AddTorsor V A] [Ring R] [Module R V] [StrongRankCondition R] (s : AffineSubspace R A) [Module.Free R ↥s.direction] (h : s.finDim ≠ 0) :
Module.Finite R ↥s.direction
theorem AffineSubspace.finDim_eq_map_dim_toNat {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_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] :
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) :
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.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.lift_dim_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) :
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) :
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) :
@[simp]
theorem AffineSubspace.dim_le_zero_iff_subsingleton {R : Type u} {V : Type v} {A : Type a} [AddCommGroup V] [AddTorsor V A] [Ring R] [Module R V] {s : AffineSubspace R A} [IsDomain R] [Module.IsTorsionFree R ↥s.direction] :
@[simp]
theorem AffineSubspace.finDim_le_zero_iff_subsingleton {R : Type u} {V : Type v} {A : Type a} [AddCommGroup V] [AddTorsor V A] [Ring R] [Module R V] {s : AffineSubspace R A} [StrongRankCondition R] [IsDomain R] [Module.IsTorsionFree R ↥s.direction] [Module.Finite R ↥s.direction] :
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) :