Zulip Chat Archive

Stream: FLT-regular

Topic: zeta vs zeta'


Eric Rodriguez (Dec 27 2021 at 19:08):

do we have any particular reason to keep zeta around? to me it seems that zeta' is much better behaved

Alex J. Best (Dec 27 2021 at 19:44):

Sometimes you really want to consider zeta' as a unit right?

Alex J. Best (Dec 27 2021 at 19:45):

Even if it's not used as much i find it hard to imagine it's totally useless

Eric Rodriguez (Dec 28 2021 at 00:50):

I think we can certainly make the current zeta' be a unit; I just worry because it uses the explicit constructions and I'd rather avoid that if possible

Eric Rodriguez (Dec 28 2021 at 00:52):

hmm, there's a lot of zeta in Unit_lemmas... I'll have a toy with this at some point

Eric Rodriguez (Dec 28 2021 at 01:27):

ooh, we can even put it in the roots_of_unity subgroup

Eric Rodriguez (Dec 28 2021 at 01:30):

even unconditionally, with Riccardo's power stuff; it's only primitive on the ne_zero (n : R) case though

Riccardo Brasca (Dec 28 2021 at 03:16):

We can maybe change the name, using zeta for zeta' and something like zeta_unit for zeta.

Riccardo Brasca (Dec 28 2021 at 03:17):

In any case we know the order of zeta', it is given by is_root_cyclotomic_iff_char_p when ne_zero does not hold, but I think we can safely assume ne_zero.

Eric Rodriguez (Dec 28 2021 at 04:43):

I started toying with this; I think it's definitely worth having zeta and zeta_root_of_unity involved. Here's some work on this; no renaming and no removing of the old zeta yet, but if people want to push anything here, feel free!

Eric Rodriguez (Dec 28 2021 at 04:44):

We'll get some of the theorems for free, too, from roots_of_unity :)

Riccardo Brasca (Dec 28 2021 at 16:34):

Good! The definition of cyclotomic extension is now in mathlib: I will keep on PRing small properties, but the next relevant step is to have zeta and their basic properties. Do you agree on using zeta instead of zeta'?

Chris Birkbeck (Dec 28 2021 at 16:50):

I'm confused about which is which now. zeta' is the root of the cyclotomic poly and zeta is the same thing but as an element of the units of the ring of integers?

Chris Birkbeck (Dec 28 2021 at 16:53):

In the proof I guess the main one will be zeta as most of the arguments happen in the ring of integers.

Riccardo Brasca (Dec 28 2021 at 16:53):

For now zeta' is any root the the cyclotomic polynomial:

def zeta' : B :=
classical.some (exists_root (set.mem_singleton n) :  r : B, aeval r (cyclotomic n A) = 0)

Riccardo Brasca (Dec 28 2021 at 16:53):

