Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Merged by Bors] - feat(ring_theory/localization): integral closure in field extension #3096

Closed
wants to merge 14 commits into from

Conversation

Vierkantor
Copy link
Collaborator

@Vierkantor Vierkantor commented Jun 17, 2020

Let A be an integral domain with field of fractions K and L a finite extension of K. This PR shows the integral closure of A in L has fraction field L. If those definitions existed, the corollary is that the ring of integers of a number field is a number ring.

For this, we need two constructions on polynomials:

  • If p is a nonzero polynomial, integral_normalization p is a monic polynomial with roots z * a for z a root of p and a the leading coefficient of p
  • If f is the localization map from A to K and p has coefficients in K, then f.integer_normalization p is a polynomial with coefficients in A (think: ∀ i, is_integer (f.integer_normalization p).coeff i) with the same roots as p.

@Vierkantor Vierkantor added the awaiting-review The author would like community review of the PR label Jun 17, 2020
@Vierkantor Vierkantor added this to In progress in Basic arithmetic of number fields via automation Jun 17, 2020
@alexjbest
Copy link
Member

Cool! I'm not sure I like the name to_monic though, I fear people might use it when they want to normalize f by dividing by the leading term (over a field say).
I can't really think of a better one though, maybe something like integral_roots_normalization? In the context of the classical rational root theorem that's exactly what it does, rescales the roots so they lie in the integers.

@Vierkantor
Copy link
Collaborator Author

A more descriptive name can't hurt! Perhaps to_base_ring should then be renamed to integer_coeff_normalization?

begin
convert (show eval₂ g x (C s * p) = g s * eval₂ g x p, by rw [eval₂_mul, eval₂_C]),
ext,
rw [coeff_smul, coeff_C_mul]
Copy link
Member

Choose a reason for hiding this comment

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

Can you extract the lemma s • p = C s * p?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I found a lemma C_mul' : C s * p = s • p and used that one. Should it become a simp lemma (in either direction)?

Copy link
Member

Choose a reason for hiding this comment

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

To me it's not clear which side is simp normal form.

src/data/polynomial.lean Outdated Show resolved Hide resolved
@Vierkantor Vierkantor force-pushed the integral_closure_in_field_extension branch from df93930 to c59842d Compare June 22, 2020 08:41
@Vierkantor
Copy link
Collaborator Author

Cool! I'm not sure I like the name to_monic though, I fear people might use it when they want to normalize f by dividing by the leading term (over a field say).
I can't really think of a better one though, maybe something like integral_roots_normalization? In the context of the classical rational root theorem that's exactly what it does, rescales the roots so they lie in the integers.

In the end, I renamed it to integral_normalization because the other name was too long. Alternative suggestions are welcome.

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.

@ChrisHughes24 Shall we merge this? I'm happy with the new names.

@ChrisHughes24
Copy link
Member

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 Jun 24, 2020
bors bot pushed a commit that referenced this pull request Jun 24, 2020
…3096)

Let `A` be an integral domain with field of fractions `K` and `L` a finite extension of `K`. This PR shows the integral closure of `A` in `L` has fraction field `L`. If those definitions existed, the corollary is that the ring of integers of a number field is a number ring.

For this, we need two constructions on polynomials:
 * If `p` is a nonzero polynomial, `integral_normalization p` is a monic polynomial with roots `z * a` for `z` a root of `p` and `a` the leading coefficient of `p`
 * If `f` is the localization map from `A` to `K` and `p` has coefficients in `K`, then `f.integer_normalization p` is a polynomial with coefficients in `A` (think: `∀ i, is_integer (f.integer_normalization p).coeff i`) with the same roots as `p`.
@bors
Copy link

bors bot commented Jun 24, 2020

Build failed:

@sgouezel
Copy link
Collaborator

bors r-

@Vierkantor Vierkantor force-pushed the integral_closure_in_field_extension branch from c59842d to 509cb0e Compare June 24, 2020 08:50
@Vierkantor
Copy link
Collaborator Author

Looks like mul_ne_zero got renamed right after my last rebase on master, fixed. The files in this PR build again, let's see what CI thinks of the rest.

@robertylewis
Copy link
Member

bors r+

bors bot pushed a commit that referenced this pull request Jun 24, 2020
…3096)

Let `A` be an integral domain with field of fractions `K` and `L` a finite extension of `K`. This PR shows the integral closure of `A` in `L` has fraction field `L`. If those definitions existed, the corollary is that the ring of integers of a number field is a number ring.

For this, we need two constructions on polynomials:
 * If `p` is a nonzero polynomial, `integral_normalization p` is a monic polynomial with roots `z * a` for `z` a root of `p` and `a` the leading coefficient of `p`
 * If `f` is the localization map from `A` to `K` and `p` has coefficients in `K`, then `f.integer_normalization p` is a polynomial with coefficients in `A` (think: `∀ i, is_integer (f.integer_normalization p).coeff i`) with the same roots as `p`.
@bors
Copy link

bors bot commented Jun 24, 2020

Pull request successfully merged into master.

Build succeeded:

@bors bors bot changed the title feat(ring_theory/localization): integral closure in field extension [Merged by Bors] - feat(ring_theory/localization): integral closure in field extension Jun 24, 2020
@bors bors bot closed this Jun 24, 2020
Basic arithmetic of number fields automation moved this from In progress to Done Jun 24, 2020
@bryangingechen bryangingechen deleted the integral_closure_in_field_extension branch June 24, 2020 14:20
cipher1024 pushed a commit to cipher1024/mathlib that referenced this pull request Mar 15, 2022
…eanprover-community#3096)

Let `A` be an integral domain with field of fractions `K` and `L` a finite extension of `K`. This PR shows the integral closure of `A` in `L` has fraction field `L`. If those definitions existed, the corollary is that the ring of integers of a number field is a number ring.

For this, we need two constructions on polynomials:
 * If `p` is a nonzero polynomial, `integral_normalization p` is a monic polynomial with roots `z * a` for `z` a root of `p` and `a` the leading coefficient of `p`
 * If `f` is the localization map from `A` to `K` and `p` has coefficients in `K`, then `f.integer_normalization p` is a polynomial with coefficients in `A` (think: `∀ i, is_integer (f.integer_normalization p).coeff i`) with the same roots as `p`.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ready-to-merge All that is left is for bors to build and merge this PR. (Remember you need to say `bors r+`.)
Development

Successfully merging this pull request may close these issues.

None yet

6 participants