Zulip Chat Archive

Stream: condensed mathematics

Topic: col_exact


Johan Commelin (May 03 2021 at 16:45):

It's time to start the attack on the final missing piece in the proof of thm 9.5.
@Adam Topaz @Heather Macbeth @Patrick Massot Can we now state 8.19 and 9.2? Do you already have something in this direction?

Adam Topaz (May 03 2021 at 17:10):

Here is where I am with 8.19:

  1. The Cech nerve is constructed here:
    https://github.com/leanprover-community/lean-liquid/blob/d075271b5099d8c1b174f87d8b253d979483b205/src/for_mathlib/cech/basic.lean#L112

  2. The cochain complex associated to a cosimplicial object is here:
    https://github.com/leanprover-community/lean-liquid/blob/d075271b5099d8c1b174f87d8b253d979483b205/src/for_mathlib/simplicial/complex.lean#L114

  3. The proof that a split arrow yields a contracting homotopy on cochain complexes is contained in this file:
    https://github.com/leanprover-community/lean-liquid/blob/cech_stuff/src/for_mathlib/cech/contracting_homotopy.lean

  4. Now, the fact that any morphism of profinite sets can be written as a limit of arrows of finite sets is here:
    https://github.com/leanprover-community/lean-liquid/blob/d075271b5099d8c1b174f87d8b253d979483b205/src/for_mathlib/Profinite/functorial_limit.lean#L963
    and the fact that such arrows of finite sets are "covers" (i.e. surjective) given the original morphism of profinite sets is surjective is the theorem surjective_of_surjective in the same file.

What we still need is the fact that the Cech nerve construction commutes with limits, and the fact that the locally_constant construction commutes with colimits. After that, we will be able to prove the first part of 8.19 (i.e. before taking completions) without too much trouble. I don't know the status of 8.1 from the blueprint. If I recall there was some work toward 8.1 from the blueprint (by @Patrick Massot perhaps?).

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

Thanks for the detailed update.

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

Do you think you can already state and sorry 8.19, with what you've got?

Adam Topaz (May 03 2021 at 17:33):

Yeah, I can try to do that this afternoon

Johan Commelin (May 03 2021 at 17:34):

