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 sorry
d 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_1
appearing 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_1
appearing 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 and and are weak exact with constant , then is weak exact with constant .
So we need to prove that the column (before taking -invariants) is weak exact with constant .
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 such that some inequalities hold. Can't you just define ?
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 and for some absolute constant (maybe or so) and some simple explicit function 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 , 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 , 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 with profinite, and a clopen set of , there is some and some clopen of such that is the pullback of . Of course, this corresponds to the case where the discrete set in question is , 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 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 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 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 so much is the following. In the end, you prove that for , some transition map is zero. We can already estimate in terms of , and it will likely be something enormous like . So will definitely involve an index that is astronomical. The question of how large is is then probably secondary -- it will probably at most be of roughly the same size as . By the way, in my analogy with buses, trains, and airplanes, the indices like 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