So it is an element of the big algebra, and we know is_primitive_root (zeta') (with the appropriate assumptions).

Eric Rodriguez (Dec 28 2021 at 16:58):

the current zeta has a fair few typeclass issues... I should put this thread in the code; we can rederive some instances so hopefully TC search doesn't do this

Alex J. Best (Dec 28 2021 at 16:58):

Renaming zeta' to zeta and zeta to zeta_unit or something sounds sensible to me, sorry for the original non descriptive name

Chris Birkbeck (Dec 28 2021 at 17:00):

Yeah I agree, the name zeta_unit is a good idea.

Eric Rodriguez (Dec 28 2021 at 17:01):

do people like my new definition in the branch? I think we can get easily that it's in the ring of integers (we can probably make an is_cyclotomic_extension instance for ring_of_integers K for K : is_cyclotomic_extension)

Chris Birkbeck (Dec 28 2021 at 17:04):

I like it being a root of unity. If we can easily make it into an element of the ring of integers, then I think that's fine. Does this fix any of these TC issues?

Riccardo Brasca (Dec 28 2021 at 17:05):

Sorry, which branch?

Chris Birkbeck (Dec 28 2021 at 17:05):

(I haven't really followed the discussion on these TC issues)

Eric Rodriguez (Dec 28 2021 at 17:05):

https://github.com/leanprover-community/flt-regular/commits/zeta_refactor

Eric Rodriguez (Dec 28 2021 at 17:05):

the TC issues aren't really fleshed out, I'm still digging around because it's not really an easy to fix issue

Chris Birkbeck (Dec 28 2021 at 17:06):

Aha I see.

Riccardo Brasca (Dec 28 2021 at 17:07):

Having zeta as a root of unity seems a very good idea!

Riccardo Brasca (Dec 28 2021 at 17:08):

I guess we are not loosing anything, and we can use the existing API for roots of unity

Eric Rodriguez (Dec 31 2021 at 04:50):

I've pushed some more onto that branch, I think it's nearly there. If anyone has any suggestions (either golfing or maths) for the ring_of_integers proof, please let me know. I think it may require fintype S; I don't see how it would, but if helps to consider S as a singleton, I feel like that's fine too

Riccardo Brasca (Dec 31 2021 at 13:50):

I don't have a lot of time today, I will try to have a look during the weekend, but if it compiles feel free to merge into master

Riccardo Brasca (Jan 02 2022 at 16:49):

I will check this tomorrow, sorry for the delay

Eric Rodriguez (Jan 02 2022 at 16:54):

no worries ^^ I've been very busy too so also not had much time to do things

Riccardo Brasca (Jan 03 2022 at 15:10):

@Eric Rodriguez the class ne_zero is now in mathib, right? If there there are no more PR to wait for I think we should first of all start using it everywhere

Riccardo Brasca (Jan 03 2022 at 15:11):

And then refactor zeta

Riccardo Brasca (Jan 03 2022 at 15:15):

Ah, bors failed in #11071 because of some changes in master. @Johan Commelin since it is now fixed, can you merge it? Thank you!

Eric Rodriguez (Jan 03 2022 at 22:00):

ahh, I was already bumping master Riccardo! should've said here, sorry ^^

Riccardo Brasca (Jan 03 2022 at 22:26):

:grinning_face_with_smiling_eyes:

Riccardo Brasca (Jan 03 2022 at 22:27):

No problem! Have you already finished the bump?

Eric Rodriguez (Jan 03 2022 at 22:29):

no, doing some of the leaf files right now

Eric Rodriguez (Jan 03 2022 at 22:29):

give me a couple minutes and I'll push what I have

Riccardo Brasca (Jan 03 2022 at 22:30):

OK, I've fixed src/ready_for_mathlib/cyclotomic/basic.lean and src/ready_for_mathlib/cyclotomic.lean.

Riccardo Brasca (Jan 03 2022 at 22:30):

I've added two simple lemmas in src/ready_for_mathlib/ne_zero.lean. I will PR them later

Eric Rodriguez (Jan 03 2022 at 22:39):

btw, ne_nat exists as (ne_zero.of_ne_zero_coe R).out; a bit of a motuhful, I agree, but that's mathlib naming for ya...

Riccardo Brasca (Jan 03 2022 at 22:41):

So let's throw the whole file away

Eric Rodriguez (Jan 03 2022 at 22:49):

there was actually some other lemmas that I put in therre ^^ sorry for overriding half the stuff, but I merged now

Eric Rodriguez (Jan 03 2022 at 22:50):

I've been trying to use no_zero_smul_divisors a bit more because it seems to be a bit easier to scale than injective algerbra maps (they're equivalent); otherwise we just did pretty much the same

Eric Rodriguez (Jan 03 2022 at 22:50):

I also messed a little with cycl_poly; the last lemma now takes ne_zero and doesn't require 0 < k

Eric Rodriguez (Jan 03 2022 at 22:50):

I'm going to work on the discirminant file now

Eric Rodriguez (Jan 03 2022 at 22:56):

ok, the bump should be done now

Riccardo Brasca (Jan 03 2022 at 23:00):

I also get some timeout in src/number_theory/cyclotomic/cyclotomic_units.lean, but it compiles in the terminal

Riccardo Brasca (Jan 03 2022 at 23:02):

BTW if you want to make it working in VS Code it suffices to increase the time limit

Eric Rodriguez (Jan 03 2022 at 23:07):

yeah, it's so weird... anyways, hopefully that will be gone with the remaster soon so

Eric Rodriguez (Jan 03 2022 at 23:08):

refactor*...

Eric Rodriguez (Jan 04 2022 at 05:56):

ok, zeta_refactors _builds_; I broke a lot of your stuff though, @Alex J. Best ; if you have any free time at some point would be great if you could take a look. The more I think about it I think I used the wrong zeta over in your stuff

Eric Rodriguez (Jan 04 2022 at 05:57):

and so I had to sorry a few previously unsorried things. I'll see if I can think about those things a bit more carefully tomorrow

Eric Rodriguez (Jan 04 2022 at 05:58):

quicklink: https://github.com/leanprover-community/flt-regular/tree/zeta_refactor

Riccardo Brasca (Jan 10 2022 at 13:39):

@Eric Rodriguez what is the situation with your refactor of zeta? I would like to PR the definition and some basic properties

Eric Rodriguez (Jan 10 2022 at 14:42):

still just trying to crack on and deal with some ring of integers stuff, feel free to merge but stuff isn't quite at feature parity yet

Eric Rodriguez (Jan 10 2022 at 22:00):

ohhh, I see what the issue is, and how to get around ir

Eric Rodriguez (Jan 10 2022 at 22:01):

essentially, I wanted to define is_cyclotomic_extension (O K) (O L) for is_cyclotomic_extension K L, but this doesn't work

Eric Rodriguez (Jan 10 2022 at 22:01):

we instead have is_cyclotomic_extension (O K) (cyclotomic_ring blah O K), and it is a theorem of Q that cyclotomic_ring O K is O L

Eric Rodriguez (Jan 10 2022 at 22:02):

which is what you're proving right now riccardo

Eric Rodriguez (Jan 10 2022 at 22:02):

so i'm just going to try to get the current stuff building somehow and then work from there

Riccardo Brasca (Jan 10 2022 at 22:11):

Yes, currently the definition of cyclotomic_ring is the ring obtained adjoining the roots of the cyclotomic polynomials. In particular the proof that it is a cyclotomic extension should be easy (maybe it's even already there). The difficult part is that in the case of Q it is also the integral closure of Z.

Riccardo Brasca (Jan 10 2022 at 22:19):

If your new definition works don't hesitate to merge into master!

Riccardo Brasca (Jan 10 2022 at 22:19):

Don't worry if you add some more sorry

Riccardo Brasca (Jan 11 2022 at 15:57):

I've merged master in zeta_refactor

Riccardo Brasca (Jan 11 2022 at 16:00):

And I am trying to fix the errors

Riccardo Brasca (Jan 11 2022 at 16:30):

@Eric Rodriguez It now compiles (I just had to add some sorry, we will fix them sooner or later). I think having zeta instead of zeta' is better. If you are satisfied with the definition you can merge into master.

Riccardo Brasca (Jan 11 2022 at 16:31):

We are now quite close to the computation of the ring of integers of the cyclotomic extension of the rationals, that is already a non trivial result, so I would like to PR all the stuff leading to it quite soon.

Eric Rodriguez (Jan 11 2022 at 17:07):

sure, argh sorry didn't want to break people's stuff but will merge then

Eric Rodriguez (Jan 11 2022 at 17:16):

oki, done, i'll now add docstrings and things will build again

Eric Rodriguez (Dec 27 2021 at 19:08):

do we have any particular reason to keep zeta around? to me it seems that zeta' is much better behaved

Alex J. Best (Dec 27 2021 at 19:44):

Sometimes you really want to consider zeta' as a unit right?

Alex J. Best (Dec 27 2021 at 19:45):

Even if it's not used as much i find it hard to imagine it's totally useless

Eric Rodriguez (Dec 28 2021 at 00:50):

I think we can certainly make the current zeta' be a unit; I just worry because it uses the explicit constructions and I'd rather avoid that if possible

Eric Rodriguez (Dec 28 2021 at 00:52):

hmm, there's a lot of zeta in Unit_lemmas... I'll have a toy with this at some point

Eric Rodriguez (Dec 28 2021 at 01:27):

ooh, we can even put it in the roots_of_unity subgroup

Eric Rodriguez (Dec 28 2021 at 01:30):

even unconditionally, with Riccardo's power stuff; it's only primitive on the ne_zero (n : R) case though

Riccardo Brasca (Dec 28 2021 at 03:16):

We can maybe change the name, using zeta for zeta' and something like zeta_unit for zeta.

Riccardo Brasca (Dec 28 2021 at 03:17):

In any case we know the order of zeta', it is given by is_root_cyclotomic_iff_char_p when ne_zero does not hold, but I think we can safely assume ne_zero.

Eric Rodriguez (Dec 28 2021 at 04:43):

I started toying with this; I think it's definitely worth having zeta and zeta_root_of_unity involved. Here's some work on this; no renaming and no removing of the old zeta yet, but if people want to push anything here, feel free!

Eric Rodriguez (Dec 28 2021 at 04:44):

We'll get some of the theorems for free, too, from roots_of_unity :)

Riccardo Brasca (Dec 28 2021 at 16:34):

Good! The definition of cyclotomic extension is now in mathlib: I will keep on PRing small properties, but the next relevant step is to have zeta and their basic properties. Do you agree on using zeta instead of zeta'?

Chris Birkbeck (Dec 28 2021 at 16:50):

I'm confused about which is which now. zeta' is the root of the cyclotomic poly and zeta is the same thing but as an element of the units of the ring of integers?

Chris Birkbeck (Dec 28 2021 at 16:53):

In the proof I guess the main one will be zeta as most of the arguments happen in the ring of integers.

Riccardo Brasca (Dec 28 2021 at 16:53):

For now zeta' is any root the the cyclotomic polynomial:

def zeta' : B :=
classical.some (exists_root (set.mem_singleton n) :  r : B, aeval r (cyclotomic n A) = 0)

Riccardo Brasca (Dec 28 2021 at 16:53):

So it is an element of the big algebra, and we know is_primitive_root (zeta') (with the appropriate assumptions).

Eric Rodriguez (Dec 28 2021 at 16:58):

the current zeta has a fair few typeclass issues... I should put this thread in the code; we can rederive some instances so hopefully TC search doesn't do this

Alex J. Best (Dec 28 2021 at 16:58):

Renaming zeta' to zeta and zeta to zeta_unit or something sounds sensible to me, sorry for the original non descriptive name

Chris Birkbeck (Dec 28 2021 at 17:00):

Yeah I agree, the name zeta_unit is a good idea.

Eric Rodriguez (Dec 28 2021 at 17:01):

do people like my new definition in the branch? I think we can get easily that it's in the ring of integers (we can probably make an is_cyclotomic_extension instance for ring_of_integers K for K : is_cyclotomic_extension)

Chris Birkbeck (Dec 28 2021 at 17:04):

I like it being a root of unity. If we can easily make it into an element of the ring of integers, then I think that's fine. Does this fix any of these TC issues?

Riccardo Brasca (Dec 28 2021 at 17:05):

Sorry, which branch?

Chris Birkbeck (Dec 28 2021 at 17:05):

(I haven't really followed the discussion on these TC issues)

Eric Rodriguez (Dec 28 2021 at 17:05):

https://github.com/leanprover-community/flt-regular/commits/zeta_refactor

Eric Rodriguez (Dec 28 2021 at 17:05):

the TC issues aren't really fleshed out, I'm still digging around because it's not really an easy to fix issue

Chris Birkbeck (Dec 28 2021 at 17:06):

Aha I see.

Riccardo Brasca (Dec 28 2021 at 17:07):

Having zeta as a root of unity seems a very good idea!

Riccardo Brasca (Dec 28 2021 at 17:08):

I guess we are not loosing anything, and we can use the existing API for roots of unity

Eric Rodriguez (Dec 31 2021 at 04:50):

I've pushed some more onto that branch, I think it's nearly there. If anyone has any suggestions (either golfing or maths) for the ring_of_integers proof, please let me know. I think it may require fintype S; I don't see how it would, but if helps to consider S as a singleton, I feel like that's fine too

Riccardo Brasca (Dec 31 2021 at 13:50):

I don't have a lot of time today, I will try to have a look during the weekend, but if it compiles feel free to merge into master

Riccardo Brasca (Jan 02 2022 at 16:49):

I will check this tomorrow, sorry for the delay

Eric Rodriguez (Jan 02 2022 at 16:54):

no worries ^^ I've been very busy too so also not had much time to do things

Riccardo Brasca (Jan 03 2022 at 15:10):

@Eric Rodriguez the class ne_zero is now in mathib, right? If there there are no more PR to wait for I think we should first of all start using it everywhere

Riccardo Brasca (Jan 03 2022 at 15:11):

And then refactor zeta

Riccardo Brasca (Jan 03 2022 at 15:15):

Ah, bors failed in #11071 because of some changes in master. @Johan Commelin since it is now fixed, can you merge it? Thank you!

Eric Rodriguez (Jan 03 2022 at 22:00):

ahh, I was already bumping master Riccardo! should've said here, sorry ^^

Riccardo Brasca (Jan 03 2022 at 22:26):

:grinning_face_with_smiling_eyes:

Riccardo Brasca (Jan 03 2022 at 22:27):

No problem! Have you already finished the bump?

Eric Rodriguez (Jan 03 2022 at 22:29):

no, doing some of the leaf files right now

Eric Rodriguez (Jan 03 2022 at 22:29):

give me a couple minutes and I'll push what I have

Riccardo Brasca (Jan 03 2022 at 22:30):

OK, I've fixed src/ready_for_mathlib/cyclotomic/basic.lean and src/ready_for_mathlib/cyclotomic.lean.

Riccardo Brasca (Jan 03 2022 at 22:30):

I've added two simple lemmas in src/ready_for_mathlib/ne_zero.lean. I will PR them later

Eric Rodriguez (Jan 03 2022 at 22:39):

btw, ne_nat exists as (ne_zero.of_ne_zero_coe R).out; a bit of a motuhful, I agree, but that's mathlib naming for ya...

Riccardo Brasca (Jan 03 2022 at 22:41):

So let's throw the whole file away

Eric Rodriguez (Jan 03 2022 at 22:49):

there was actually some other lemmas that I put in therre ^^ sorry for overriding half the stuff, but I merged now

Eric Rodriguez (Jan 03 2022 at 22:50):

I've been trying to use no_zero_smul_divisors a bit more because it seems to be a bit easier to scale than injective algerbra maps (they're equivalent); otherwise we just did pretty much the same

Eric Rodriguez (Jan 03 2022 at 22:50):

I also messed a little with cycl_poly; the last lemma now takes ne_zero and doesn't require 0 < k

Eric Rodriguez (Jan 03 2022 at 22:50):

I'm going to work on the discirminant file now

Eric Rodriguez (Jan 03 2022 at 22:56):

ok, the bump should be done now

Riccardo Brasca (Jan 03 2022 at 23:00):

I also get some timeout in src/number_theory/cyclotomic/cyclotomic_units.lean, but it compiles in the terminal

Riccardo Brasca (Jan 03 2022 at 23:02):

BTW if you want to make it working in VS Code it suffices to increase the time limit

Eric Rodriguez (Jan 03 2022 at 23:07):

yeah, it's so weird... anyways, hopefully that will be gone with the remaster soon so

Eric Rodriguez (Jan 03 2022 at 23:08):

refactor*...

Eric Rodriguez (Jan 04 2022 at 05:56):

ok, zeta_refactors _builds_; I broke a lot of your stuff though, @Alex J. Best ; if you have any free time at some point would be great if you could take a look. The more I think about it I think I used the wrong zeta over in your stuff

Eric Rodriguez (Jan 04 2022 at 05:57):

and so I had to sorry a few previously unsorried things. I'll see if I can think about those things a bit more carefully tomorrow

Eric Rodriguez (Jan 04 2022 at 05:58):

quicklink: https://github.com/leanprover-community/flt-regular/tree/zeta_refactor

Riccardo Brasca (Jan 10 2022 at 13:39):

@Eric Rodriguez what is the situation with your refactor of zeta? I would like to PR the definition and some basic properties

Eric Rodriguez (Jan 10 2022 at 14:42):

still just trying to crack on and deal with some ring of integers stuff, feel free to merge but stuff isn't quite at feature parity yet

Eric Rodriguez (Jan 10 2022 at 22:00):

ohhh, I see what the issue is, and how to get around ir

Eric Rodriguez (Jan 10 2022 at 22:01):

essentially, I wanted to define is_cyclotomic_extension (O K) (O L) for is_cyclotomic_extension K L, but this doesn't work

Eric Rodriguez (Jan 10 2022 at 22:01):

we instead have is_cyclotomic_extension (O K) (cyclotomic_ring blah O K), and it is a theorem of Q that cyclotomic_ring O K is O L

Eric Rodriguez (Jan 10 2022 at 22:02):

which is what you're proving right now riccardo

Eric Rodriguez (Jan 10 2022 at 22:02):

so i'm just going to try to get the current stuff building somehow and then work from there

Riccardo Brasca (Jan 10 2022 at 22:11):

Yes, currently the definition of cyclotomic_ring is the ring obtained adjoining the roots of the cyclotomic polynomials. In particular the proof that it is a cyclotomic extension should be easy (maybe it's even already there). The difficult part is that in the case of Q it is also the integral closure of Z.

Riccardo Brasca (Jan 10 2022 at 22:19):

If your new definition works don't hesitate to merge into master!

Riccardo Brasca (Jan 10 2022 at 22:19):

Don't worry if you add some more sorry

Riccardo Brasca (Jan 11 2022 at 15:57):

I've merged master in zeta_refactor

Riccardo Brasca (Jan 11 2022 at 16:00):

And I am trying to fix the errors

Riccardo Brasca (Jan 11 2022 at 16:30):

@Eric Rodriguez It now compiles (I just had to add some sorry, we will fix them sooner or later). I think having zeta instead of zeta' is better. If you are satisfied with the definition you can merge into master.

Riccardo Brasca (Jan 11 2022 at 16:31):

We are now quite close to the computation of the ring of integers of the cyclotomic extension of the rationals, that is already a non trivial result, so I would like to PR all the stuff leading to it quite soon.

Eric Rodriguez (Jan 11 2022 at 17:07):

sure, argh sorry didn't want to break people's stuff but will merge then

Eric Rodriguez (Jan 11 2022 at 17:16):

oki, done, i'll now add docstrings and things will build again


Last updated: Dec 20 2023 at 11:08 UTC