Skip to content

Commit

Permalink
feat(ring_theory/ideal): (I : ideal R) • (⊤ : submodule R M) (#12178)
Browse files Browse the repository at this point in the history
Two useful lemmas on the submodule spanned by `I`-scalar multiples.





Co-authored-by: Anne Baanen <Vierkantor@users.noreply.github.com>
  • Loading branch information
Vierkantor and Vierkantor committed Mar 3, 2022
1 parent 26d9d38 commit 4dec7b5
Showing 1 changed file with 30 additions and 0 deletions.
30 changes: 30 additions & 0 deletions src/ring_theory/ideal/operations.lean
Expand Up @@ -115,6 +115,14 @@ smul_mono h (le_refl N)
theorem smul_mono_right (h : N ≤ P) : I • N ≤ I • P :=
smul_mono (le_refl I) h

lemma map_le_smul_top (I : ideal R) (f : R →ₗ[R] M) :
submodule.map f I ≤ I • (⊤ : submodule R M) :=
begin
rintros _ ⟨y, hy, rfl⟩,
rw [← mul_one y, ← smul_eq_mul, f.map_smul],
exact smul_mem_smul hy mem_top
end

@[simp] theorem annihilator_smul (N : submodule R M) : annihilator N • N = ⊥ :=
eq_bot_iff.2 (smul_le.2 (λ r, mem_annihilator.1))

Expand Down Expand Up @@ -984,6 +992,28 @@ theorem map_inf_le : map f (I ⊓ J) ≤ map f I ⊓ map f J :=
theorem le_comap_sup : comap f K ⊔ comap f L ≤ comap f (K ⊔ L) :=
(gc_map_comap f).monotone_u.le_map_sup _ _

@[simp] lemma smul_top_eq_map {R S : Type*} [comm_semiring R] [comm_semiring S] [algebra R S]
(I : ideal R) : I • (⊤ : submodule R S) = (I.map (algebra_map R S)).restrict_scalars R :=
begin
refine le_antisymm (submodule.smul_le.mpr (λ r hr y _, _) )
(λ x hx, submodule.span_induction hx _ _ _ _),
{ rw algebra.smul_def,
exact mul_mem_right _ _ (mem_map_of_mem _ hr) },

{ rintros _ ⟨x, hx, rfl⟩,
rw [← mul_one (algebra_map R S x), ← algebra.smul_def],
exact submodule.smul_mem_smul hx submodule.mem_top },
{ exact submodule.zero_mem _ },
{ intros x y, exact submodule.add_mem _ },
intros a x hx,
refine submodule.smul_induction_on hx _ _,
{ intros r hr s hs,
rw smul_comm,
exact submodule.smul_mem_smul hr submodule.mem_top },
{ intros x y hx hy,
rw smul_add, exact submodule.add_mem _ hx hy },
end

section surjective
variables (hf : function.surjective f)
include hf
Expand Down

0 comments on commit 4dec7b5

Please sign in to comment.