Zulip Chat Archive

Stream: maths

Topic: Fermat Last Theorem for regular primes


Riccardo Brasca (Oct 25 2021 at 09:43):

Dear all,
together with @Alex J. Best, @Chris Birkbeck and @Antoine Chambert-Loir we are interested proving the Fermat Last Theorem for regular primes. Of course everyone is very welcome to join the project, it would be nice to run it similarly to a (very) small LTE. I think Alex already has some code, but we didn't do anything serious until now, so if you are already working on this please let us know.

Johan Commelin (Oct 25 2021 at 10:14):

Great idea!

Johan Commelin (Oct 25 2021 at 12:38):

Do you already have a repo?

Riccardo Brasca (Oct 25 2021 at 12:41):

I am trying to understand what is the best option to do it

Riccardo Brasca (Oct 25 2021 at 12:41):

All suggestions are very welcome

Johan Commelin (Oct 25 2021 at 12:42):

leanproject new flt-regular

Johan Commelin (Oct 25 2021 at 12:42):

And then you need to create an empty repo on github and push it there.

Johan Commelin (Oct 25 2021 at 12:42):

If you want to host it on the leanprover-community organization, I can create a repo for you.

Riccardo Brasca (Oct 25 2021 at 12:44):

That would be awesome!

Johan Commelin (Oct 25 2021 at 12:45):

Do you like flt-regular as name? Or do you want something else? regular-fermat?

Chris Birkbeck (Oct 25 2021 at 12:45):

That would be great. I'm trying to sort out a rough tex file to make a blueprint out of.

Johan Commelin (Oct 25 2021 at 12:46):

If you give me a name, I'll give you a repo (-;

Riccardo Brasca (Oct 25 2021 at 12:47):

flt-regular is perfect

Chris Birkbeck (Oct 25 2021 at 12:47):

I like flt-regular.

Johan Commelin (Oct 25 2021 at 12:49):

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

Johan Commelin (Oct 25 2021 at 12:50):

https://github.com/leanprover-community/flt-regular/invitations

Johan Commelin (Oct 25 2021 at 12:51):

So now, after you do leanproject new flt-regular and cd into the new directory, you should do

git remote add origin git@github.com:leanprover-community/flt-regular.git
git add whatever_leanproject.created
git commit -am 'initial commit'
git push -u origin master

Johan Commelin (Oct 25 2021 at 13:00):

You can also consider creating a new stream. But you can of course also use #maths for the time being.

Johan Commelin (Oct 25 2021 at 13:01):

First question: which definition of regular prime do you plan to use?

Riccardo Brasca (Oct 25 2021 at 13:08):

My idea was to use the class number. We need #9071, but that's going to be in mathlib quite soon I guess. The real first problem is the ring of integers of cyclotmic fields

Riccardo Brasca (Oct 25 2021 at 13:09):

We still have to discuss a good strategy :smile:

Yaël Dillies (Oct 25 2021 at 13:11):

I love how I can just throw ideas around and someone makes a project out of it :grinning:

Johan Commelin (Oct 25 2021 at 13:19):

It's probably the better definition to work with. But will we be able to show that :37: is irregular?

Johan Commelin (Oct 25 2021 at 13:22):

Yaël Dillies said:

I love how I can just throw ideas around and someone makes a project out of it :grinning:

It was Riccardo's idea, right? https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Cyclotomic.20fields/near/258814613

Yaël Dillies (Oct 25 2021 at 13:24):

Riccardo Brasca said:

So maybe it's time for regular primes? This seems an ambitious but not out of reach project.

It was, but I seem to have provoked it :wink:

Riccardo Brasca (Oct 25 2021 at 13:25):

I am really sad that 37 is irregular

Johan Commelin (Oct 25 2021 at 13:26):

#9071 depends on #9606 which seems to be blocked pretty badly.

Johan Commelin (Oct 25 2021 at 13:26):

There are some very nasty timeouts going on there.

Johan Commelin (Oct 25 2021 at 13:27):

Riccardo Brasca said:

I am really sad that 37 is irregular

Why? I think irregularity is indirectly a raison d'être for the :37: emoji.

Eric Rodriguez (Oct 25 2021 at 13:32):

BTW, we can define regularity for all numbers, right?

Riccardo Brasca (Oct 25 2021 at 13:40):

Johan Commelin said:

Riccardo Brasca said:

I am really sad that 37 is irregular

Why? I think irregularity is indirectly a raison d'être for the :37: emoji.

Just because it means we are not proving FLT for 37!

Johan Commelin (Oct 25 2021 at 13:57):

OH NOOO!! There is a for_mathlib/ directory already :rofl:

Johan Commelin (Oct 25 2021 at 13:58):

@Patrick Massot Can you please make creation of this directory part of leanproject new? [/joking]

Riccardo Brasca (Oct 25 2021 at 13:59):

Ahahah it's the first directory I created! :grinning_face_with_smiling_eyes:

Ruben Van de Velde (Oct 25 2021 at 14:07):

Johan Commelin said:

#9071 depends on #9606 which seems to be blocked pretty badly.

We should probably reverse the dependency, since #9606 indeed is not doing well

Johan Commelin (Oct 25 2021 at 14:09):

Is that possible? I thought that #9071 couldn't do without it...

Adam Topaz (Oct 25 2021 at 14:20):

Sounds like a fun project! If I recall correctly cyclotomic 0 is 1, and adjoin_root f is defined to be K[X]/(f), so

instance (n : ) : field (cyclotomic_field n) := sorry

is false for n = 0.

Kevin Buzzard (Oct 25 2021 at 14:23):

This just seems like something which is about positive integers and there is no coherent way to include n=0.

Adam Topaz (Oct 25 2021 at 14:24):

Sure, I was just commenting about one of the sorry's from the brand new for_mathlib folder :)

Adam Topaz (Oct 25 2021 at 14:25):

Maybe cyclotomic_field 0 should be defined to be Q\mathbb{Q}?

Adam Topaz (Oct 25 2021 at 14:25):

Or Q\overline{\mathbb{Q}} since every algebraic number is a 00-th root of unity? :thinking:

Eric Rodriguez (Oct 25 2021 at 14:29):

For the cyclotomic stuff, please look at my recent PRs because they were made for the purpose of cyclotomic fields anyways

Eric Rodriguez (Oct 25 2021 at 14:29):

I think the best option is, as Johan mentioned on one of them, to have an API for the generator of cyclic groups

Adam Topaz (Oct 25 2021 at 14:30):

Are these the PRs that Johan mentioned above?

Johan Commelin (Oct 25 2021 at 14:31):

Nope, that's the PR about class numbers

Adam Topaz (Oct 25 2021 at 14:32):

Oof, why does #9606 break something about cech_nerves?

Kevin Buzzard (Oct 25 2021 at 14:37):

I don't think there's a non-crazy definition of ϕ(0)\phi(0) ("naturals less than n coprime to n" gives 0, "order of units in Z/nZ\Z/n\Z" gives 2) and I don't think there's a non-crazy definition of Φ0\Phi_0 either, you are somehow dividing by 0 to get there.

Adam Topaz (Oct 25 2021 at 14:43):

Sure, but I do think there's a non-crazy definition of Q(μ0)\mathbb{Q}(\mu_0). Namely: Q\overline{\mathbb{Q}}

Adam Topaz (Oct 25 2021 at 14:44):

Anyway, this is silly. No one should ever use μ0\mu_0.

Kevin Buzzard (Oct 25 2021 at 14:44):

Surely the max abelian extension, not the max algebraic extension?

Kevin Buzzard (Oct 25 2021 at 14:46):

Surely μ0\mu_0 is affine 1-space ;-) It represents {rRr0=1}\{r\in R\,|\,r^0=1\}.

Adam Topaz (Oct 25 2021 at 14:47):

Exactly, that's why Q(μ0(Q))=Q\mathbb{Q}(\mu_0(\overline{\mathbb{Q}})) = \overline{\mathbb{Q}}.

Johan Commelin (Oct 25 2021 at 14:48):

Unfortunately roots_of_unity 0 is empty in mathlib...

Adam Topaz (Oct 25 2021 at 14:51):

Oh no! All the junk values are inconsistent.

Reid Barton (Oct 25 2021 at 14:52):

I was about to say, I bet you could fix that easily by setting μ0=μ37\mu_0 = \mu_{37} etc.

Kevin Buzzard (Oct 25 2021 at 14:52):

So there are two questions here -- the funny one, which we've all been indulging in, giving random semi-plausible definitions for all these things at the junk input 0, but there's also the serious one, which is what we should actually do with the definitions. I feel like the definitions are all going to be of the form "if n = 0 then return the following junk value else return the sensible value"

Kevin Buzzard (Oct 25 2021 at 14:53):

actually that's a really good idea. Why not just let the value for 0 be the value for 1 in all cases?

Kevin Buzzard (Oct 25 2021 at 14:53):

Then all the theorems are guaranteed to remain true

Johan Commelin (Oct 25 2021 at 14:54):

I guess that shifts the question to what you mean by "all cases".

Reid Barton (Oct 25 2021 at 14:54):

Also pnat is a thing but I guess that's heresy to suggest

Johan Commelin (Oct 25 2021 at 14:54):

Does this include φ(0)φ(0)?

Johan Commelin (Oct 25 2021 at 14:54):

Because that's defined outside of "number theory". No idea what mathlib does there right now.

Kevin Buzzard (Oct 25 2021 at 14:55):

I guess it would do. My guess is that setting 0=1 is easier than working with pnat but I might be wrong.

Reid Barton (Oct 25 2021 at 14:55):

Kevin Buzzard said:

setting 0=1 is easier

Yes this makes a lot of things easier actually

Adam Topaz (Oct 25 2021 at 14:56):

I wish there was more love for pnat.

Kevin Buzzard (Oct 25 2021 at 14:57):

Maybe this is a good time to try it?

Kevin Buzzard (Oct 25 2021 at 14:57):

The reason for defining junk values usually is to spare us from having to say "oh and also assume n0n\not=0" in 100 places, but if n : pnat then we don't have to say this

Adam Topaz (Oct 25 2021 at 14:58):

E.g. we should probably write down a multiplicative recursor for pnat based on docs#multiset.induction or something.

Riccardo Brasca (Oct 25 2021 at 14:58):

I tried to use pnat when defining cyclotomic polynomials, but it ended up being quite annoying since the API is not as complete as for nat.

Kevin Buzzard (Oct 25 2021 at 14:58):

Right, but if it's just missing lemmas then they can be added. However if it's that we want to use ring then this is more problematic

Johan Commelin (Oct 25 2021 at 15:00):

maybe ring should work for arbitrary commutative distribs?

Kevin Buzzard (Oct 25 2021 at 15:01):

This is the sort of thing which it's easy for me to say, but then someone like Rob or Mario maybe pops up and says "actually that would be a ton of work for very little benefit"

Eric Rodriguez (Oct 25 2021 at 15:02):

One of the primitive roots things is in pnat, so it's definitely at least worth considering. Some PRs of interest: #9778, #9779

Eric Rodriguez (Oct 25 2021 at 15:02):

(these are the ones I meant earlier)

Johan Commelin (Oct 25 2021 at 15:20):

How maths-hard is the proof that cyclotomic regular is equivalent to Bernoulli regular?

Riccardo Brasca (Oct 25 2021 at 15:23):

BTW we have a sorry free def of regular prime (or regular number if you prefer). The class number of an extension of Z is essentially already in mathlib.

Thomas Browning (Oct 25 2021 at 15:24):

I would be very interested in joining this project. Is there anything I should do, or should I just start working on flt-regular?

Johan Commelin (Oct 25 2021 at 15:24):

But provig that 37 is irregular is probably easier with the Bernoulli defn

Kevin Buzzard (Oct 25 2021 at 15:25):

IIRC cyclo regular = Bernoulli regular is proved using the analytic class number formula, so we're blocked by complex analysis

Johan Commelin (Oct 25 2021 at 15:25):

I guess reading Chris's blueprint is a good start?

Thomas Browning (Oct 25 2021 at 15:26):

Washington's Introduction to cyclotomic fields is THE reference for this sort of stuff

Riccardo Brasca (Oct 25 2021 at 15:26):

@Johan Commelin can you add a flt_regular stream? So we can speak without spamming everyone

Johan Commelin (Oct 25 2021 at 15:27):

I think anyone can

Kevin Buzzard (Oct 25 2021 at 15:27):

The more refined statement, that pp divides BkB_k iff pp divides the kk th part of the class group was not known until Ribet's work which used congruences of modular forms.

Thomas Browning (Oct 25 2021 at 15:27):

Kevin Buzzard said:

The more refined statement, that pp divides BkB_k iff pp divides the kk th part of the class group was not known until Ribet's work which used congruences of modular forms.

Herbrand's direction isn't as hard though, right?

Kevin Buzzard (Oct 25 2021 at 15:27):

and modular forms are also blocked by complex analysis ;-)

Johan Commelin (Oct 25 2021 at 15:27):

@Riccardo Brasca let me know if Zulip does not permit you to create a stream

Chris Birkbeck (Oct 25 2021 at 15:28):

Johan Commelin said:

I guess reading Chris's blueprint is a good start?

Im still trying to get this working, so there isnt much to read at the moment :P

Kevin Buzzard (Oct 25 2021 at 15:28):

I've created streams, even private streams, so I guess anyone can do it

Riccardo Brasca (Oct 25 2021 at 15:31):

I think someone gave you the permission for the Xena stream, I don't see the "create stream" button mentioned here

Thomas Browning (Oct 25 2021 at 15:32):

I made a stream a while ago, but can't seem to figure out how to do it anymore. Maybe permissions have changed.

Chris Birkbeck (Oct 25 2021 at 15:46):

Kevin Buzzard said:

and modular forms are also blocked by complex analysis ;-)

Well, technically "only" non-zero modular forms are blocked! :stuck_out_tongue:

Johan Commelin (Oct 25 2021 at 16:17):

@Riccardo Brasca @Chris Birkbeck @Alex J. Best #FLT regular

Riccardo Brasca (Oct 25 2021 at 16:17):

Thank you!

Johan Commelin (Oct 25 2021 at 16:17):

(Sorry, I was away for dinner. Otherwise I would have created it an 45 min ago.)

Riccardo Brasca (Oct 13 2022 at 11:13):

We've just finished the proof of the so called caseI of Fermat's last theorem for regular prime.

theorem caseI {a b c : } {p : } (hpri : p.prime) (hreg : is_regular_number p hpri.pos)
  (hodd : p  2) (caseI : ¬ p  a * b * c) : a ^ p + b ^ p  c ^ p :=
...

#print axioms caseI --propext quot.sound classical.choice

Thanks to everybody involved!

CaseII will be significantly harder though...

Patrick Massot (Oct 13 2022 at 11:15):

We really need #print actual_axioms so that the output is easier to read.

Patrick Massot (Oct 13 2022 at 11:16):

I also have trouble reading caseI without thinking case and then unfreeze the instance cache, but I guess this is a more specialized perversion.

Riccardo Brasca (Oct 13 2022 at 11:18):

Well, we will PR all of this to mathlib at some point, and we will think about better names...

Kevin Buzzard (Oct 13 2022 at 12:56):

Yeah that's what we said about the perfectoid project

Yaël Dillies (Oct 13 2022 at 12:57):

How many lines is the project now?

Riccardo Brasca (Oct 13 2022 at 13:04):

I am not sure how it counts, but this site says 6746. But note that a lot of stuff (notably the ring of integers of cyclotomic fields, that have been defined thanks to the project) is already in mathlib.

Yaël Dillies (Oct 13 2022 at 13:05):

Oh that's not so much! The perfectoid project was about 15k, right? I still have faith that you could get it all in mathlib then.

Riccardo Brasca (Oct 13 2022 at 13:07):

Yes, we tried to PR as much as possible from the beginning. I think that fr projects of this size is the best strategy, if one is not too in a hurry.

Kevin Buzzard (Oct 13 2022 at 15:17):

Not all the perfectoid project should be in mathlib, but the for_mathlib directory should be. To Patrick's credit, all the stuff he put in it is now in mathlib. I didn't get around to doing my part yet though :-(

Ruben Van de Velde (Oct 13 2022 at 16:32):

Kevin Buzzard said:

Not all the perfectoid project should be in mathlib

Perhaps a silly question from someone who doesn't know what a perfectoid is: why not?

Kevin Buzzard (Oct 13 2022 at 17:53):

Well I guess I mean "perfectoid spaces are a bit niche and I am not sure that I could coherently argue that they should be in a maths library", but I guess that since 2019 we got plenty of other niche things. Maybe one day they'll be there, but a lot of that code is not really for human consumption.

Scott Morrison (Oct 13 2022 at 22:11):

Write once, read never.

Kevin Buzzard (Oct 14 2022 at 00:54):

It was just a publicity stunt, it wasn't supposed to be read :-)


Last updated: Dec 20 2023 at 11:08 UTC