Once we have sorried statements of 8.19 and 9.2 we can start a divide-and-conquer approach (-;

Patrick Massot (May 03 2021 at 18:50):

Proposition 8.1 from the blueprint has been fully done for a long time, but I forgot to update the blueprint.

Patrick Massot (May 03 2021 at 18:52):

I'll resume working on 9.2 from Analytic tomorrow (having two numbering schemes is pretty annoying...)

Patrick Massot (May 03 2021 at 19:54):

I'm working on updating the blueprint to reflect the Lean proof of Proposition 8.1. I wonder how deep I should go into the tower of lemmas leading to it. The main statement is here (there are no 4-terms complexes there, but they are barely hidden). The density of ker g in ker \hat g is inlined in the blueprint, whereas it is stated separately in Lean. And then there is the whole story of writing elements as sums converging fast enough. In Lean this is sliced pretty thinly with this lemma which uses this one. Should I keep Peter's writeup or state one or more lemmas from our mess?

Patrick Massot (May 03 2021 at 19:56):

Note that the fast converging sum lemma was originally formalized with another application in mind (around the weak vs strong exactness discussion) so it may be useful at some point anyway.

Johan Commelin (May 03 2021 at 19:59):

I wouldn't worry too much about how closely to reflect the lean

Johan Commelin (May 03 2021 at 20:02):

Patrick Massot said:

I'll resume working on 9.2 from Analytic tomorrow (having two numbering schemes is pretty annoying...)

At least the schemes are proper, and we can try to keep them separated (-;

Patrick Massot (May 03 2021 at 20:03):

Ok, I'll try to keep the original proofs as much as possible then. I'll still state the 3 terms version because I suspect the 4-term corollary that is currently stated will be stated directly in a bundled context (with categories).

Patrick Massot (May 03 2021 at 20:37):

Still about Proposition 8.17 in Analytic.pdf, @Peter Scholze the version on https://github.com/PeterScholze/Analytic has a "for all yundefined\widehat{y} in Mundefined1\widehat{M}_1" in the conclusion where you probably mean "for all yundefined\widehat{y} in kerdundefined1\ker \widehat{d}_1". And the version on http://www.math.uni-bonn.de/people/scholze/Notes.html is still having the old statement that is not quite correct.

Peter Scholze (May 03 2021 at 21:50):

Ha, my version control hasn't worked so well. Fortunately Johan has an updated version on GitHub... will correct!

Adam Topaz (May 04 2021 at 04:02):

Well, it's a mess right now with more basic things missing than I had anticipated, but here's the statement of Prop 8.19:
https://github.com/leanprover-community/lean-liquid/blob/79bec5091a9690d8c67d2215203cbffd30d02797/src/prop_819.lean#L55

I'll have to clean up some of the code before merging this to master. I'll try to do this over the next few days. The main thing I'm not too happy about is all this nonsense with augmentation. I think instead of going through several steps like is done in the link above, I will construct the augmented cochain complex by hand. I think this would also make it easier to relate to the complexes that are being used in the main theorem.

Johan Commelin (May 04 2021 at 04:59):

Do you think you can reuse some of https://github.com/leanprover-community/lean-liquid/blob/master/src/simplicial/alternating_face_map.lean ?

Adam Topaz (May 04 2021 at 05:01):

Probably, but I need as much functoriality as possible to make the argument work.

Adam Topaz (May 04 2021 at 05:02):

I already reused some of your lemmas from that file in cosimplicial_object.to_complex

Johan Commelin (May 04 2021 at 05:03):

Ok, I see.

Johan Commelin (May 04 2021 at 05:04):

Well, making this version more functorial shouldn't hurt wherever I use it. Probably only needs minor adjustments (replacing F with F.obj).

Adam Topaz (May 04 2021 at 05:05):

Another annoying thing is that it seems the right_op stuff from the category theory library seems to be missing some constructions (like taking an opposite of a natural transformation)

Scott Morrison (May 04 2021 at 06:20):

I'll hit merge as soon as you PR it. :-)

Adam Topaz (May 05 2021 at 02:10):

Scott Morrison said:

I'll hit merge as soon as you PR it. :-)

#7505

Adam Topaz (May 05 2021 at 02:12):

This should be helpful to go back-and-forth between simplicial and cosimplicial objects :)

Adam Topaz (May 05 2021 at 02:48):

I've updated the code in for_mathlib/simplicial/complex with a new definition of the alternating face map complex, which is functorial as a functor from augmented cosimplicial objects.

In my opinion, the definition of an augmented (co)simplicial object has settled on the following (in the simplicial case, for example):

@[simps]
def const : C  simplicial_object C := category_theory.functor.const _

variable (C)

/-- Augmented simplicial objects. -/
@[derive category, nolint has_inhabited_instance]
def augmented := comma (𝟭 (simplicial_object C)) const

I chose this because I think it's the easiest to work with given the definition of the Cech nerve that I now have.
The functorial version of cocomplex works with such a definition of an augmented cosimplicial object, and its values should be (more-or-less :smile: ) defeq to what Johan has in simplicial/alternating_face_map.lean

Johan Commelin (May 21 2021 at 17:39):

I get the impression that part of the col_exact argument is the following step:

import system_of_complexes.basic

open_locale nnreal big_operators
open category_theory opposite

variables (C : system_of_complexes)

def norm_exact_complex (D : cochain_complex SemiNormedGroup ) : Prop :=
 (m : ) (ε : 0) ( : 0 < ε) (x : D.X (m+1)) (hx : D.d _ (m+2) x = 0),
   y : D.X m, D.d _ _ y = x  nnnorm y  (1 + ε) * nnnorm x
-- this probably needs a little bit extra about degree `0`, but I don't know what exactly

lemma weak_exact_of_factor_exact (k K : 0) [fact (1  k)] (m : ) (c₀ : 0)
  (D : 0  cochain_complex SemiNormedGroup )
  (f : Π c, C.obj (op $ k * c)  D c)
  (g : Π c, D c  C.obj (op c))
  (hD :  c, norm_exact_complex (D c)) :
  C.is_weak_bounded_exact k K m c₀ :=
begin
  sorry
end

Johan Commelin (May 21 2021 at 17:41):

I am either misunderstanding the proofs, and this lemma is nonsense. Or I'm being dumb, and not seeing why this is true.

Johan Commelin (May 21 2021 at 17:52):

Edit: I was missing the assumption hfg, which says that f and g factor the restriction maps of C

Peter Scholze (May 21 2021 at 17:52):

OK; is there still a math problem?

Johan Commelin (May 21 2021 at 17:52):

Yes, the hfg was not what I was confused about. That was just a silly thing I forgot when I wrote the post.

Peter Scholze (May 21 2021 at 17:53):

Let me translate this into math: If DcD_c^\bullet is a system of complexes such that DkcDcD_{kc}^\bullet\to D_c^\bullet factors over an exact complex CcC_c^\bullet, with some bounds, then DcD_c^\bullet is weak exact. (I'm ignoring the factor KK here.)

Johan Commelin (May 21 2021 at 17:53):

The point is that norm_exact_complex asks hx : D.d _ _ x = 0

Johan Commelin (May 21 2021 at 17:54):

But for weak bounded exactness you need to prove something for all x.

Johan Commelin (May 21 2021 at 17:54):

Probably there's a simple trick that I'm missing.

Peter Scholze (May 21 2021 at 17:56):

I think there is: Given any xx, you can find some other xx' with d(x)=d(x)d(x')=d(x) and x(1+ϵ)d(x)||x'||\leq (1+\epsilon)||d(x)||; then d(xx)=0d(x-x')=0 and you can find some yy with dy=xxdy=x-x' and y(1+ϵ)xx||y||\leq (1+\epsilon)||x-x'||. But then xdy=x(1+ϵ)dx||x-dy||=||x'||\leq (1+\epsilon)||dx||.

Johan Commelin (May 21 2021 at 17:58):

Aha, let me see if I can understand that

Peter Scholze (May 21 2021 at 17:59):

This is an argument that happens on CC; then afterwards you can translate to DD

Johan Commelin (May 21 2021 at 18:16):

Peter Scholze said:

I think there is: Given any xx, you can find some other xx' with d(x)=d(x)d(x')=d(x) and x(1+ϵ)d(x)||x'||\leq (1+\epsilon)||d(x)||;

But here you are making some assumption on the differentials and the normed groups that appear in the complex, right?
This is not true for an arbitrary bounded morphism dd.

Peter Scholze (May 21 2021 at 19:23):

I'm using the norm exactness one degree higher: d(x)d(x) lies in the kernel of the next differential, so you can use that hypothesis

Peter Scholze (May 21 2021 at 19:57):

Is it OK?

Johan Commelin (May 21 2021 at 19:58):

Sorry, we had a minor emergency with one of the kids (nothing serious), so I haven't really done anything yet.

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

Oh OK; no worries! I hope it's fine

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

She's sleeping again... (-;

Johan Commelin (May 21 2021 at 20:09):

I'm still confused. Maybe it's getting too late. d(x)d(x) lies in the kernel of the next differential. But only if I move d(x)d(x) to DD then I get some preimage xx' for f(d(x))f(d(x)) with x(1+ε)f(d(x))\|x'\| \le (1 + \varepsilon) \|f(d(x))\|.
So it feels like I'm still doing something wrong. Because I can't move xx' back to CC.

Johan Commelin (May 21 2021 at 20:11):

But may I should just try to continue working with this xx'?

Peter Scholze (May 21 2021 at 20:11):

The whole argument should happen in CC

Peter Scholze (May 21 2021 at 20:11):

Sorry, DD!

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

I mean the complex that is actually exact

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

I think when I translated your code into math, I mistranslated this

Johan Commelin (May 21 2021 at 20:15):

Aah! Confusion is gone (-;

Johan Commelin (May 21 2021 at 20:15):

Now I can make sense of what you wrote :smile:

Johan Commelin (May 21 2021 at 20:58):

There are 3 easy sorrys left. (Mostly d commutes with f and g, that kind of stuff.)
And then there is the case i = 0. But for that, I think we need to also modify the statement of 8.19 as it is currently written in Lean.

Johan Commelin (May 21 2021 at 20:59):

Apart from that, the columns V^(Cechnerve)\hat V(Cech nerve) are weak bounded exact.

Johan Commelin (May 21 2021 at 20:59):

Of course that still has to be glued to the columns in the double complex. But it feels like 1/3 of the argument is done.

Johan Commelin (May 21 2021 at 21:00):

Thanks for explaining the trick

Peter Scholze (May 21 2021 at 21:01):

Well, sorry for not properly explaining it in the notes :wink:

Johan Commelin (May 21 2021 at 21:02):

The sorrys are in thm95/col_exact_prep.lean in case someone else wants to work on them

Johan Commelin (May 21 2021 at 21:02):

I'm off to bed now.

Johan Commelin (May 22 2021 at 06:08):

This part is now complete, modulo the degree 0 thing.

Peter Scholze (May 22 2021 at 08:01):

What's the matter with degree 0?

Johan Commelin (May 22 2021 at 09:11):

Not so much, but it's just that prop819 is currently phrased only for positive degrees. Adam told me he will rephrase it at some point.

Adam Topaz (May 22 2021 at 11:15):

I think the statement of prop819 will stay as is @Johan Commelin . I wanted to use the X_next, d_to, etc. API to have one statement that also takes care of degree zero, but these definitions involve some isomorphism under the hood which we a priori have no control over. Since the statement involves norms, this would make the proof much more tedious as one would have to unfold everything to see that this isomorphism is really an eq_to_iso hence strictly norm preserving... I think it would be much easier to just take care of degree 0 as a separate case

Adam Topaz (May 22 2021 at 11:17):

The degree 0 case is easy actually since the map from degree zero to degree one is pullback along a surjective map of Profinite sets, so seeing that it's injective is easy

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

Totally fine with me. If you push the statement of injectivity at some point, then I will use it for that sorry.

Adam Topaz (May 22 2021 at 11:20):

Sure, that should be quick, I can do that later today

Adam Topaz (May 22 2021 at 15:43):

@Johan Commelin I added a proof of the degree zero case. It's a little messy -- feel free to golf + move + cut + whatever...
https://github.com/leanprover-community/lean-liquid/blob/ab1eabe4fc36f18e1a1a833469f29802b8f01ae3/src/prop819.lean#L183

Johan Commelin (May 22 2021 at 16:34):

Thanks, I'll take a look

Johan Commelin (May 22 2021 at 17:48):

The degree 0 case is now also done. Current sorry count:

1       src/prop819.lean
1       src/thm95/default.lean
22      src/thm95/col_exact.lean
9       src/thm95/constants.lean
2       src/prop819/locally_constant.lean
Total:  35

Peter Scholze (May 22 2021 at 18:41):

So to get the column exactness, it remains to apply 9.2 and the dual snake lemma? (And finish 8.19, of course.)

Johan Commelin (May 22 2021 at 18:59):

And the canonical isomorphisms!

Johan Commelin (May 22 2021 at 19:00):

Rough estimate: I'm halfway done with applying 9.2 and the dual snake lemma.

Peter Scholze (May 22 2021 at 19:02):

pff, canonical isomorphisms :stuck_out_tongue_wink:

Johan Commelin (May 22 2021 at 19:02):

But after that we'll have two complexes that are "obviously the same". But they need to be related by the canonical isomorphisms
Hom(Λ(m),M)BDq(Hom(Λ,M)BDq)m/Hom(Λ,M)BDq\mathrm{Hom}(\Lambda^{(m)}, M)^{\mathrm{BD}_q} \cong \left(\mathrm{Hom}(\Lambda', M)^{\mathrm{BD}_q}\right)^{m/\mathrm{Hom}(\Lambda, M)^{\mathrm{BD}_q}}

Patrick Massot (May 22 2021 at 19:02):

Do you still need help which doesn't require being very familiar with the final part of the proof?

Johan Commelin (May 22 2021 at 19:02):

aahrg, where is my LaTeX-typo??

Patrick Massot (May 22 2021 at 19:02):

No dollars at the end I'd say

Johan Commelin (May 22 2021 at 19:03):

Peter Scholze said:

pff, canonical isomorphisms :stuck_out_tongue_wink:

Well, they even got a mention in the PDF, so they must be important and nontrivial :rofl:

Johan Commelin (May 22 2021 at 19:04):

Actually, I guess the (_)q(\_)^q should be moved inside the fibre product, on the RHS. Fixed

Johan Commelin (May 22 2021 at 19:04):

Patrick Massot said:

Do you still need help which doesn't require being very familiar with the final part of the proof?

I'll see whether I can stub out some standalone sorrys. But it's all quite heavy on the category_theory side...

Peter Scholze (May 22 2021 at 19:05):

Oh I see, there's actually some content here in merely having an isomorphism. I assumed the issue was having it sufficiently canonical/functorial

Johan Commelin (May 22 2021 at 19:07):

Bwah, it's getting quite a bit messier by the (_)BDq(\_)^{\mathrm{BD}_q}

Johan Commelin (May 22 2021 at 19:15):

Once the 9.2/dual snake lemma is done, we'll know the final constants. So then someone can get thm95/constants sorry-free.

Riccardo Brasca (May 22 2021 at 20:46):

Dual snake lemma is done, isn't' it?

Adam Topaz (May 22 2021 at 20:46):

I'm a bit stuck with 8.19. I have the exactness working fine, but, as always, the issue is about the norms.
Here's a summary. Start with a surjective morphism of profintite sets XBX \to B, write X=limiXiX = \lim_i X_i with XiX_i the discrete (finite) quotients of XX. To each XiX_i, there is a unique maximal finite quotient BiB_i of BB such that XBX \to B descends to XiBiX_i \to B_i and one has (XB)=limi(XiBi)(X \to B) = \lim_i (X_i \to B_i).

Okay, so now we take a seminormed gorup MM, consider the Cech nerve CC_\bullet of XBX \to B, and consider M(C)M(C_\bullet).
Write CiC_\bullet^i for the Cech nerve of XiBiX_i \to B_i.
The goal is to show that M(C)M(C_\bullet) satisfies this controlled exactness condition, meaning that it's exact and that for every ff such that d(f)=0d(f) = 0 there exists some gg such that d(g)=fd(g) = f and such that gf|g| \le |f|.

If fM(Cn)f \in M(C_n) then there exists some ii as above such that ff factors via fiM(Cni)f_i \in M(C_n^i) for some ii, and by enlarging ii we can also ensure that d(fi)=0d(f_i) = 0. The CniC_n^i split, so the contracting homotopy gives some giM(Cn1i)g_i \in M(C_{n-1}^{i}) such that d(gi)=fid(g_i) = f_i, and looking at the image of gig_i in M(Cn1)M(C_{n-1}) we can an element gg such that d(g)=fd(g) = f.

This is all fine so far. From the construction, we also know that gifi|g_i| \le |f_i|, that ggi|g| \le |g_i| and ffi|f| \le |f_i|. But I don't see why gf|g| \le |f|. What am I missing here?

Adam Topaz (May 22 2021 at 20:48):

If, for example, we could show that fi=f|f_i| = |f|, then we would be done, but I don't see why that's the case.

Peter Scholze (May 22 2021 at 20:56):

I think one can arrange fi=f|f_i|=|f|, possibly after enlarging ii. Take fi:CniMf_i: C_n^i \to M, then f=fiCnf = f_i|_{C_n}, so f|f| depends only on the image of CnC_n in CniC_n^i. But this image agrees with the image of CnjC_n^j for jij\geq i sufficiently large, and then fj=fiCnjf_j=f_i|_{C_n^j} satisfies fj=f|f_j|=|f|.

Peter Scholze (May 22 2021 at 20:58):

Riccardo Brasca said:

Dual snake lemma is done, isn't' it?

I believe Johan meant the application of 9.2+dual snake. There'll still be an isomorphism of complexes left to prove, but this will preserve norms. So one can figure out all the constants in parallel to constructing that final isomorphism.

Adam Topaz (May 22 2021 at 22:26):

Peter Scholze said:

I think one can arrange fi=f|f_i|=|f|, possibly after enlarging ii. Take fi:CniMf_i: C_n^i \to M, then f=fiCnf = f_i|_{C_n}, so f|f| depends only on the image of CnC_n in CniC_n^i. But this image agrees with the image of CnjC_n^j for jij\geq i sufficiently large, and then fj=fiCnjf_j=f_i|_{C_n^j} satisfies fj=f|f_j|=|f|.

Okay, so I've reworked the proof of 8.19 to rely on this condition, which I state as follows: For every fM(Cn)f \in M(C_n), there exists some ii and some fiM(Cni)f_i \in M(C_n^i) such that:

  1. the image of fif_i in M(Cn)M(C_n) is ff.
  2. one has d(fi)=0d(f_i) = 0.
  3. one has fi=f|f_i| = | f|.

This assertion is the only thing left for the proof of 8.19, and it's the following sorry:
https://github.com/leanprover-community/lean-liquid/blob/53aa0d055c72778e81a249ba913fa3a49d595db6/src/prop819.lean#L242

Peter Scholze (May 23 2021 at 07:31):

Cool! (I think there's a missing condition d(f)=0d(f)=0 in what you wrote here.)

Adam Topaz (May 23 2021 at 13:56):

Oh of course... Fortunately I was careful enough to add it to the code itself :wink: (it's the assumption hf)

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

All the sorrys in col_exact.lean are done, except for the elephant in the room.

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

(Which is the canonical isomorphism between two systems of complexes that are roughly V^(_)\hat V(\_) applied to two isomorphic Cech nerves

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

So, taking stock, what is left?

a) Finish the proof of 8.19. Adam is working on that, and it's reduced to some basic facts about maps from profinite sets to discrete spaces, I think?

b) Fill in the canonical isomorphism in the column exactness. Johan is probably working on that?

c) Fill in the inductive definition of k1k_1 and K1K_1.

Anything else? Sounds like you're getting very close to the finish line (of 9.4+9.5)!

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

Yeah, that seems to sum it up.

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

Ooh, we'll have 9.4 with weak exactness. But we have the lemma in place to derive the version with strong exactness. So that would be < 5 minutes (-;

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

Actually one should first take a limit in 9.4 to pass to the version with profinite SS, and then pass to strong exactness. But OK, let's leave that for the second goal of actually getting to 9.1.

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

The reason you first take the limit is to improve the constants, right? The other way could also be done I guess?

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

Yeah, both ways would be fine, but passing to the limit you will again only get weak exactness a priori

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

So it's an unnecessary back-and-forth between weak and strong exactness

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

Yeah, so that seems to be properly part of the second adventure (-;

Johan Commelin (May 25 2021 at 18:41):

All the sorrys about strictness of the isomorphism of complexes are done.

Johan Commelin (May 25 2021 at 18:41):

So the remaining sorrys are firmly in the land of "canonical isomorphisms between profinitely filtered pseudo normed groups"

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

The sort of thing that needs to be done: (rescaleN(MN))nrescaleN((Mn)N)(\mathrm{rescale}_{N} (M^N))^n \cong \mathrm{rescale}_N ((M^n)^N)

Peter Scholze (May 25 2021 at 18:57):

Ah, so you already know Hom(Λ(m),M)Hom(Λ,M)m/Hom(Λ,M)\mathrm{Hom}(\Lambda'^{(m)},M)\cong \mathrm{Hom}(\Lambda',M)^{m/\mathrm{Hom}(\Lambda,M)}?

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

No no, sorry for suggesting that. That is the other big beast.

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

This is the kind of ugly that it looks like in Lean:

(Profinite.limit_cone
  (limits.wide_pullback_shape.wide_cospan
    (FLC_complex_arrow (aug_map r' Λ M N n) _ c).right
    (λ (i : ulift (fin (i + 1))), (FLC_complex_arrow (aug_map r' Λ M N n) _ c).left)
    (λ (i : ulift (fin (i + 1))), (FLC_complex_arrow (aug_map r' Λ M N n) _ c).hom))).X
 
Profinite.of (pseudo_normed_group.filtration
  ((polyhedral_lattice.Hom (Cech_conerve.obj (Λ.diagonal_embedding N) i) M) ^ n) c)

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

Which isn't really helpful if you don't know the definition of half of the nouns... :shrug:

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

It just shows that there is still some room for improvement, notationwise.

Peter Scholze (May 25 2021 at 19:16):

Ah too bad. But at least you got rid of VV, I assume? That's clearly progress.

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

Note that the isomorphism as you wrote it, ignores the exponent coming from Breen--Deligne.

Peter Scholze (May 25 2021 at 19:18):

Yes, sure. I know that you also have to get rid of this one. I just wondered whether that's all that's left to do.

Peter Scholze (May 25 2021 at 19:18):

By the way, can you use the adjointness property of the Cech nerve to get a comparison map, and hence reduce to proving isomorphisms of profinitely filtered pseudonormed groups (as opposed to simplicial such)?

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

Hmm, interesting. I'm not sure if that adjunction has been done. @Adam Topaz ??

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

We would have to restructure the proof a bit. Because one of the two sides is not definitionally of the form V^(_)\hat V(\_).

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

So to get rid of the V^(_)\hat V(\_), I have to look componentwise.

Peter Scholze (May 25 2021 at 19:23):

Hmm OK. But I meant for the remaining step.

Peter Scholze (May 25 2021 at 19:23):

Isn't it left to prove an isomorphism of simplicial profinitely filtered pseudonormed groups?

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

One of which is a Cech nerve

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

(Maybe I'm talking nonsense -- I don't actually know what you are doing!)

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

Johan Commelin said:

Hmm, interesting. I'm not sure if that adjunction has been done. Adam Topaz ??

We don't have this adjunction unfortunately. I could add it if it's important

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

It's not clear to me that we can apply it easily...

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

When I previously defined the Cech nerve as a Kan extension, the adjunction was automatic, but working with the Kan extension was much more tedious in practice, so I switched to using pullbacks.

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

Hmmm, I actually think that using the adjunction might be helpful.

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

Checking that a map of simplicial complicated-gadgets is an iso is a lot easier then constructing such a map.

Adam Topaz (May 25 2021 at 19:58):

I'll add it

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

Merci!

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

Of course we don't get a free lunch. Checking that a pretty inexplicit map is an isomorphism isn't Lean-trivial either.

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

But I guess we can have a theorem that says that on each simplicial level, the map comes from the universal property of pullbacks?

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

And using that, we can hopefully show that level-wise it's bijective.

Adam Topaz (May 25 2021 at 20:17):

Yes the maps are defeq to lifting some cone to a morphism to a limit

Adam Topaz (May 25 2021 at 20:18):

I have to do other stuff for a little while, but I'll make a PR with the adjunction this afternoon

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

Would you mind also adding it to the LTE repo?

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

Sure, no problem

Adam Topaz (May 25 2021 at 22:19):

#7716

Adam Topaz (May 25 2021 at 22:31):

And I added it to LTE as well here:
https://github.com/leanprover-community/lean-liquid/blob/master/src/for_mathlib/Cech/adjunction.lean

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

Thanks!

Johan Commelin (May 28 2021 at 10:36):

Injectivity of the canonical iso is done.

Peter Scholze (May 28 2021 at 11:46):

Tell me when I should start to put the champagne in the fridge :champagne: :wink:

Riccardo Brasca (May 28 2021 at 11:53):

We should also find a way to let Johan fill the last sorry :grinning:

David Michael Roberts (May 28 2021 at 11:58):

It would be awesome if it could be livestreamed (though I'll probably be asleep at the time, anyway) :sunglasses:

Adam Topaz (May 28 2021 at 12:06):

Okay, the first of the three main sorry's for 8.19 is done: If X=limiXiX = \varprojlim_i X_i with XiX_i profinite and ii cofiletered, and f:XSf : X \to S is any locally constant function, there exists some ii such that ff factors through XiX_i.
https://github.com/leanprover-community/lean-liquid/blob/ae0bfa81bd980dd1df85299dbe0380c4b4c11ef6/src/for_mathlib/Profinite/clopen_limit.lean#L745

Adam Topaz (May 28 2021 at 12:06):

I put this separately from the prop819 file because it has a [nonempty X] assumption

Adam Topaz (May 28 2021 at 12:07):

And I'll worry about that assumption later...

Adam Topaz (May 28 2021 at 12:09):

I guess we know that when XX is empty that there is some sufficiently large ii such that XiX_i is empty, but do I really want to do a by_cases (nonempty X) proof? :expressionless:

Peter Scholze (May 28 2021 at 12:12):

Where do you need the assumption XX is nonempty to start with?

Adam Topaz (May 28 2021 at 12:16):

Oh it's stupid really... the construction says: If SS is a discrete quotient of XX then there is an ii and a discrete quotient TT of XiX_i such that SS is the pullback of TT along XXiX \to X_i. This shows that XXiX \to X_i descends to an injective map STS \to T. To get the statement about locally constant functions f:XMf : X \to M, we first descend to a discrete quotient, obtain such a TT, but then we need to choose a section TST \to S to compose with to obtain XiMX_i \to M.

Adam Topaz (May 28 2021 at 12:16):

And to obtain such a section, we need SS to be nonempty

Peter Scholze (May 28 2021 at 12:23):

Wait, why a section? Is STS\to T surjective? In any case, can't you just define the image to be 00 for all elements of TT not in the image?

Adam Topaz (May 28 2021 at 12:24):

No it's injective

Adam Topaz (May 28 2021 at 12:24):

Yes, that's fine too.

Adam Topaz (May 28 2021 at 12:26):

Anyway, something has to be nonempty :smile:

Peter Scholze (May 28 2021 at 12:26):

But MM is a group (or is it more general here?), so it's nonempty...

Peter Scholze (May 28 2021 at 12:28):

Well, never mind in any case :-)

Adam Topaz (May 28 2021 at 12:48):

Yeah, I had it stated with M being any type. But now I've changed it to assuming that the type M is nonempty, so it should all be good now and X can be empty :smile:

Patrick Massot (May 28 2021 at 13:09):

I had the same kind of issues when proving Lemma 9.2. The fact that a normed group is always nonempty was very convenient.

Johan Commelin (Aug 20 2021 at 05:18):

Anyone else get deterministic timeouts in col_exact.lean around line 859 in VScode? (Compiling on the command-line works, luckily.)

Johan Commelin (Aug 20 2021 at 05:19):

These are really frustrating. Probably we need to very carefully mark certain things as irreducible. But I'm not very good at that dance.

Johan Commelin (Aug 20 2021 at 05:20):

Also... it seems that is not the way things can/should be solved in Lean 4. So if someone knows a future-proof way of making this work, that would be great!


Last updated: Dec 20 2023 at 11:08 UTC