File: Mathlib/LinearAlgebra/FiniteDimensional/Defs.lean

full_name: FiniteDimensional
code: /-- `FiniteDimensional` vector spaces are defined to be finite modules.
Use `FiniteDimensional.of_fintype_basis` to prove finite dimension from another definition. -/
abbrev FiniteDimensional (K V : Type*) [DivisionRing K] [AddCommGroup V] [Module K V] 
goal: Prop

full_name: FiniteDimensional.of_injective
code: /-- If the codomain of an injective linear map is finite dimensional, the domain must be as well. -/
theorem of_injective (f : V →ₗ[K] V₂) (w : Function.Injective f) [FiniteDimensional K V₂] :
    FiniteDimensional K V 
goal: FiniteDimensional K V

full_name: FiniteDimensional.of_surjective
code: /-- If the domain of a surjective linear map is finite dimensional, the codomain must be as well. -/
theorem of_surjective (f : V →ₗ[K] V₂) (w : Function.Surjective f) [FiniteDimensional K V] :
    FiniteDimensional K V₂ 
goal: FiniteDimensional K V₂

full_name: FiniteDimensional.finiteDimensional_pi
code: instance finiteDimensional_pi {ι : Type*} [Finite ι] : FiniteDimensional K (ι → K) 
goal: FiniteDimensional K (ι → K)

full_name: FiniteDimensional.finiteDimensional_pi'
code: instance finiteDimensional_pi' {ι : Type*} [Finite ι] (M : ι → Type*) [∀ i, AddCommGroup (M i)]
    [∀ i, Module K (M i)] [∀ i, FiniteDimensional K (M i)] : FiniteDimensional K (∀ i, M i) 
goal: FiniteDimensional K ((i : ι) → M i)

full_name: FiniteDimensional.fintypeOfFintype
code: /-- A finite dimensional vector space over a finite field is finite -/
noncomputable def fintypeOfFintype [Fintype K] [FiniteDimensional K V] : Fintype V 
goal: Fintype V

full_name: FiniteDimensional.finite_of_finite
code: theorem finite_of_finite [Finite K] [FiniteDimensional K V] : Finite V 
goal: Finite V

full_name: FiniteDimensional.of_fintype_basis
code: /-- If a vector space has a finite basis, then it is finite-dimensional. -/
theorem of_fintype_basis {ι : Type w} [Finite ι] (h : Basis ι K V) : FiniteDimensional K V 
goal: FiniteDimensional K V

full_name: FiniteDimensional.fintypeBasisIndex
code: /-- If a vector space is `FiniteDimensional`, all bases are indexed by a finite type -/
noncomputable def fintypeBasisIndex {ι : Type*} [FiniteDimensional K V] (b : Basis ι K V) :
    Fintype ι 
goal: Fintype ι

full_name: FiniteDimensional.instFintypeElemOfVectorSpaceIndex
code: /-- If a vector space is `FiniteDimensional`, `Basis.ofVectorSpace` is indexed by
  a finite type. -/
noncomputable instance [FiniteDimensional K V] : Fintype (Basis.ofVectorSpaceIndex K V) 
goal: Fintype ↑(Basis.ofVectorSpaceIndex K V)

full_name: FiniteDimensional.of_finite_basis
code: /-- If a vector space has a basis indexed by elements of a finite set, then it is
finite-dimensional. -/
theorem of_finite_basis {ι : Type w} {s : Set ι} (h : Basis s K V) (hs : Set.Finite s) :
    FiniteDimensional K V 
goal: FiniteDimensional K V

full_name: FiniteDimensional.finiteDimensional_submodule
code: /-- A subspace of a finite-dimensional space is also finite-dimensional. -/
instance finiteDimensional_submodule [FiniteDimensional K V] (S : Submodule K V) :
    FiniteDimensional K S 
goal: FiniteDimensional K ↥S

full_name: FiniteDimensional.finiteDimensional_quotient
code: /-- A quotient of a finite-dimensional space is also finite-dimensional. -/
instance finiteDimensional_quotient [FiniteDimensional K V] (S : Submodule K V) :
    FiniteDimensional K (V ⧸ S) 
goal: FiniteDimensional K (V ⧸ S)

full_name: FiniteDimensional.finrank_eq_rank'
code: /-- In a finite-dimensional space, its dimension (seen as a cardinal) coincides with its
`finrank`. This is a copy of `finrank_eq_rank _ _` which creates easier typeclass searches. -/
theorem finrank_eq_rank' [FiniteDimensional K V] : (finrank K V : Cardinal.{v}) = Module.rank K V 
goal: ↑(FiniteDimensional.finrank K V) = Module.rank K V

full_name: FiniteDimensional.finrank_of_infinite_dimensional
code: theorem finrank_of_infinite_dimensional (h : ¬FiniteDimensional K V) : finrank K V = 0 
goal: FiniteDimensional.finrank K V = 0

full_name: FiniteDimensional.of_finrank_pos
code: theorem of_finrank_pos (h : 0 < finrank K V) : FiniteDimensional K V 
goal: FiniteDimensional K V

full_name: FiniteDimensional.of_finrank_eq_succ
code: theorem of_finrank_eq_succ {n : ℕ} (hn : finrank K V = n.succ) :
    FiniteDimensional K V 
goal: FiniteDimensional K V

full_name: FiniteDimensional.of_fact_finrank_eq_succ
code: /-- We can infer `FiniteDimensional K V` in the presence of `[Fact (finrank K V = n + 1)]`. Declare
this as a local instance where needed. -/
theorem of_fact_finrank_eq_succ (n : ℕ) [hn : Fact (finrank K V = n + 1)] :
    FiniteDimensional K V 
goal: FiniteDimensional K V

full_name: FiniteDimensional.finiteDimensional_iff_of_rank_eq_nsmul
code: theorem finiteDimensional_iff_of_rank_eq_nsmul {W} [AddCommGroup W] [Module K W] {n : ℕ}
    (hn : n ≠ 0) (hVW : Module.rank K V = n • Module.rank K W) :
    FiniteDimensional K V ↔ FiniteDimensional K W 
goal: FiniteDimensional K V ↔ FiniteDimensional K W

full_name: FiniteDimensional.finrank_eq_card_basis'
code: /-- If a vector space is finite-dimensional, then the cardinality of any basis is equal to its
`finrank`. -/
theorem finrank_eq_card_basis' [FiniteDimensional K V] {ι : Type w} (h : Basis ι K V) :
    (finrank K V : Cardinal.{w}) = #ι 
goal: ↑(FiniteDimensional.finrank K V) = #ι

full_name: LinearIndependent.lt_aleph0_of_finiteDimensional
code: theorem _root_.LinearIndependent.lt_aleph0_of_finiteDimensional {ι : Type w} [FiniteDimensional K V]
    {v : ι → V} (h : LinearIndependent K v) : #ι < ℵ₀ 
goal: #ι < ℵ₀

full_name: Submodule.eq_top_of_finrank_eq
code: /-- If a submodule has maximal dimension in a finite dimensional space, then it is equal to the
whole space. -/
theorem _root_.Submodule.eq_top_of_finrank_eq [FiniteDimensional K V] {S : Submodule K V}
    (h : finrank K S = finrank K V) : S = ⊤ 
goal: S = ⊤

full_name: FiniteDimensional.finiteDimensional_self
code: instance finiteDimensional_self : FiniteDimensional K K 
goal: FiniteDimensional K K

full_name: FiniteDimensional.span_of_finite
code: /-- The submodule generated by a finite set is finite-dimensional. -/
theorem span_of_finite {A : Set V} (hA : Set.Finite A) : FiniteDimensional K (Submodule.span K A) 
goal: FiniteDimensional K ↥(Submodule.span K A)

full_name: FiniteDimensional.span_singleton
code: /-- The submodule generated by a single element is finite-dimensional. -/
instance span_singleton (x : V) : FiniteDimensional K (K ∙ x) 
goal: FiniteDimensional K ↥(Submodule.span K {x})

full_name: FiniteDimensional.span_finset
code: /-- The submodule generated by a finset is finite-dimensional. -/
instance span_finset (s : Finset V) : FiniteDimensional K (span K (s : Set V)) 
goal: FiniteDimensional K ↥(Submodule.span K ↑s)

full_name: FiniteDimensional.instSubtypeMemSubmoduleMapLinearMapId
code: /-- Pushforwards of finite-dimensional submodules are finite-dimensional. -/
instance (f : V →ₗ[K] V₂) (p : Submodule K V) [FiniteDimensional K p] :
    FiniteDimensional K (p.map f) 
