Zulip Chat Archive
Stream: condensed mathematics
Topic: Ext commutes with coproducts
Adam Topaz (May 10 2022 at 19:58):
Hi all,
I've been working on the fact that sends coproducts to products.
The statement is here:
https://github.com/leanprover-community/lean-liquid/blob/734501a160b2c70d7783ef0eab9d2efda97ca696/src/for_mathlib/derived/ext_coproducts.lean#L379
There are a few sorries left for this:
-
A coproduct of quasi isos is a quasi iso:
https://github.com/leanprover-community/lean-liquid/blob/734501a160b2c70d7783ef0eab9d2efda97ca696/src/for_mathlib/derived/ext_coproducts.lean#L238 -
Existence of projective replacements with a uniform bound in a family of complexes, given that the members of the family have a uniform upper bound (this should be more-or-less just repackaging what's already been done about projective replacements):
https://github.com/leanprover-community/lean-liquid/blob/734501a160b2c70d7783ef0eab9d2efda97ca696/src/for_mathlib/derived/lemmas.lean#L509
Adam Topaz (May 10 2022 at 19:58):
We will also need some naturality properties of this isomorphism, but those shouldn't be too difficult.
Adam Topaz (May 10 2022 at 20:14):
(the result about quasi-isos might need some additional assumptions on the abelian category)
Adam Topaz (May 16 2022 at 15:17):
The only two sorries left for this (ext commutes with coproducts) are here:
https://github.com/leanprover-community/lean-liquid/blob/9cef18ca127f1c740f7da2fcfc9b120f0b07cf3e/src/for_mathlib/ab4.lean#L102
Adam Topaz (May 16 2022 at 16:10):
Okay, it's down to one sorry:
https://github.com/leanprover-community/lean-liquid/blob/c94305820be33c01342fa53b41406f7a61648eb8/src/for_mathlib/ab4.lean#L107
This is just some statement about regular homology (I already added the necessary glue to pass to the homotopy category).
It should be doable in case anyone is bored (Kevin?)
Kevin Buzzard (May 16 2022 at 16:15):
I've got my hands full with showing that if |(X-2)g(X)|<=c then |g(X)|<=c' right now, so am no longer bored.
Adam Topaz (May 17 2022 at 21:03):
Quick update:
noncomputable
def Ext_coproduct_iso
[AB4 A]
{α : Type v}
(X : α → bounded_homotopy_category A)
[uniformly_bounded X]
(i : ℤ) (Y) :
((Ext i).obj (op (sigma_obj X))).obj Y ≅
pi_obj (λ a : α, ((Ext i).obj (op (X a))).obj Y) := ...
is sorry-free.
Unfortunately, the [uniformly_bounded X]
assumption makes it hard to state a correct version in terms of Ext
commuting with certain (co)limits, so we may have to prove the naturality conditions separately, although they should not be difficult.
Adam Topaz (May 17 2022 at 21:51):
Alright, I added the following naturality sttatements as well:
lemma Ext_coproduct_iso_naturality
[AB4 A]
{α : Type v}
(X₁ X₂ : α → bounded_homotopy_category A)
[uniformly_bounded X₁]
[uniformly_bounded X₂]
(g : X₁ ⟶ X₂)
(i : ℤ) (Y) :
((Ext i).map (sigma.desc (λ b, g b ≫ sigma.ι X₂ b) : ∐ X₁ ⟶ ∐ X₂).op).app Y ≫
(Ext_coproduct_iso _ _ _).hom =
(Ext_coproduct_iso _ _ _).hom ≫
pi.lift (λ b, pi.π _ b ≫ ((Ext i).map (g b).op).app Y) := ...
lemma Ext_coproduct_iso_naturality'
[AB4 A]
{α : Type v}
(X : α → bounded_homotopy_category A)
[uniformly_bounded X]
(i : ℤ) (Y₁ Y₂) (f : Y₁ ⟶ Y₂) :
((Ext i).obj (op (sigma_obj X))).map f ≫
(Ext_coproduct_iso _ _ _).hom =
(Ext_coproduct_iso _ _ _).hom ≫
pi.lift (λ a, pi.π _ a ≫ ((Ext i).obj _).map f) := ...
Johan Commelin (May 18 2022 at 04:19):
That's really great! We're getting close to ticking off two more ovals.
Johan Commelin (May 19 2022 at 05:46):
Hmm... we might also need the fact that chain_complex.to_bounded_homotopy_category
preserves coproducts.
Johan Commelin (May 19 2022 at 05:49):
We can prove that we have a termwise short exact sequence at the level of complexes, and then we want to apply Ext(_, V)
to that, and get a LES, and pull the coproducts out of the Ext.
Adam Topaz (May 19 2022 at 12:05):
@Johan Commelin that should be trivial to prove
Adam Topaz (May 19 2022 at 12:06):
Write it as a composition of going via the homotopy cat, and I think i proved both functors preserve coproducts
Adam Topaz (May 19 2022 at 12:07):
I can add it in a few mins
Johan Commelin (May 19 2022 at 12:09):
Aha, so you have this uniformly-bounded type class also for the homotopy cat?
Johan Commelin (May 19 2022 at 12:15):
I just pushed some stuff. There are plenty sorries :see_no_evil: The glue to get to first_target
is at least as painful as I was expecting it to be. Really everything has to be functorial... which makes it annoying to even write down statements.
Adam Topaz (May 19 2022 at 12:55):
@Johan Commelin where can I find chain_complex.to_bounded_homotopy_category
again?
Johan Commelin (May 19 2022 at 12:56):
derived/example.lean
Adam Topaz (May 19 2022 at 12:56):
I was wrong in my comment above, but it should still be easy to prove
Johan Commelin (May 19 2022 at 12:56):
We should really clean up that file
Adam Topaz (May 19 2022 at 12:56):
Agreed.
Adam Topaz (May 19 2022 at 15:37):
If anyone wants to get annoyed with completely trivial things that are hard in lean, here are a few sorries for you:
noncomputable
instance homological_complex_embed_preserves_coproducts {α : Type v}
{M N : Type} (c₁ : complex_shape M) (c₂ : complex_shape N) (e : c₁.embedding c₂) :
preserves_colimits_of_shape (discrete α)
(homological_complex.embed e : homological_complex A _ ⥤ _) :=
preserves_coproducts_aux
(homological_complex.embed e : homological_complex A _ ⥤ _)
(λ (X : α → homological_complex A c₁), homological_complex.hom.iso_of_components
sorry sorry) -- Ugh... this is so annoying!
sorry
They can be found here:
https://github.com/leanprover-community/lean-liquid/blob/c60d928c4fab0c3e9f87a8da50415515dca3b0bc/src/for_mathlib/derived/ext_coproducts.lean#L282
Kevin Buzzard (May 19 2022 at 20:19):
I've just removed the sorry
from invpoly/ses.lean
so on the tube home I'll get annoyed with this.
Kevin Buzzard (May 19 2022 at 20:20):
ooh, is the first goal full of option.rec
s and doesn't fit on one screen? Maybe I won't even have time to get annoyed with it, I might spend the journey trying to figure out what the question is.
Adam Topaz (May 19 2022 at 20:53):
The option.rec
stuff probably needs to be modified slightly.
Kevin Buzzard (May 19 2022 at 21:04):
{ simp_rw [h₁, h₂],
dsimp,
simp,
sorry -- still annoying
seems to change the first sorry into a statement of the form "d commutes with a map comprised of the composition of about 4 canonical isomorphisms"
Adam Topaz (May 19 2022 at 21:21):
Oh nice! It should be doable now!
Adam Topaz (May 19 2022 at 21:23):
take a look at the lemma called embed.d_eq_of_some_of_some` (or some variant)
Adam Topaz (May 19 2022 at 21:35):
I'm working on that sorry now
Adam Topaz (May 19 2022 at 21:41):
Okay, that sorry is killed.... but
-- still annoying
remains
Kevin Buzzard (May 19 2022 at 21:46):
Oh lol I thought the hard part was pushing the d through the isomorphisms :-)
Adam Topaz (May 19 2022 at 21:56):
Alright, the remaining sorry is done as well!
Adam Topaz (May 19 2022 at 21:56):
It's (very) far from the cleanest proof...
Kevin Buzzard (May 19 2022 at 21:59):
I would send a :tada: but I'm getting an exciting new error "failed to add reaction" on Android
Adam Topaz (May 19 2022 at 22:21):
I think in android congratulations
is broken but tada
works? :shrug:
Adam Topaz (May 19 2022 at 22:21):
:congratulations:
Johan Commelin (May 20 2022 at 05:49):
Kevin Buzzard said:
I've just removed the
sorry
frominvpoly/ses.lean
so on the tube home I'll get annoyed with this.
Unfortunately there is no oval for this in the graph. But I'm certainly glad that this is done!
Kevin Buzzard (May 20 2022 at 05:53):
Changing the subject a bit then: do you now have a clear overview of all the remaining sorry
s, eg are you convinced that they're all fillable without any refactors, is there any sorry
ed data, are there people working on every sorry
, are there things which can be farmed out (you've done a very good job of farming out sorries to me, you directed me to problems that were within my skillset to solve etc).
Johan Commelin (May 20 2022 at 06:00):
Yesterday I added a bunch of sorry
s that are data. :see_no_evil: They are "canonical" isomorphisms between certain functors.
I can not promise that we don't need any further refactors. The glue between the first and the second part of the project is not very pleasant.
Johan Commelin (May 20 2022 at 06:07):
Of course, hindsight is 20-20. But if I could start again, there are two things that I would do differently in the first part:
- Given
M : ProFiltPNGWithTinv
andBD : breen_deligne.data
+ suitable constants, defineFPSystem : chain_complex (Free int Profinite) nat
. That's a fundamental kind of object, where a lot of the computations happen. After that, apply theV-hat
functor and takeT^{-1}
-invariants.- Currently, all the computations happen after apply
V-hat(_)^{T-1}
functor, making many proofs complicated and messy. - It would be one contribution to make the glue easier (although I have now defined
FPSystem
and glued it to the first part, so from the pov of the second part, we can now basically assume thatFPSystem
was used in the first part.
- Currently, all the computations happen after apply
- Minor technical issue: Use
Free int
in the definition of Breen-Deligne data, instead offree_abelian_group
. It would mesh better with the point above. Alsofree_abelian_group
lacks API, even though it occasionally has a nice defeq. But in the end,finsupp
is just better.- Eg. given a term
x : free_abelian_group X
, it is very annoying to talk about the support ofx
. But with finitely supported functions toint
this is trivial.
- Eg. given a term
Last updated: Dec 20 2023 at 11:08 UTC