Zulip Chat Archive
Stream: condensed mathematics
Topic: Dual snake lemma
Riccardo Brasca (May 19 2021 at 09:10):
Can someone (AKA @Peter Scholze ) give me a little hint for the math proof of the dual snake lemma? The precise statement I am trying to prove is
variables (M M' N : system_of_complexes.{u}) (f : N ⟶ M) (g : M ⟶ M')
lemma weak_normed_snake_dual {k k' K K' r₁ r₂ : ℝ≥0}
[hk : fact (1 ≤ k)] [hk' : fact (1 ≤ k')]
{m : ℕ} {c₀ : ℝ≥0}
(hM : M.is_weak_bounded_exact k K (m+1) c₀)
(hM' : M'.is_weak_bounded_exact k' K' (m+1) c₀)
(hM_adm : M.admissible)
(hg : ∀ c i (x : M c i), ∥g x∥ ≤ r₁ * ∥x∥)
(Hg : ∀ (c : ℝ≥0) [fact (c₀ ≤ c)] (i : ℕ) (hi : i ≤ m+1+1) (y : M' c i),
∃ (x : M c i), g x = y ∧ ∥x∥ ≤ r₂ * ∥y∥)
(hg : ∀ c i, (f.apply : N c i ⟶ M c i).range = g.apply.ker)
(hfker : system_of_complexes.is_kernel f) :
N.is_weak_bounded_exact (k * k') (K' * (K + 1)) m c₀
(with the constants at the end that will be changed).
So we have , of controlled norm and surjective, with the system of kernels (let's ignore all the , and so on, so no restriction). We want to prove that is blah blah exact. Let , so and I can use exactness of to produce . I guess we need to look at what happens to . My idea was to use exactness of to produce and lift it to . The standard snake lemma tells me to look at , that is in the kernel of and so it lies in . But now this is not true anymore and I don't see how to produce an element in the kernel of ... thank's!!
Peter Scholze (May 19 2021 at 09:14):
Why is it not in the kernel of ? I'd have expected that this is true, at least after a further restriction?
Riccardo Brasca (May 19 2021 at 09:25):
Well, the image by is . By construction of we can control its norm using the norm of (again I am ignoring restrictions). Now the norm of is related to the norm of , but I don't see why anything of these things should be .
Peter Scholze (May 19 2021 at 09:31):
Didn't you choose so that ?
Peter Scholze (May 19 2021 at 09:33):
I have the feeling we really need to put all the 's in to resolve this
Riccardo Brasca (May 19 2021 at 09:36):
Let me write all the details
Riccardo Brasca (May 19 2021 at 09:41):
Let , so and I can use exactness of to produce such that . Let . By exactness of we can find such that . We can lift it to . Let consider . Its image by is that satisfies . Let be a lift of with norm smaller than . By construction . We need to control
Peter Scholze (May 19 2021 at 09:42):
Ah!! You are using weak exactness here! Actually, we only need the lemma in a situation where everything is complete, and anyways we know strong exactness
Peter Scholze (May 19 2021 at 09:43):
I'd guess one should also be able to prove it with weak exactness... let me try to do it on paper, but feel free to write up the version with strong exactness
Riccardo Brasca (May 19 2021 at 09:44):
OK, this eliminates the epsilon, but still I have . Is ?
Riccardo Brasca (May 19 2021 at 09:44):
Hmm, maybe trivially yes
Peter Scholze (May 19 2021 at 09:45):
Ah sorry I was starting with in the kernel of , in which case this would be trivially zero
Peter Scholze (May 19 2021 at 09:46):
OK, let me try to write down an actual argument...
Peter Scholze (May 19 2021 at 09:46):
maybe even for weak exactness (for consistency's sake)
Peter Scholze (May 19 2021 at 09:50):
By the way, if you have some such that is small, as opposed to exactly , you can always modify it by changing by a small lift of : This shows that there is some close to with .
Peter Scholze (May 19 2021 at 09:54):
So coming back to the above, one ought to be able to prove that has norm bounded in terms of the norm of . Together with what I said in my previous message, this should be enough to conclude.
Riccardo Brasca (May 19 2021 at 09:56):
Ah yes, this looks promising. Let me check
Peter Scholze (May 19 2021 at 11:26):
How does it look?
Riccardo Brasca (May 19 2021 at 11:28):
So far I am here
Let , so and I can use exactness of to produce such that . Let . By exactness of we can find such that . We can lift to . Let consider , whose image by is . Let be a lift of with norm smaller than . By construction . We need to control
.
Now I don't see immediatly how to go from the norm of to the norm of , but I was having lunch, and I didn't check the computations.
Peter Scholze (May 19 2021 at 11:37):
I think you need to be more careful with the estimate of : Use rather and the estimate on .
Riccardo Brasca (May 19 2021 at 11:47):
OK, so we have
.
Peter Scholze (May 19 2021 at 11:48):
That's what we wanted, right?
Riccardo Brasca (May 19 2021 at 11:51):
Yes, this proves
variables (M M' N : system_of_complexes.{u}) (f : N ⟶ M) (g : M ⟶ M')
lemma weak_normed_snake_dual {k k' K K' r₁ r₂ : ℝ≥0}
[hk : fact (1 ≤ k)] [hk' : fact (1 ≤ k')]
{m : ℕ} {c₀ : ℝ≥0}
(hM : M.is_weak_bounded_exact k K (m+1) c₀)
(hM' : M'.is_weak_bounded_exact k' K' (m+1) c₀)
(hM_adm : M.admissible)
(hg : ∀ c i (x : M c i), ∥g x∥ ≤ r₁ * ∥x∥)
(Hg : ∀ (c : ℝ≥0) [fact (c₀ ≤ c)] (i : ℕ) (hi : i ≤ m+1+1) (y : M' c i),
∃ (x : M c i), g x = y ∧ ∥x∥ ≤ r₂ * ∥y∥)
(hg : ∀ c i, (f.apply : N c i ⟶ M c i).range = g.apply.ker)
(hfker : system_of_complexes.is_kernel f) :
N.is_weak_bounded_exact (k * k') (K + r₁ * r₂ * K * K') m c₀
I am 99% sure there will be no Lean problems (same for the strong version if we need it).
Johan Commelin (May 19 2021 at 11:55):
Wow! That went pretty fast! I remember that the original snake lemma took a bit more work
Kevin Buzzard (May 19 2021 at 11:55):
you mean the thing you proved as your first lean project ever in about 2018?
Johan Commelin (May 19 2021 at 11:56):
No, I meant the one in LTE
Johan Commelin (May 19 2021 at 11:56):
The original normed snake
Kevin Buzzard (May 19 2021 at 11:57):
Oh OK :-) I could imagine that Riccardo now was faster than you in 2018 :-)
Johan Commelin (May 19 2021 at 11:57):
What I proved in 2018 was the five lemma, and it also took some time (-;
Riccardo Brasca (May 19 2021 at 11:58):
Well, I have the math proof, not yet the Lean proof...
Riccardo Brasca (May 19 2021 at 11:59):
I will try to do it today
Riccardo Brasca (May 19 2021 at 11:59):
And the "subspace norm" is easier than the quotient norm...
Riccardo Brasca (May 19 2021 at 15:10):
@Johan Commelin With the new complexes, what is the strategy to deal with the following situation?
Let a complex that is bla bla exact and . I have , and I use exactness to build an element . Now I want to consider , where the is the one given in the definition of exactness (I mean, with i
and j
). If then , but is still in . Should I do a by_cases
and avoid the addition if ? (This is going to work since anyway if )
Riccardo Brasca (May 19 2021 at 15:20):
(deleted)
Adam Topaz (May 19 2021 at 15:23):
You can use the X_prev
construction which gives the zero object if there is no previous object
Riccardo Brasca (May 19 2021 at 15:26):
I don't think I can chose, is given by
def is_bounded_exact
(k K : ℝ≥0) (m : ℕ) [hk : fact (1 ≤ k)] (c₀ : ℝ≥0) : Prop :=
∀ c (hc : fact (c₀ ≤ c)) i (hi : i ≤ m) (x : C (k * c) i),
∃ (i₀ j : ℕ) (hi₀ : i₀ = i - 1) (hj : i + 1 = j)
(y : C c i₀), ∥res x - C.d _ _ y∥ ≤ K * ∥C.d i j x∥
So it will be in if . But C.d _ _ y = 0
in this case, since C.d 0 0 = 0
,
Adam Topaz (May 19 2021 at 15:28):
I see... So to really use the new complexes API, I think this definition might need to be changed
Johan Commelin (May 19 2021 at 15:31):
I don't know what's best given the new complexes.
Johan Commelin (May 19 2021 at 15:31):
But my idea was indeed that you would get something in degree 0-1 = 0
and then use that C.d 0 0 = 0
. So all should be well.
Riccardo Brasca (May 19 2021 at 15:33):
Ah wait, now I can write d _ _ y
instead of just d y
, and with the correct _
this should work
Riccardo Brasca (May 19 2021 at 16:10):
Hmm, it doesn't work: I really want to consider d i' i'+1 y
, that is given by the exactness condition, and the idea is to add x
to this. I guess that a by_cases
will work :grimacing:
Johan Commelin (May 19 2021 at 16:21):
@Riccardo Brasca You can do cases i
instead of by_cases
.
Johan Commelin (May 19 2021 at 16:21):
That might save you nasty rewrites.
Riccardo Brasca (May 19 2021 at 16:28):
Yes, but then I will have i.succ
everywhere... I will see
Riccardo Brasca (May 19 2021 at 16:29):
In any case the beginning of the proof is here
https://github.com/leanprover-community/lean-liquid/blob/normed_snake_dual/src/normed_snale_dual.lean
There are a lot of sorry in the calc
bloc, but they should be easy
Johan Commelin (May 19 2021 at 16:31):
Riccardo Brasca said:
Yes, but then I will have
i.succ
everywhere... I will see
I hope dsimp only [nat.succ_eq_add_one]
will fix that.
Johan Commelin (May 19 2021 at 16:31):
But by_cases
is also an option, and then subst
.
Riccardo Brasca (May 19 2021 at 16:42):
I only need i ≠ 0
to rewrite i' + 1 = i
(here i' = i - 1
) inside a differential. I was afraid of "motive is not type correct", but it worked
Johan Commelin (May 19 2021 at 16:53):
@Riccardo Brasca You've got snale
in your file name :stuck_out_tongue_wink: :snail:
Johan Commelin (May 19 2021 at 17:29):
By the way, I think I've got the complexes ready to which we want to apply this lemma.
We want to prove that the complex on the left ("the kernel") is
((thm95.double_complex BD.data c_ r r' V Λ M (N c' r r' m)).col j).is_weak_bounded_exact (k₁ m) (K₁ m) m (c₀ m Λ)
But the constants (k₁ m) (K₁ m)
still have to be defined, and we can basically make them whatever we want/need (-;
Johan Commelin (May 19 2021 at 17:29):
The need to be "large" in some sense. But we can give them a nice definitional shape if that is convenient.
Riccardo Brasca (May 19 2021 at 18:24):
Feel free to merge into master the branch normed_snake_dual
, the statement should be correct.
Riccardo Brasca (May 19 2021 at 18:25):
Also the structure of the proof is there, I am killing all the mini sorry in the calc
bloc to check that I didn't made stupid mistakes on paper
Riccardo Brasca (May 19 2021 at 22:14):
normed_snake_dual
is now in master. The file contain 10 sorry
at the moment.
The first one, in admissible_of_kernel
said that a system of complexes, isomorphic to the kernel of a morphism of system of complexes with admissible domain, is admissible. This is obvious since we can compute the norm after applying the morphism. Is this a special case of something already there?
The next 8 sorry
are trivial, 0 < 37+ε ^ 37
if 0 < ε
.
The last one is the only one not completely easy: it is the theorem in the case i=0
. The same proof does not literally apply, but indeed it should be easier. I will do it tomorrow, trying to avoid code duplication as much as possible.
Riccardo Brasca (May 19 2021 at 22:16):
Also, the giant calc
should be golfed, there are lines, whose proof is rfl
, that I don't understand why I need them.
David Michael Roberts (May 19 2021 at 23:15):
If we had a proof of the snail lemma for free that would be impressive https://doi.org/10.1016/j.jpaa.2016.06.001
Riccardo Brasca (May 19 2021 at 23:46):
Also the sorry
corresponding to i=0
is now reduced to an (easy) inequality in ℝ
. I pushed this to the branch normed_snake_dual
, I will put it in master
tomorrow.
Johan Commelin (May 20 2021 at 03:13):
Thanks @Riccardo Brasca, that's great work!
Johan Commelin (May 20 2021 at 03:13):
I don't think admissible_of_kernel
follows from something that we already have.
Riccardo Brasca (May 20 2021 at 08:05):
Now all the sorry are completely trivial. I have some teaching stuff to do today, but I will finish it before the weekend.
Riccardo Brasca (May 20 2021 at 09:00):
BTW, to use lemmas like normed_group_hom.map_sub
I had to change f m
to f.apply m
(here f : M ⟶ N
is a morphism of system of complexes and m: M c i
for some c
and i
). This is just a rfl
or a change
, but avoiding it would golf the proof a little bit. Am I missing something obvious here? library_search
does not find a lemma saying exactly that.
Johan Commelin (May 20 2021 at 09:10):
Nah, I don't think we have such lemmas yet.
Riccardo Brasca (May 20 2021 at 09:21):
OK, I will add it. What is a good name? system_of_complexes.hom_apply
?
Johan Commelin (May 20 2021 at 09:40):
Sounds good to me
Riccardo Brasca (May 20 2021 at 21:04):
weak_normed_snake_dual
is sorry
free (but still to be golfed).
Riccardo Brasca (May 20 2021 at 21:15):
Do we need the strong version?
Johan Commelin (May 21 2021 at 04:19):
@Riccardo Brasca Great! I don't think we need the strong version.
Johan Commelin (May 21 2021 at 04:51):
Thanks so much for doing this!
Johan Commelin (May 21 2021 at 04:52):
I realize that I was maybe a bit to fast with suggesting to abstract away r1
and r2
into constants.
How hard do you think it would be to replace the assumption
(Hg : ∀ (c : ℝ≥0) [fact (c₀ ≤ c)] (i : ℕ) (hi : i ≤ a + 1 + 1) (y : P c i),
∃ (x : N c i), g x = y ∧ ∥x∥ ≤ r₂ * ∥y∥)
with
(Hg : ∀ (c : ℝ≥0) [fact (c₀ ≤ c)] (i : ℕ) (hi : i ≤ a + 1 + 1) (\eps : \nnreal) (h\eps : 0 < \eps) (y : P c i),
∃ (x : N c i), g x = y ∧ ∥x∥ ≤ (r₂ + \eps) * ∥y∥)
Peter Scholze (May 21 2021 at 05:22):
I guess we don't need the strong version (although for this part of the argument, I think it wouldn't matter -- all argument should directly give the strong version here, and the constants would also be the same. But in the end we are just trying to get input into 9.6, and there only weak exactness is required).
Riccardo Brasca (May 21 2021 at 06:48):
What constant do you need? Now the result is that the kernel is K + r₁ * r₂ * K * K'
-exact, with r₂
arbitrary. If ε
is big then it will change the constant for sure.
Johan Commelin (May 21 2021 at 06:52):
Hmm... the point is that 9.2 gives us this "forall \eps > 0
, the norm is bounded by r_2 + \eps
"
Johan Commelin (May 21 2021 at 06:52):
For some r_2
Johan Commelin (May 21 2021 at 06:53):
Well, to be more precise: "forall \eps > 0
, there exists a y
such that ... , ..., the norm is bounded by r2 + \eps
"
Johan Commelin (May 21 2021 at 06:54):
So in the proof of dual snake you can choose y
such that \eps
is as small as you want it to be
Riccardo Brasca (May 21 2021 at 06:58):
I see. This gives
(Hg : ∀ (c : ℝ≥0) [fact (c₀ ≤ c)] (i : ℕ) (hi : i ≤ a + 1 + 1) (y : P c i),
∃ (x : N c i), g x = y ∧ ∥x∥ ≤ (r₂ + 1) * ∥y∥)
So we automatically get K + r₁ * (r₂ + 1) * K * K'
-exactness. If we want K + r₁ * r₂ * K * K'
-exactness I have to check the proof, but I think it's OK.
Riccardo Brasca (May 21 2021 at 06:58):
(deleted)
Johan Commelin (May 21 2021 at 07:05):
Sounds good!
Riccardo Brasca (May 21 2021 at 08:35):
If we need the strong version I have proved it (it took 10 minutes, the same exact proof works, much easier then the cokernel case)
Johan Commelin (May 21 2021 at 08:40):
@Riccardo Brasca with the + \eps
in the assumption?
Riccardo Brasca (May 21 2021 at 10:54):
variables (M N P : system_of_complexes.{u}) (f : M ⟶ N) (g : N ⟶ P)
lemma normed_snake_dual {k k' K K' r₁ r₂ : ℝ≥0}
[hk : fact (1 ≤ k)] [hk' : fact (1 ≤ k')]
{a : ℕ} {c₀ : ℝ≥0}
(hN : N.is_bounded_exact k K (a + 1) c₀)
(hP : P.is_bounded_exact k' K' (a + 1) c₀)
(hN_adm : N.admissible)
(hgnorm : ∀ c i (x : N c i), ∥g x∥ ≤ r₁ * ∥x∥)
(Hg : ∀ (c : ℝ≥0) [fact (c₀ ≤ c)] (i : ℕ) (hi : i ≤ a + 1 + 1) (y : P c i),
∃ (x : N c i), g x = y ∧ ∥x∥ ≤ r₂ * ∥y∥)
(hg : ∀ c i, (f.apply : M c i ⟶ N c i).range = g.apply.ker)
(hfiso : ∀ c i, @isometry (M c i) (N c i) _ _ f.apply) :
M.is_bounded_exact (k * k') (K + r₁ * r₂ * K * K') a c₀ :=
Riccardo Brasca (May 21 2021 at 10:55):
Is the same as the weak one. If you are ready to lose something in the constant at the end just use you assumption with ε
and you will get M.is_bounded_exact (k * k') (K + r₁ * (r₂ + 1) * K * K') a c₀
Riccardo Brasca (May 21 2021 at 10:56):
If we really need M.is_bounded_exact (k * k') (K + r₁ * r₂ * K * K') a c₀
no problem, I will think about it
Johan Commelin (May 21 2021 at 11:08):
I don't think it's an urgent problem. But it is of course nice to optimize the constants.
Johan Commelin (May 21 2021 at 11:08):
(Now I need to run. I'll be gone for an hour or two. Ciao.)
Riccardo Brasca (May 21 2021 at 11:17):
My impression is that we can (easily ) prove that a system of complexes that is K + ε
- weak exact for all 0 < ε
is K
- weak exact, so taking a sufficiently small ε
in your Hg
we would get K + r₁ * r₂ * K * K'
-weak exactness.
Riccardo Brasca (May 21 2021 at 11:19):
For strong exactness, we can obtain K + r₁ * r₂ * K * K' + ε
-exactness, but to get rid of the ε
we have to modify the proof (I don't think K+ε
-exactness implies K
-exactness in general).
Peter Scholze (May 21 2021 at 11:36):
Yeah, I think in the strong version, with Johan's hypothesis, one will lose some in the conclusion.
Peter Scholze (May 21 2021 at 11:37):
Don't worry about any of this; we're having doubly-exponential growth at least in other parts of the argument...
Riccardo Brasca (May 21 2021 at 15:08):
I've golfed the proof a little bit and pushed to master. Now normed_snake_dual
contains complete proofs of the dual weak snake lemma and of the dual strong snake lemma. The file is quite slow, but I guess we just use it and forget about it. (If we want to improve the speed, there are lemmas (proved by ring
) that are used in both proof and that can be proved only once)
Last updated: Dec 20 2023 at 11:08 UTC