goal: FiniteDimensional K ↥(Submodule.map f p)

full_name: FiniteDimensional.exists_relation_sum_zero_pos_coefficient_of_finrank_succ_lt_card
code: /-- A slight strengthening of `exists_nontrivial_relation_sum_zero_of_rank_succ_lt_card`
available when working over an ordered field:
we can ensure a positive coefficient, not just a nonzero coefficient.
-/
theorem exists_relation_sum_zero_pos_coefficient_of_finrank_succ_lt_card [FiniteDimensional L W]
    {t : Finset W} (h : finrank L W + 1 < t.card) :
    ∃ f : W → L, ∑ e ∈ t, f e • e = 0 ∧ ∑ e ∈ t, f e = 0 ∧ ∃ x ∈ t, 0 < f x 
goal: ∃ f, ∑ e ∈ t, f e • e = 0 ∧ ∑ e ∈ t, f e = 0 ∧ ∃ x ∈ t, 0 < f x

full_name: FiniteDimensional.basisSingleton
code: /-- In a vector space with dimension 1, each set {v} is a basis for `v ≠ 0`. -/
@[simps repr_apply]
noncomputable def basisSingleton (ι : Type*) [Unique ι] (h : finrank K V = 1) (v : V)
    (hv : v ≠ 0) : Basis ι K V 
goal: Basis ι K V

full_name: FiniteDimensional.basisSingleton_repr_apply
code: /-- In a vector space with dimension 1, each set {v} is a basis for `v ≠ 0`. -/
@[simps repr_apply]
noncomputable def basisSingleton (ι : Type*) [Unique ι] (h : finrank K V = 1) (v : V)
    (hv : v ≠ 0) : Basis ι K V 
goal: (FiniteDimensional.basisSingleton ι h v hv).repr w =
  Finsupp.single default
    (((FiniteDimensional.basisUnique ι h).repr w) default / ((FiniteDimensional.basisUnique ι h).repr v) default)

full_name: FiniteDimensional.basisSingleton_apply
code: @[simp]
theorem basisSingleton_apply (ι : Type*) [Unique ι] (h : finrank K V = 1) (v : V) (hv : v ≠ 0)
    (i : ι) : basisSingleton ι h v hv i = v 
goal: (FiniteDimensional.basisSingleton ι h v hv) i = v

full_name: FiniteDimensional.range_basisSingleton
code: @[simp]
theorem range_basisSingleton (ι : Type*) [Unique ι] (h : finrank K V = 1) (v : V) (hv : v ≠ 0) :
    Set.range (basisSingleton ι h v hv) = {v} 
goal: Set.range ⇑(FiniteDimensional.basisSingleton ι h v hv) = {v}

full_name: FiniteDimensional.trans
code: theorem trans [FiniteDimensional F K] [FiniteDimensional K A] : FiniteDimensional F A 
goal: FiniteDimensional F A

full_name: FiniteDimensional.of_rank_eq_nat
code: theorem FiniteDimensional.of_rank_eq_nat {n : ℕ} (h : Module.rank K V = n) :
    FiniteDimensional K V 
goal: FiniteDimensional K V

full_name: FiniteDimensional.of_rank_eq_zero
code: theorem FiniteDimensional.of_rank_eq_zero (h : Module.rank K V = 0) : FiniteDimensional K V 
goal: FiniteDimensional K V

full_name: FiniteDimensional.of_rank_eq_one
code: theorem FiniteDimensional.of_rank_eq_one (h : Module.rank K V = 1) : FiniteDimensional K V 
goal: FiniteDimensional K V

full_name: finiteDimensional_bot
code: instance finiteDimensional_bot : FiniteDimensional K (⊥ : Submodule K V) 
goal: FiniteDimensional K ↥⊥

full_name: Submodule.fg_iff_finiteDimensional
code: /-- A submodule is finitely generated if and only if it is finite-dimensional -/
theorem fg_iff_finiteDimensional (s : Submodule K V) : s.FG ↔ FiniteDimensional K s 
goal: s.FG ↔ FiniteDimensional K ↥s

full_name: Submodule.finiteDimensional_of_le
code: /-- A submodule contained in a finite-dimensional submodule is
finite-dimensional. -/
theorem finiteDimensional_of_le {S₁ S₂ : Submodule K V} [FiniteDimensional K S₂] (h : S₁ ≤ S₂) :
    FiniteDimensional K S₁ 
goal: FiniteDimensional K ↥S₁

full_name: Submodule.finiteDimensional_inf_left
code: /-- The inf of two submodules, the first finite-dimensional, is
finite-dimensional. -/
instance finiteDimensional_inf_left (S₁ S₂ : Submodule K V) [FiniteDimensional K S₁] :
    FiniteDimensional K (S₁ ⊓ S₂ : Submodule K V) 
goal: FiniteDimensional K ↥(S₁ ⊓ S₂)

full_name: Submodule.finiteDimensional_inf_right
code: /-- The inf of two submodules, the second finite-dimensional, is
finite-dimensional. -/
instance finiteDimensional_inf_right (S₁ S₂ : Submodule K V) [FiniteDimensional K S₂] :
    FiniteDimensional K (S₁ ⊓ S₂ : Submodule K V) 
goal: FiniteDimensional K ↥(S₁ ⊓ S₂)

full_name: Submodule.finiteDimensional_sup
code: /-- The sup of two finite-dimensional submodules is
finite-dimensional. -/
instance finiteDimensional_sup (S₁ S₂ : Submodule K V) [h₁ : FiniteDimensional K S₁]
    [h₂ : FiniteDimensional K S₂] : FiniteDimensional K (S₁ ⊔ S₂ : Submodule K V) 
goal: FiniteDimensional K ↥(S₁ ⊔ S₂)

full_name: Submodule.finiteDimensional_finset_sup
code: /-- The submodule generated by a finite supremum of finite dimensional submodules is
finite-dimensional.

Note that strictly this only needs `∀ i ∈ s, FiniteDimensional K (S i)`, but that doesn't
work well with typeclass search. -/
instance finiteDimensional_finset_sup {ι : Type*} (s : Finset ι) (S : ι → Submodule K V)
    [∀ i, FiniteDimensional K (S i)] : FiniteDimensional K (s.sup S : Submodule K V) 
goal: FiniteDimensional K ↥(s.sup S)

full_name: Submodule.finiteDimensional_iSup
code: /-- The submodule generated by a supremum of finite dimensional submodules, indexed by a finite
sort is finite-dimensional. -/
instance finiteDimensional_iSup {ι : Sort*} [Finite ι] (S : ι → Submodule K V)
    [∀ i, FiniteDimensional K (S i)] : FiniteDimensional K ↑(⨆ i, S i) 
goal: FiniteDimensional K ↥(⨆ i, S i)

full_name: LinearEquiv.finiteDimensional
code: /-- Finite dimensionality is preserved under linear equivalence. -/
protected theorem finiteDimensional (f : V ≃ₗ[K] V₂) [FiniteDimensional K V] :
    FiniteDimensional K V₂ 
goal: FiniteDimensional K V₂

full_name: finiteDimensional_finsupp
code: instance finiteDimensional_finsupp {ι : Type*} [Finite ι] [FiniteDimensional K V] :
    FiniteDimensional K (ι →₀ V) 
goal: FiniteDimensional K (ι →₀ V)

full_name: FiniteDimensional.eq_of_le_of_finrank_le
code: /-- If a submodule is contained in a finite-dimensional
submodule with the same or smaller dimension, they are equal. -/
theorem eq_of_le_of_finrank_le {S₁ S₂ : Submodule K V} [FiniteDimensional K S₂] (hle : S₁ ≤ S₂)
    (hd : finrank K S₂ ≤ finrank K S₁) : S₁ = S₂ 
goal: S₁ = S₂

full_name: FiniteDimensional.eq_of_le_of_finrank_eq
code: /-- If a submodule is contained in a finite-dimensional
submodule with the same dimension, they are equal. -/
theorem eq_of_le_of_finrank_eq {S₁ S₂ : Submodule K V} [FiniteDimensional K S₂] (hle : S₁ ≤ S₂)
    (hd : finrank K S₁ = finrank K S₂) : S₁ = S₂ 
goal: S₁ = S₂

full_name: Subalgebra.eq_of_le_of_finrank_le
code: /-- If a subalgebra is contained in a finite-dimensional
subalgebra with the same or smaller dimension, they are equal. -/
theorem _root_.Subalgebra.eq_of_le_of_finrank_le (h_finrank : finrank K E ≤ finrank K F) : F = E 
goal: F = E

