Skip to content
This repository has been archived by the owner on Jul 24, 2024. It is now read-only.

[Merged by Bors] - feat(ring_theory/noetherian): add two lemmas on products of prime ideals #5013

Closed
wants to merge 36 commits into from

Conversation

faenuccio
Copy link
Collaborator

Add two lemmas saying that in a noetherian ring (resp. integral domain) every (nonzero) ideal contains a (nonzero) product of prime ideals.


@faenuccio faenuccio added the awaiting-review The author would like community review of the PR label Nov 16, 2020
Merge branch 'master' into prime_prod
Copy link
Collaborator

@Vierkantor Vierkantor left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice results! I extracted a pair of lemmas that can shorten the proofs considerably. I also commented with some tips for how to code slicker proofs, but overall it was already pleasant to read.

src/ring_theory/noetherian.lean Outdated Show resolved Hide resolved
src/ring_theory/noetherian.lean Outdated Show resolved Hide resolved
src/ring_theory/noetherian.lean Outdated Show resolved Hide resolved
src/ring_theory/noetherian.lean Outdated Show resolved Hide resolved
Comment on lines 556 to 563
obtain ⟨x, y, hx, hy, h_xy⟩ : ∃ (x y : R), x ∉ M ∧ y ∉ M ∧ x * y ∈ M,
{ rw [ideal.is_prime, not_and] at h_not_prM,
specialize h_not_prM h_not_topM,
rw not_forall at h_not_prM,
cases h_not_prM with x hx,
rw not_forall at hx,
cases hx with y hxy,
use [x, y], finish },
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Golfing:

  obtain ⟨x, y, hxy, hx, hy⟩ : ∃ (x y : R), x * y ∈ M ∧ x ∉ M ∧ y ∉ M,
  { rw [ideal.is_prime, not_and] at h_not_prM,
    specialize h_not_prM h_not_topM,
    push_neg at h_not_prM,
    assumption },

src/ring_theory/noetherian.lean Outdated Show resolved Hide resolved
src/ring_theory/noetherian.lean Outdated Show resolved Hide resolved
begin
have hA_nont : nontrivial A,
apply is_integral_domain.to_nontrivial (integral_domain.to_is_integral_domain A),
by_cases h_topI : I < ⊤,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I prefer to deal with the easy case first:

  by_cases h_topI : I = ⊤,
  { rcases h_topI with rfl,
    obtain ⟨p_id, h_nzp, h_pp⟩ : ∃ (p : ideal A), p ≠ 0 ∧ p.is_prime,
    { apply ring.not_is_field_iff_exists_prime.mp h_fA },
    let p : prime_spectrum A := ⟨p_id, h_pp⟩,
    use [({p} : multiset (prime_spectrum A)), le_top],
    rwa [multiset.map_singleton, multiset.singleton_eq_singleton, multiset.prod_singleton] },
  ...

src/ring_theory/noetherian.lean Outdated Show resolved Hide resolved
src/ring_theory/noetherian.lean Outdated Show resolved Hide resolved
faenuccio and others added 3 commits November 16, 2020 15:00
Co-authored-by: Anne Baanen <Vierkantor@users.noreply.github.com>
@Vierkantor Vierkantor added awaiting-author A reviewer has asked the author a question or requested changes and removed awaiting-review The author would like community review of the PR labels Nov 16, 2020
@faenuccio faenuccio added awaiting-review The author would like community review of the PR and removed awaiting-author A reviewer has asked the author a question or requested changes labels Nov 17, 2020
Copy link
Collaborator Author

@faenuccio faenuccio left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

src/ring_theory/noetherian.lean Outdated Show resolved Hide resolved
src/ring_theory/noetherian.lean Outdated Show resolved Hide resolved
src/ring_theory/noetherian.lean Outdated Show resolved Hide resolved
src/ring_theory/noetherian.lean Outdated Show resolved Hide resolved
@faenuccio
Copy link
Collaborator Author

I have implemented all requested changes with two minor modifications:

  1. I have renamed is.noetherian_induction to proposition_noetherian_induction, partly because Lint-style check was complaining and partly because I find it a more intuitive name;

  2. I have added commas at the end of proofs to have VSCode show the "Goals completed!" info.

Copy link
Collaborator

@Vierkantor Vierkantor left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

With these two small tweaks I'm happy. Let's get an independent reviewer too.

src/ring_theory/noetherian.lean Outdated Show resolved Hide resolved
src/ring_theory/noetherian.lean Outdated Show resolved Hide resolved
faenuccio and others added 3 commits November 17, 2020 10:23
Co-authored-by: Anne Baanen <Vierkantor@users.noreply.github.com>
Co-authored-by: Anne Baanen <Vierkantor@users.noreply.github.com>
@faenuccio
Copy link
Collaborator Author

Great, I have implemented these two changes.

src/ring_theory/noetherian.lean Outdated Show resolved Hide resolved
src/ring_theory/noetherian.lean Show resolved Hide resolved
src/ring_theory/noetherian.lean Outdated Show resolved Hide resolved
faenuccio and others added 3 commits November 17, 2020 10:55
Co-authored-by: Johan Commelin <johan@commelin.net>
Co-authored-by: Johan Commelin <johan@commelin.net>
Co-authored-by: Johan Commelin <johan@commelin.net>
Copy link
Member

@jcommelin jcommelin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks 🎉

bors merge

@github-actions github-actions bot added ready-to-merge All that is left is for bors to build and merge this PR. (Remember you need to say `bors r+`.) and removed awaiting-review The author would like community review of the PR labels Nov 17, 2020
bors bot pushed a commit that referenced this pull request Nov 17, 2020
…als (#5013)

Add two lemmas saying that in a noetherian ring (resp. _integral domain)_ every (_nonzero_) ideal contains a (_nonzero_) product of prime ideals.



Co-authored-by: faenuccio <65080144+faenuccio@users.noreply.github.com>
@bors
Copy link

bors bot commented Nov 17, 2020

Pull request successfully merged into master.

Build succeeded:

@bors bors bot changed the title feat(ring_theory/noetherian): add two lemmas on products of prime ideals [Merged by Bors] - feat(ring_theory/noetherian): add two lemmas on products of prime ideals Nov 17, 2020
@bors bors bot closed this Nov 17, 2020
@bors bors bot deleted the prime_prod branch November 17, 2020 14:50
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
ready-to-merge All that is left is for bors to build and merge this PR. (Remember you need to say `bors r+`.)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants