Module docstring
{"# Subalgebras that are finitely generated as submodules "}
{"# Subalgebras that are finitely generated as submodules "}
Subalgebra.fg_bot_toSubmodule
theorem
: (⊥ : Subalgebra R A).toSubmodule.FG
theorem fg_bot_toSubmodule : (⊥ : Subalgebra R A).toSubmodule.FG :=
⟨{1}, by simp [Algebra.toSubmodule_bot, one_eq_span]⟩
Subalgebra.finite_bot
instance
: Module.Finite R (⊥ : Subalgebra R A)
instance finite_bot : Module.Finite R (⊥ : Subalgebra R A) :=
Module.Finite.range (Algebra.linearMap R A)
Submodule.fg_unit
theorem
{R A : Type*} [CommSemiring R] [Semiring A] [Algebra R A] (I : (Submodule R A)ˣ) : (I : Submodule R A).FG
theorem fg_unit {R A : Type*} [CommSemiring R] [Semiring A] [Algebra R A] (I : (Submodule R A)ˣ) :
(I : Submodule R A).FG := by
obtain ⟨T, T', hT, hT', one_mem⟩ := mem_span_mul_finite_of_mem_mul (I.mul_inv ▸ one_le.mp le_rfl)
refine ⟨T, span_eq_of_le _ hT ?_⟩
rw [← one_mul I, ← mul_one (span R (T : Set A))]
conv_rhs => rw [← I.inv_mul, ← mul_assoc]
refine mul_le_mul_left (le_trans ?_ <| mul_le_mul_right <| span_le.mpr hT')
rwa [Units.val_one, span_mul_span, one_le]
Submodule.fg_of_isUnit
theorem
{R A : Type*} [CommSemiring R] [Semiring A] [Algebra R A] {I : Submodule R A} (hI : IsUnit I) : I.FG
theorem fg_of_isUnit {R A : Type*} [CommSemiring R] [Semiring A] [Algebra R A] {I : Submodule R A}
(hI : IsUnit I) : I.FG :=
fg_unit hI.unit
Submodule.FG.mul
theorem
(hm : M.FG) (hn : N.FG) : (M * N).FG
Submodule.FG.pow
theorem
(h : M.FG) (n : ℕ) : (M ^ n).FG