full_name: Subalgebra.eq_of_le_of_finrank_eq
code: /-- If a subalgebra is contained in a finite-dimensional
subalgebra with the same dimension, they are equal. -/
theorem _root_.Subalgebra.eq_of_le_of_finrank_eq (h_finrank : finrank K F = finrank K E) : F = E 
goal: F = E

full_name: LinearMap.surjective_of_injective
code: /-- On a finite-dimensional space, an injective linear map is surjective. -/
theorem surjective_of_injective [FiniteDimensional K V] {f : V →ₗ[K] V} (hinj : Injective f) :
    Surjective f 
goal: Function.Surjective ⇑f

full_name: LinearMap.finiteDimensional_of_surjective
code: /-- The image under an onto linear map of a finite-dimensional space is also finite-dimensional. -/
theorem finiteDimensional_of_surjective [FiniteDimensional K V] (f : V →ₗ[K] V₂)
    (hf : LinearMap.range f = ⊤) : FiniteDimensional K V₂ 
goal: FiniteDimensional K V₂

full_name: LinearMap.finiteDimensional_range
code: /-- The range of a linear map defined on a finite-dimensional space is also finite-dimensional. -/
instance finiteDimensional_range [FiniteDimensional K V] (f : V →ₗ[K] V₂) :
    FiniteDimensional K (LinearMap.range f) 
goal: FiniteDimensional K ↥(LinearMap.range f)

full_name: LinearMap.injective_iff_surjective
code: /-- On a finite-dimensional space, a linear map is injective if and only if it is surjective. -/
theorem injective_iff_surjective [FiniteDimensional K V] {f : V →ₗ[K] V} :
    Injective f ↔ Surjective f 
goal: Function.Injective ⇑f ↔ Function.Surjective ⇑f

full_name: LinearMap.injOn_iff_surjOn
code: lemma injOn_iff_surjOn {p : Submodule K V} [FiniteDimensional K p]
    {f : V →ₗ[K] V} (h : ∀ x ∈ p, f x ∈ p) :
    Set.InjOn f p ↔ Set.SurjOn f p p 
goal: Set.InjOn ⇑f ↑p ↔ Set.SurjOn ⇑f ↑p ↑p

full_name: LinearMap.ker_eq_bot_iff_range_eq_top
code: theorem ker_eq_bot_iff_range_eq_top [FiniteDimensional K V] {f : V →ₗ[K] V} :
    LinearMap.ker f = ⊥ ↔ LinearMap.range f = ⊤ 
goal: LinearMap.ker f = ⊥ ↔ LinearMap.range f = ⊤

full_name: LinearMap.mul_eq_one_of_mul_eq_one
code: /-- In a finite-dimensional space, if linear maps are inverse to each other on one side then they
are also inverse to each other on the other side. -/
theorem mul_eq_one_of_mul_eq_one [FiniteDimensional K V] {f g : V →ₗ[K] V} (hfg : f * g = 1) :
    g * f = 1 
goal: g * f = 1

full_name: LinearMap.mul_eq_one_comm
code: /-- In a finite-dimensional space, linear maps are inverse to each other on one side if and only if
they are inverse to each other on the other side. -/
theorem mul_eq_one_comm [FiniteDimensional K V] {f g : V →ₗ[K] V} : f * g = 1 ↔ g * f = 1 
goal: f * g = 1 ↔ g * f = 1

full_name: LinearMap.comp_eq_id_comm
code: /-- In a finite-dimensional space, linear maps are inverse to each other on one side if and only if
they are inverse to each other on the other side. -/
theorem comp_eq_id_comm [FiniteDimensional K V] {f g : V →ₗ[K] V} : f.comp g = id ↔ g.comp f = id 
goal: f ∘ₗ g = LinearMap.id ↔ g ∘ₗ f = LinearMap.id

full_name: LinearMap.comap_eq_sup_ker_of_disjoint
code: theorem comap_eq_sup_ker_of_disjoint {p : Submodule K V} [FiniteDimensional K p] {f : V →ₗ[K] V}
    (h : ∀ x ∈ p, f x ∈ p) (h' : Disjoint p (ker f)) :
    p.comap f = p ⊔ ker f 
goal: Submodule.comap f p = p ⊔ LinearMap.ker f

full_name: LinearMap.ker_comp_eq_of_commute_of_disjoint_ker
code: theorem ker_comp_eq_of_commute_of_disjoint_ker [FiniteDimensional K V] {f g : V →ₗ[K] V}
    (h : Commute f g) (h' : Disjoint (ker f) (ker g)) :
    ker (f ∘ₗ g) = ker f ⊔ ker g 
goal: LinearMap.ker (f ∘ₗ g) = LinearMap.ker f ⊔ LinearMap.ker g

full_name: LinearMap.ker_noncommProd_eq_of_supIndep_ker
code: theorem ker_noncommProd_eq_of_supIndep_ker [FiniteDimensional K V] {ι : Type*} {f : ι → V →ₗ[K] V}
    (s : Finset ι) (comm) (h : s.SupIndep fun i ↦ ker (f i)) :
    ker (s.noncommProd f comm) = ⨆ i ∈ s, ker (f i) 
goal: LinearMap.ker (s.noncommProd f comm) = ⨆ i ∈ s, LinearMap.ker (f i)

full_name: LinearEquiv.ofInjectiveEndo
code: /-- The linear equivalence corresponding to an injective endomorphism. -/
noncomputable def ofInjectiveEndo (f : V →ₗ[K] V) (h_inj : Injective f) : V ≃ₗ[K] V 
goal: V ≃ₗ[K] V

full_name: LinearEquiv.coe_ofInjectiveEndo
code: @[simp]
theorem coe_ofInjectiveEndo (f : V →ₗ[K] V) (h_inj : Injective f) :
    ⇑(ofInjectiveEndo f h_inj) = f 
goal: ⇑(LinearEquiv.ofInjectiveEndo f h_inj) = ⇑f

full_name: LinearEquiv.ofInjectiveEndo_right_inv
code: @[simp]
theorem ofInjectiveEndo_right_inv (f : V →ₗ[K] V) (h_inj : Injective f) :
    f * (ofInjectiveEndo f h_inj).symm = 1 
goal: f * ↑(LinearEquiv.ofInjectiveEndo f h_inj).symm = 1

full_name: LinearEquiv.ofInjectiveEndo_left_inv
code: @[simp]
theorem ofInjectiveEndo_left_inv (f : V →ₗ[K] V) (h_inj : Injective f) :
    ((ofInjectiveEndo f h_inj).symm : V →ₗ[K] V) * f = 1 
goal: ↑(LinearEquiv.ofInjectiveEndo f h_inj).symm * f = 1

full_name: LinearMap.isUnit_iff_ker_eq_bot
code: theorem isUnit_iff_ker_eq_bot [FiniteDimensional K V] (f : V →ₗ[K] V) :
    IsUnit f ↔ (LinearMap.ker f) = ⊥ 
goal: IsUnit f ↔ LinearMap.ker f = ⊥

full_name: LinearMap.isUnit_iff_range_eq_top
code: theorem isUnit_iff_range_eq_top [FiniteDimensional K V] (f : V →ₗ[K] V) :
    IsUnit f ↔ (LinearMap.range f) = ⊤ 
goal: IsUnit f ↔ LinearMap.range f = ⊤

full_name: finrank_zero_iff_forall_zero
code: theorem finrank_zero_iff_forall_zero [FiniteDimensional K V] : finrank K V = 0 ↔ ∀ x : V, x = 0 
goal: FiniteDimensional.finrank K V = 0 ↔ ∀ (x : V), x = 0

full_name: basisOfFinrankZero
code: /-- If `ι` is an empty type and `V` is zero-dimensional, there is a unique `ι`-indexed basis. -/
noncomputable def basisOfFinrankZero [FiniteDimensional K V] {ι : Type*} [IsEmpty ι]
    (hV : finrank K V = 0) : Basis ι K V 
goal: Basis ι K V

full_name: FiniteDimensional.exists_mul_eq_one
code: lemma FiniteDimensional.exists_mul_eq_one (F : Type*) {K : Type*} [Field F] [Ring K] [IsDomain K]
    [Algebra F K] [FiniteDimensional F K] {x : K} (H : x ≠ 0) : ∃ y, x * y = 1 
goal: ∃ y, x * y = 1

full_name: divisionRingOfFiniteDimensional
code: /-- A domain that is module-finite as an algebra over a field is a division ring. -/
noncomputable def divisionRingOfFiniteDimensional (F K : Type*) [Field F] [Ring K] [IsDomain K]
    [Algebra F K] [FiniteDimensional F K] : DivisionRing K 
goal: DivisionRing K

full_name: fieldOfFiniteDimensional
code: /-- An integral domain that is module-finite as an algebra over a field is a field. -/
noncomputable def fieldOfFiniteDimensional (F K : Type*) [Field F] [h : CommRing K] [IsDomain K]
    [Algebra F K] [FiniteDimensional F K] : Field K 
goal: Field K

full_name: Submodule.finrank_mono
code: theorem finrank_mono [FiniteDimensional K V] : Monotone fun s : Submodule K V => finrank K s 
goal: Monotone fun s => FiniteDimensional.finrank K ↥s

full_name: finrank_span_singleton
code: theorem finrank_span_singleton {v : V} (hv : v ≠ 0) : finrank K (K ∙ v) = 1 
goal: FiniteDimensional.finrank K ↥(Submodule.span K {v}) = 1

full_name: exists_smul_eq_of_finrank_eq_one
code: /-- In a one-dimensional space, any vector is a multiple of any nonzero vector -/
lemma exists_smul_eq_of_finrank_eq_one
    (h : finrank K V = 1) {x : V} (hx : x ≠ 0) (y : V) :
    ∃ (c : K), c • x = y 
goal: ∃ c, c • x = y

full_name: Set.finrank_mono
code: theorem Set.finrank_mono [FiniteDimensional K V] {s t : Set V} (h : s ⊆ t) :
    s.finrank K ≤ t.finrank K 
goal: Set.finrank K s ≤ Set.finrank K t

full_name: finrank_eq_one_iff_of_nonzero
code: /-- A vector space with a nonzero vector `v` has dimension 1 iff `v` spans.
-/
theorem finrank_eq_one_iff_of_nonzero (v : V) (nz : v ≠ 0) :
    finrank K V = 1 ↔ span K ({v} : Set V) = ⊤ 
goal: FiniteDimensional.finrank K V = 1 ↔ Submodule.span K {v} = ⊤

full_name: finrank_eq_one_iff_of_nonzero'
code: /-- A module with a nonzero vector `v` has dimension 1 iff every vector is a multiple of `v`.
-/
theorem finrank_eq_one_iff_of_nonzero' (v : V) (nz : v ≠ 0) :
    finrank K V = 1 ↔ ∀ w : V, ∃ c : K, c • v = w 
goal: FiniteDimensional.finrank K V = 1 ↔ ∀ (w : V), ∃ c, c • v = w

full_name: surjective_of_nonzero_of_finrank_eq_one
code: theorem surjective_of_nonzero_of_finrank_eq_one {W A : Type*} [Semiring A] [Module A V]
    [AddCommGroup W] [Module K W] [Module A W] [LinearMap.CompatibleSMul V W K A]
    (h : finrank K W = 1) {f : V →ₗ[A] W} (w : f ≠ 0) : Surjective f 
goal: Function.Surjective ⇑f

full_name: Subalgebra.finiteDimensional_toSubmodule
code: /-- A `Subalgebra` is `FiniteDimensional` iff it is `FiniteDimensional` as a submodule. -/
theorem Subalgebra.finiteDimensional_toSubmodule {S : Subalgebra F E} :
    FiniteDimensional F (Subalgebra.toSubmodule S) ↔ FiniteDimensional F S 
goal: FiniteDimensional F ↥(Subalgebra.toSubmodule S) ↔ FiniteDimensional F ↥S

full_name: FiniteDimensional.finiteDimensional_subalgebra
code: instance FiniteDimensional.finiteDimensional_subalgebra [FiniteDimensional F E]
    (S : Subalgebra F E) : FiniteDimensional F S 
goal: FiniteDimensional F ↥S

full_name: Subalgebra.finiteDimensional_bot
code: @[deprecated Subalgebra.finite_bot (since := "2024-04-11")]
theorem Subalgebra.finiteDimensional_bot : FiniteDimensional F (⊥ : Subalgebra F E) 
goal: FiniteDimensional F ↥⊥

full_name: Module.End.ker_pow_constant
code: theorem ker_pow_constant {f : End K V} {k : ℕ}
    (h : LinearMap.ker (f ^ k) = LinearMap.ker (f ^ k.succ)) :
    ∀ m, LinearMap.ker (f ^ k) = LinearMap.ker (f ^ (k + m))
  
goal: LinearMap.ker (f ^ k) = LinearMap.ker (f ^ (k + m))