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(NumberTheory.NumberField.Units): proof of Dirichlet's unit theorem #5960
Conversation
…_mem_ringOfIntegers_lt (#5650) This PR proves the following result: ```lean theorem exists_ne_zero_mem_ringOfIntegers_lt (h : minkowski_bound K < volume (convex_body_lt K f)) : ∃ (a : 𝓞 K), a ≠ 0 ∧ ∀ w : InfinitePlace K, w a < f w ``` where `f : InfinitePlace K → ℝ≥0` and `convex_body_lt K f` is the set of points `x` such that `‖x w‖ < f w` for all infinite places `w`. This is a key result in the proof of Dirichlet's unit theorem #5960
This is a really nice milestone! It's been quite a journey, but now all the prerequisites are in you're really on the home straight! |
Thanks! It was a very interesting project to work on. And now I have to find something new to work on ;) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There are 21 Finset.
in the file, opening Finset
at the beginning allows to get rid of 20
of them and it seems a good idea.
In any case great work, thanks a lot!
One final comment: we can add instance : Module.Finite ℤ (Additive (𝓞 K)ˣ) but I don't know if it is easy with current mathlib or it's better to wait for another PR. In any case thanks a lot!! bors d+ |
✌️ xroblot can now approve this pull request. To approve and merge a pull request, simply reply with |
It is not so difficult to prove but there is some API missing for things like |
bors r+ |
…em (#5960) We prove Dirichlet's unit theorem. More precisely, the main results are: ```lean def basisModTorsion : Basis (Fin (Units.rank K)) ℤ (Additive ((𝓞 K)ˣ ⧸ (torsion K))) ``` where `Units.rank := Fintype.card (InfinitePlace K) - 1` and ```lean theorem exist_unique_eq_mul_prod (x : (𝓞 K)ˣ) : ∃! (ζ : torsion K) (e : Fin (Units.rank K) → ℤ), x = ζ * ∏ i, (fundSystem K i) ^ (e i) ``` where `fundSystem : Fin (rank K) → (𝓞 K)ˣ` is a fundamental system of units. The exponents in `exist_unique_eq_mul_prod` can be computed via the following result: ```lean theorem fun_eq_repr {x ζ : (𝓞 K)ˣ} {f : Fin (rank K) → ℤ} (hζ : ζ ∈ torsion K) (h : x = ζ * ∏ i, (fundSystem K i) ^ (f i)) : f = (basisModTorsion K).repr (Additive.ofMul ↑x) ```
Pull request successfully merged into master. Build succeeded! The publicly hosted instance of bors-ng is deprecated and will go away soon. If you want to self-host your own instance, instructions are here. If you want to switch to GitHub's built-in merge queue, visit their help page. |
We prove Dirichlet's unit theorem. More precisely, the main results are:
where
Units.rank := Fintype.card (InfinitePlace K) - 1
andwhere
fundSystem : Fin (rank K) → (𝓞 K)ˣ
is a fundamental system of units.The exponents in
exist_unique_eq_mul_prod
can be computed via the following result: