Zulip Chat Archive

Stream: condensed mathematics

Topic: constants


Johan Commelin (May 24 2021 at 15:42):

I just pushed a whole load of changes. In particular, I think thm95/constants.lean now contains all the inequalities that the sorryd constants should satisfy.

Johan Commelin (May 24 2021 at 15:43):

So I you love defining 8 constants in a mutually inductive definition, please attack that file :octopus:

Adam Topaz (May 24 2021 at 15:57):

Can we set gptf loose on that file for three weeks and see what happens?

Johan Commelin (May 24 2021 at 16:38):

Current sorry count:

3       src/prop819.lean
15      src/thm95/col_exact.lean
12      src/thm95/constants.lean
2       src/prop819/locally_constant.lean
Total:  32

Johan Commelin (May 24 2021 at 16:39):

In particular, the col_exact part of the main proof (thm95/default.lean) has been filled in, but of course it still depends on prop819 and the stuff in thm95/col_exact.lean.

Peter Scholze (May 24 2021 at 19:19):

I'm looking forward to seeing the final constants!! In particular, I wonder how far off my guess of double-exponential growth (of k in terms of m) was.

Towards the end of the file, there's a squareroot of k_1appearing if I understand it right. Where is that coming from?

Jesse Michael Han (May 24 2021 at 19:33):

Adam Topaz said:

Can we set gptf loose on that file for three weeks and see what happens?

we're in the middle of training a new model on updated mathlib + lean-liquid! cc @Stanislas Polu

no promises about being able to synthesize mutual inductives but the new model should know a lot more condensed mathematics

Johan Commelin (May 24 2021 at 19:35):

Peter Scholze said:

Towards the end of the file, there's a squareroot of k_1appearing if I understand it right. Where is that coming from?

The "dual" snake lemma, I think.

Peter Scholze (May 24 2021 at 19:36):

OK

Johan Commelin (May 24 2021 at 19:37):

It says that if MNPM \to N \to P and NN and PP are weak exact with constant kk, then MM is weak exact with constant k2k^2.
So we need to prove that the column NN (before taking T1T^{-1}-invariants) is weak exact with constant k1\sqrt{k_1}.

Peter Scholze (May 24 2021 at 19:37):

Shouldn't it be rather easy to fill in those sorry's? I mean you want to define a new number xx such that some inequalities ax,bx,cxa\leq x, b\leq x, c\leq x hold. Can't you just define x=max(a,b,c)x=\mathrm{max}(a,b,c)?

Johan Commelin (May 24 2021 at 19:39):

Yes, it will be something like that.

Peter Scholze (May 24 2021 at 19:43):

In any case, the requirements do look like what I imagined. And it seems to confirm a bound of the form k=O(C3m2)k=O(C^{3^{m^2}}) and K=O(C(r,r)3m2)K=O(C(r,r')^{3^{m^2}}) for some absolute constant CC (maybe C=3C=3 or so) and some simple explicit function C(r,r)C(r,r') of the radii.

Johan Commelin (May 24 2021 at 19:44):

mathlib even has big-O (-;

Johan Commelin (May 24 2021 at 19:44):

So we could potentially verify your claims (-;

Kevin Buzzard (May 24 2021 at 19:47):

Heh, so I just spent some time looking at that file and came to the same conclusion as Peter. I killed the sqrt sorry.

Kevin Buzzard (May 24 2021 at 19:48):

But it seems to me that one could kill all the sorries by defining K₁ (m+1) to be the max of 1 and K BD c' r r' m etc

Peter Scholze (May 24 2021 at 19:49):

Don't forget K1_spec, but yes

Kevin Buzzard (May 24 2021 at 19:57):

Oh so I just started filling them in and it's harder than I thought :-) When defining k_1: k_0 depends on k_1 and k' depends on k_0 and k depends on k' and now I want some inequality between k_1 and k', so one does actually have to think a little.

Peter Scholze (May 24 2021 at 20:02):

Hmm so I guess the reason is that in this inductive scheme, it's not obvious to Lean that to define k c' (m-1) one has only ever used the values of k1 m' for mm1m'\leq m-1, so it's fine to define k1 m = k c' (m-1) ?

Peter Scholze (May 24 2021 at 20:04):

But I'd think one only needs to spell out what k c' (m-1) is to see that this is the case

Kevin Buzzard (May 24 2021 at 20:05):

Right, one has to think a little about how to do this without doing a "mutually inductive definition", which is exactly what Johan was talking about earlier. Note that there are also constants c'(0), c'(1),... involved, and these seem to have no definition.

Peter Scholze (May 24 2021 at 20:06):

In general not, but for Johan's example of BD data, they ought to be explicit

Johan Commelin (May 24 2021 at 20:22):

Yeah, it's fine to abstract over c'

Johan Commelin (May 24 2021 at 20:23):

Otherwise you'll just get a whole bunch of powers of 2 thrown in the mix.

Peter Scholze (May 24 2021 at 20:23):

How large are the c'in your example?

Johan Commelin (May 24 2021 at 20:24):

I haven't checked carefully, but something roughly like 2 ^ n, I think

Peter Scholze (May 24 2021 at 20:24):

OK, so "small" ;-)

Johan Commelin (May 24 2021 at 20:25):

Right, they shouldn't get close to doubly exponential at all.

Johan Commelin (May 24 2021 at 20:30):

Note that the 4 sorrys all the way at the bottom of the file have "nothing" to do with the big tangled mess of the rest of the file.

Johan Commelin (May 24 2021 at 20:30):

So filling them in is an independent task, and probably quite a lot easier.

Scott Morrison (May 24 2021 at 23:03):

thm95/default.lean wasn't compiling because k₁ now has an explicit dependence on c'; I've fixed this.

Kevin Buzzard (May 24 2021 at 23:14):

Oh sorry, that was my fault. But it does depend on c'!

Scott Morrison (May 24 2021 at 23:15):

If you were allowed to assume a few inequalities are strict in c₀_spec those last four inequalities are easy to deal with. But either of k₁_sqrt c' m = 1 or c_ j = 0 makes it nontrivial, because then you can't just make c₀ big enough.

Can we tweak k₁ so we're allowed to know that it is strictly greater than 1?

Where can I get c_ j \ne 0 from?

Scott Morrison (May 24 2021 at 23:16):

Perhaps _inst_8: package.adept BD c_ c' tells you this? (I'm quickly revealing my ignorance. :-)

Scott Morrison (May 25 2021 at 03:01):

Nothing seems to go wrong if we tweak the definition of k₁ so it is strictly greater than 1, but I don't feel confident pushing that, without better sense of whether it could make other things harder.

Johan Commelin (May 25 2021 at 04:14):

@Scott Morrison You can assume c_ j > 0

Scott Morrison (May 25 2021 at 04:14):

Great --- where will that come from, I'm curious now!

Johan Commelin (May 25 2021 at 04:15):

Well, I've also assumed in the breen_deligne/constants.lean when I construct c' from c_

Johan Commelin (May 25 2021 at 04:15):

And the example BD constants satisfy that condition.

Johan Commelin (May 25 2021 at 04:16):

So we can add it as a condition to breen_deligne.very_suitable BD c_.

Johan Commelin (May 25 2021 at 04:17):

But since BD is not an out_param in the def (it could be!) type class inference will not be able to find fact (0 < c_ j) automatically.

Johan Commelin (May 25 2021 at 04:20):

If c_ j = 0 we get some very degenerate behaviour. Really, what we are interested in is the successive quotients c_ j / c_ (j+1) which should bound the operator norm of BD.d (j+1) j.

Johan Commelin (May 25 2021 at 04:20):

So then it's quite clear that morally they should be invertible even if Lean doesn't force us to assume this.

Johan Commelin (May 25 2021 at 04:21):

Similarly, k_1 will always be > 1, so we can also get k_1_sqrt to be > 1.

Scott Morrison (May 25 2021 at 04:25):

Hmm, something is not right in those last four sorries. c₀_spec involves c_ j, but there isn't any argument that constrains it in any way, so making the c_ j too small would break the inequality.

Johan Commelin (May 25 2021 at 04:26):

j <= m, should be there.

Johan Commelin (May 25 2021 at 04:26):

So there are only finitely many of them involved.

Scott Morrison (May 25 2021 at 04:28):

Sure. But as written c₀ is not allowed to know what c_ is at all.

Scott Morrison (May 25 2021 at 04:28):

Is that a mistake?

Johan Commelin (May 25 2021 at 04:29):

Oooh, I see. Sorry. Yes, it is allowed to know that.

Johan Commelin (May 25 2021 at 04:30):

If you assume 1 < k_1_sqrt, does that allow c_ j = 0? Because that would be a lot less refactoring (-;

Johan Commelin (May 25 2021 at 04:31):

Alternatively, just assume [\all j, fact (0 < c_ j)] and I will just pass that assumption around using TC.

Scott Morrison (May 25 2021 at 04:38):

No, I need both separately, as far as I can see.

Johan Commelin (May 25 2021 at 04:53):

Ok, I'm adding 0 < c_ j as condition to very_suitable. Expect a push in a couple of moments.

Johan Commelin (May 25 2021 at 05:15):

Aahrg, that constant isn't really becoming nicer to write down: c₀ BD r r' c_ c' Λ m

Johan Commelin (May 25 2021 at 05:15):

But ey... it seems to work.

Johan Commelin (May 25 2021 at 05:24):

@Scott Morrison I pushed

Patrick Massot (May 25 2021 at 06:55):

Scott, if you work on this, you should also have a look at those lines I added yesterday. The point is I think expliciting functions b and N2 will help untangle things. They no longer need to be part of the inductive definition, they are simply standalone functions.

Johan Commelin (May 25 2021 at 07:11):

I think Scott was mainly look at c0c_0, which should be independent of the tangle above it.

Peter Scholze (May 25 2021 at 07:24):

Yes, please make everything as explicit as possible!

Johan Commelin (May 25 2021 at 07:30):

Just out of curiousity: do you think making the constants explicit will be helpful for anything?
For the proof of 9.1 it's totally irrelevant, right?

Johan Commelin (May 25 2021 at 07:30):

Do you think they might be useful in a different direction, at some point?

Peter Scholze (May 25 2021 at 07:32):

I don't know any use of them, but I just think it's worth doing it

Peter Scholze (May 25 2021 at 07:32):

I think one gets a better idea of what's happening in the proof if one has some idea of how large the numbers are

Johan Commelin (May 25 2021 at 07:33):

Peter Scholze said:

some idea of how large the numbers are

answer: astronomical :rofl: :stuck_out_tongue_wink:

Peter Scholze (May 25 2021 at 07:33):

Well, it's not even tower-exponential

Peter Scholze (May 25 2021 at 07:33):

(Still large enough that an ultrafinitist might object to them :wink: )

Johan Commelin (May 25 2021 at 07:33):

Sure, it can always be worse (-; No busy beavers in sight.

Johan Commelin (May 25 2021 at 07:34):

Yeah, the ultrafinitists will probably have to call quits once m > 3?

Peter Scholze (May 25 2021 at 07:34):

Also, getting actual verified constants is much easier after a computer formalization than after a proof on paper (which may have small oversights)

Kevin Buzzard (May 25 2021 at 08:32):

In one of Richard Taylor's early papers about attaching p-adic Galois representations to Hilbert modular forms, he makes a mistake when writing down a pairing on a finite free Z_p-module (there is some duality involved and he misses a scaling factor which is a binomial coefficient). When I was his PhD student going through this paper I spotted this slip, which temporarily breaks a proof, but one can fix it up without too much trouble (the "robustness of mathematics") and the theorems Taylor claims (which don't mention constants explicitly) are all OK without any change at all. I mentioned this to him, and he said "oh golly, so these constants in the intermediate results are out by some power of p, I think some other people might have used those constants to do something else" and then we never talked about it again and it was such a minor issue that I don't think he ever issued a correction.

Peter Scholze (May 25 2021 at 08:37):

By the way, as it's official now: Congratulations on the plenary talk at the ICM 2022!!

Kevin Buzzard (May 25 2021 at 08:39):

Thanks!

Scott Morrison (May 25 2021 at 09:01):

col_exact.lean is broken atm?

Johan Commelin (May 25 2021 at 09:02):

Ooh, is it?

Johan Commelin (May 25 2021 at 09:02):

It seemed to compile for me when I last pushed.

Johan Commelin (May 25 2021 at 09:02):

Let me push something that builds.

Johan Commelin (May 25 2021 at 09:05):

Aahrg, building takes so long these days.

Johan Commelin (May 25 2021 at 09:05):

I guess we should also untangle the import structure of this project a bit.

Johan Commelin (May 25 2021 at 09:06):

@Scott Morrison I pushed

Scott Morrison (May 25 2021 at 09:07):

(I was actually attempting some import minimisation when I noticed col_exact... :-)

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

Pushed another sorry-fix

Scott Morrison (May 25 2021 at 09:50):

I pushed an import reduction, and will hopefully have the c0 stuff soonish. :-)

Johan Commelin (May 25 2021 at 09:50):

Merci!

Johan Commelin (May 25 2021 at 10:07):

I was actually surprised to learn that we don't use the constants at all until all the way at the end of the proof.

Johan Commelin (May 25 2021 at 10:07):

I guess we can split thm95/constants.lean into a file that is used by normed_spectral and "the rest".

Johan Commelin (May 25 2021 at 10:07):

That way a change in constants.lean doesn't cause a recompile of normed_spectral and 30% of the project that depends on it.

Johan Commelin (May 25 2021 at 10:08):

Anyway, lunch time here.

Scott Morrison (May 25 2021 at 10:09):

I am so confused.... master compiles fine. I replace a sorry with something that typechecks, and then something somewhere else doesn't typecheck... :-(

Scott Morrison (May 25 2021 at 10:23):

I splits constants.lean, adding constants_2.lean...

Scott Morrison (May 25 2021 at 10:32):

@Johan Commelin earlier today you added BD as an argument to c₀, but I don't understand why. None of the constraints mention BD.

Scott Morrison (May 25 2021 at 10:45):

@Johan Commelin (sorry, I know you're at lunch). I am increasingly worried there is an off-by-one error in an m, that has been hidden by sorries. To reproduce, try moving m and Λ after the colon in the signature of c₀ (but leave the definition as sorry!), then look at the error in default.lean. If you're around later maybe you can help me work out what is broken.

Johan Commelin (May 25 2021 at 10:47):

@Scott Morrison hi, I'm back

Johan Commelin (May 25 2021 at 10:47):

Let's see if we can sort this out.

Riccardo Brasca (May 25 2021 at 10:52):

I've also time to help if you need help
(and I am adding the dual snake lemma to the blueprint)

Johan Commelin (May 25 2021 at 11:04):

I think we got it fixed in a brief video call

Scott Morrison (May 25 2021 at 11:51):

Okay, c₀ is defined, and all its lemmas are proved, no more sorries!

Scott Morrison (May 25 2021 at 11:51):

One proof still should be golfed.

Johan Commelin (May 25 2021 at 11:57):

Awesome!

Scott Morrison (May 25 2021 at 12:01):

And associated for_mathlib PR: #7710.

David Michael Roberts (May 25 2021 at 12:07):

@Scott Morrison do you mean in constants2.lean?

Scott Morrison (May 25 2021 at 12:07):

Yes.

Scott Morrison (May 25 2021 at 12:07):

No!

Scott Morrison (May 25 2021 at 12:07):

Sorry, there are still sorries in constants_2.lean. Just nothing related to c₀.

Scott Morrison (May 25 2021 at 12:08):

This was the easy part of constants.lean that Johan described above. The really tangled one is still available. :-)

David Michael Roberts (May 25 2021 at 12:17):

OK, just checking. It seemed just a tad too good to be true :-)

David Michael Roberts (May 25 2021 at 12:17):

And I'm just a spectator here, so unfortunately I can't join in the fun (and I'm meant to be doing other work tonight anyway).

Johan Commelin (May 25 2021 at 12:19):

Sounds like an excellent opportunity for www.structuredprocrastination.com :stuck_out_tongue_wink:

Peter Scholze (May 25 2021 at 12:20):

Well I like stand and cheer from the sidelines :smile: :grinning_face_with_smiling_eyes: :sunglasses:

Johan Commelin (May 25 2021 at 12:22):

Sorry count these days:

3       src/prop819.lean
2       src/thm95/col_exact.lean
4       src/thm95/constants_2.lean
2       src/prop819/locally_constant.lean
1       src/for_mathlib/Profinite/locally_constant.lean
Total:  12

Johan Commelin (May 25 2021 at 12:24):

Concerning the constants, I think that with the stuff that Patrick did last night, the tangle should be a lot less of a headache now.

Adam Topaz (May 25 2021 at 13:24):

The sorry in for_mathlib/Profinite/locally_constant is in a comment :wink:

Adam Topaz (May 25 2021 at 13:25):

But that's just because I haven't decided on the best formulation yet...

Adam Topaz (May 25 2021 at 13:26):

Same goes for the two sorry's in prop819/locally_constant

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

Ooh, my lousy way of counting also counts comments...

Adam Topaz (May 25 2021 at 13:26):

So there are only 3 sorry's left for 8.19, and they're all in src/prop819.lean

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

I see... but do you think you will uncomment those others?

Adam Topaz (May 25 2021 at 13:28):

No they won't be uncommented, but the sorry count might increase before it decreases ;)

Johan Commelin (May 25 2021 at 13:30):

Sure!

Johan Commelin (May 25 2021 at 13:31):

In col_exact there already 10 sorry's again by now (-;

Peter Scholze (May 25 2021 at 13:34):

Didn't we start with just one sorry? What have we been doing all this time? :wink:

Peter Scholze (May 25 2021 at 13:36):

Adam, do you still have questions on the best pen and paper proof of something? Or is it just about writing the Lean code?

Johan Commelin (May 25 2021 at 13:38):

I guess we broke that massive concave sorry into many small convex sorrys which are actually approachable (-;

Adam Topaz (May 25 2021 at 13:38):

No, I have a way forward with 8.19. It all boils down to proving that given a cofiltered limit X=limiXiX = \varprojlim_i X_i with XiX_i profinite, and a clopen set UU of XX, there is some ii and some clopen UiU_i of XiX_i such that UU is the pullback of UiU_i. Of course, this corresponds to the case where the discrete set in question is {0,1}\{0,1\}, but there's a way to upgrade this to the general case without too much trouble.

Adam Topaz (May 25 2021 at 13:39):

And the statement about clopens seems formalizable using the explicit topology on docs#Top.limit_cone and the fact that clopen sets form a basis for the topology of a profinite set, which Patrick has already formalized.

Peter Scholze (May 25 2021 at 13:41):

OK, great!

Adam Topaz (May 25 2021 at 13:41):

I was hoping to just use some categorical shenanigans, but even if you work out everything in terms of Stone duality, it comes down to proving that C0(,2)C^0(-,2) commutes with cofiltered limits, which then reduces to the above statement about clopens

Peter Scholze (May 25 2021 at 13:42):

Actually I did think about Stone duality as well here :wink: but yeah, it doesn't really seem to be of direct help here (even if it would of course be nice to formalize Stone duality)

Adam Topaz (May 25 2021 at 13:43):

I think there was some talk about formalizing Stone duality at some point. It would be a fun project :)

Scott Morrison (May 25 2021 at 22:49):

One question about c_0: I just wrote a recursive definition that exactly matched the shape of the constraints, but it means that it's left unobvious how big c_0 actually is. Is this worth fixing by providing a more explicit bound, or does it not matter?

Patrick Massot (May 25 2021 at 22:50):

The quest for constants is done. It's not yet on master because I haven't fixed all files that depends on this constant defining file. All files that assumed that K₁ depended only on m must now take into account that it also depends on BD c' r r'.

Patrick Massot (May 25 2021 at 22:51):

Note that I haven't prove any upper bound on those constants. That's a job for another day (and I will need some input from the explicit Breen-Deligne construction).

Johan Commelin (May 26 2021 at 03:12):

@Patrick Massot Wonderful! Thanks you so much.

Johan Commelin (May 26 2021 at 03:13):

@Scott Morrison No, the c0c_0 is not really one of the "main" constants. I don't think Peter cares about how it grows. In particular, it doesn't influence the constants that Patrick worked on.

Johan Commelin (May 26 2021 at 03:32):

I merged the branch into master, and fixed whatever broke.

Johan Commelin (May 26 2021 at 03:33):

Sorry count:

3       src/prop819.lean
7       src/thm95/col_exact.lean
2       src/prop819/locally_constant.lean
8       src/for_mathlib/Profinite/clopen_limit.lean
1       src/for_mathlib/Profinite/locally_constant.lean
Total:  21

Peter Scholze (May 26 2021 at 05:37):

Yes, how c0c_0 grows was not part of Question 9.9, although it would be nice to get an idea of what's going on. I think it's pretty tough to figure it out, though, as it depends on the size of the finite generating set in Gordan's lemma, and I don't know how effectively this can be bounded. (I don't know how the formalization is done now, but things like Hahn--Banach or Krein--Milman probably make heavy use of choice in their usual proofs. In the current finite-dimensional situation this is surely overkill, but still.) In any case, not a concern right now.

Johan Commelin (May 26 2021 at 05:45):

I think that Gordan's lemma can in principal be made effective. And the generators of the norm in the polyhedral lattice quotients can also be made effective. (At the moment Lean forgets them as soon as the proof is over.)

Yaël Dillies (May 26 2021 at 08:46):

Krein-Milman indeed uses Zorn's lemma to establish the existence of an extreme point. I agree with Johan on Gordan's lemma.

Yaël Dillies (May 26 2021 at 08:49):

Actually, if you're working over finite dimensional stuff, Carathéodory-Minkowski is a much better choice. It should actually be pretty easy for me to prove it given that Carathéodory is already in mathlib.

Peter Scholze (May 26 2021 at 09:26):

(The reason I don't care about c0c_0 so much is the following. In the end, you prove that for cc0c\geq c_0, some transition map Hm(Ckc)Hm(Cc)H^m(C_{kc}^\bullet)\to H^m(C_c^\bullet) is zero. We can already estimate kk in terms of mm, and it will likely be something enormous like 33m23^{3^{m^2}}. So CkcC_{kc} will definitely involve an index kckc0kkc\geq kc_0\geq k that is astronomical. The question of how large c0c_0 is is then probably secondary -- it will probably at most be of roughly the same size as kk. By the way, in my analogy with buses, trains, and airplanes, the indices like kckc roughly correspond to the required number of airports/train stations/bus stations ;-).)

Stanislas Polu (Jun 09 2021 at 09:42):

Adam Topaz said:

Can we set gptf loose on that file for three weeks and see what happens?

Can you point me to the files/statements of interest, I can setup an experiment to test this out! Thanks!

Stanislas Polu (Jun 09 2021 at 09:43):

(If there is any left to work on obviously)

Johan Commelin (Jun 09 2021 at 10:44):

@Stanislas Polu There are no sorry's left, but it could of course still be fun to see what gptf makes of these files.

Johan Commelin (Jun 09 2021 at 10:45):

The files in question are in src/thm95/constants/

Stanislas Polu (Jun 09 2021 at 10:45):

Cool will look into it!


Last updated: Dec 20 2023 at 11:08 UTC