Zulip Chat Archive

Stream: condensed mathematics

Topic: pseudonormed hierarchy


Johan Commelin (Jul 01 2021 at 10:09):

We have pseudonormed groups. For the second part, it will be useful to have pseudonormed rings as well.
It's not clear to me whether this should move to mathlib at some point. But it looks like it will be useful to develop (at least a partial) hierarchy of pseudonormed foobars.

Adam Topaz (Jul 01 2021 at 13:09):

We seem to have docs#semi_normed_comm_ring

Adam Topaz (Jul 01 2021 at 13:09):

What other foobars do we need?

Adam Topaz (Jul 01 2021 at 13:12):

Oh nevermind, I guess you really do mean pseudo and not semi.

Johan Commelin (Jul 01 2021 at 13:20):

Right, so we want rings RR with a filtration but subsets RcR_c (cR0c \in \R_{\ge 0}), such that

  • 0Rc0 \in R_c
  • Rc=Rc-R_c = R_c
  • Rc1+Rc2Rc1+c2R_{c_1} + R_{c_2} \subset R_{c_1 + c_2}
  • Rc1Rc2Rc1c2R_{c_1} \cdot R_{c_2} \subset R_{c_1c_2},

Johan Commelin (Jul 01 2021 at 13:20):

Ooh, and probably 1R11 \in R_1 ?

Adam Topaz (Jul 01 2021 at 13:38):

It feels like there is some general thing underlying such structures here, something between a seminorm and a bornology...

Johan Commelin (Jul 01 2021 at 13:53):

Scott had this categorical remark right? That these things were some sort of monoidal functors or something.

Adam Topaz (Jul 01 2021 at 13:58):

Right, but I don't see how the pseudo-normed rings would fit with that point of view

Eric Wieser (Jul 01 2021 at 14:00):

Does mathlib or LTE have any form of filtered algebras right now?

Adam Topaz (Jul 01 2021 at 14:07):

@Eric Wieser these objects are of a somewhat different nature -- RcR_c are not even additive subgroups.

Johan Commelin (Jul 01 2021 at 18:54):

I guess it makes sense to develop a bit of pseudonormed (add_)monoids, and plug that before the stuff on pseudonormed add_groups that we already have. And then combine all of this into pseudonormed (semi_)rings.

Johan Commelin (Jul 02 2021 at 10:08):

We will also want to have pseudonormed condensed foobars. This brings a question to the front that we've had some discussions about in the past, but now we need to get serious about it: how do we model (pseudonormed) groups/rings/monoids/modules in a topos?

Is a sheaf of abelian groups a sheaf with values in the category Ab, or do we want an abelian group object in the sheaf topos?

@Mario Carneiro Do you have any wisdom to inject in this design decision?

Peter Scholze (Jul 02 2021 at 10:12):

To my naive eyes, defining it as an abelian group object sounds like one has to rebuild all the definitions from scratch. Defining it as a sheaf with values in some category makes it look more like diagrams of known things, so one probably doesn't have to rebuild so much.

On the other hand, it may be that some more subtle things will be easier with the "internal" definition...

Kevin Buzzard (Jul 02 2021 at 11:47):

There has been discussion on the Discord about the merits of defining condensed abelian groups as group objects in condensed sets v functors to groups.

Peter Scholze (Jul 02 2021 at 11:50):

What was the conclusion?

Bhavik Mehta (Jul 02 2021 at 14:49):

My take is that we want to define it as a sheaf with values in Ab, and prove an equivalence to the internal version

Adam Topaz (Jul 02 2021 at 14:58):

Woudn't the dream be to be able to write something like

variables (A : CondensedType) [condensed_add_comm_group A]
...

Johan Commelin (Jul 02 2021 at 15:01):

That looks very tempting, especially if we can invoke some topos-meta-tactic-fu to port the entire (constructive part of the) algebraic hierarchy over to internal algebraic hierarchies in a topos.

Johan Commelin (Jul 02 2021 at 15:01):

But I'm not very well-versed in topos-meta-tactic-fu.

Peter Scholze (Jul 02 2021 at 15:04):

Maybe this will be the time when the Coq and Lean communities will come together ;-)

Adam Topaz (Jul 02 2021 at 15:04):

Does coq have topos-meta-tactic-fu?

Peter Scholze (Jul 02 2021 at 15:04):

@Adam Topaz Wouldn't the dream rather be variables (A : CondensedType) [add_comm_group A]?

Peter Scholze (Jul 02 2021 at 15:05):

I don't know, but they do make the point that everything they do automatically ports to any topos

Johan Commelin (Jul 02 2021 at 15:11):

@Cyril Cohen Do you have experience with auto-porting stuff from Type to a topos? (In our case we want to work with a very specific topos, not just an arbitrary one.)

Cyril Cohen (Jul 02 2021 at 15:26):

Johan Commelin said:

Cyril Cohen Do you have experience with auto-porting stuff from Type to a topos? (In our case we want to work with a very specific topos, not just an arbitrary one.)

:joy: :joy: I may have plans for that
If you internalize (parts of ?) the lambda calculus and/or tactics, then I guess you can replay the normal proof scripts inside your topos :shrug:

Bhavik Mehta (Jul 02 2021 at 15:26):

There was quite a bit of discussion about these things a while ago (perhaps @Reid Barton can chime in), see eg https://leanprover.zulipchat.com/#narrow/stream/236446-Type-theory/topic/externalization and also very recent discussions on this in the discord, I think auto-porting results in Lean as it stands is hard. Firstly we'd need to figure out how to take existing Lean proofs and interpret them in a topos, which would involve some nontrivial meta code), but also have enough topos theory to work with these things in practice

Bhavik Mehta (Jul 02 2021 at 15:28):

I think in my topos project I had just enough to interpret some parts of dependent type theory, but no guarantees that it's usable. I remember Reid also had some concerns that pullbacks might not behave nicely enough (eg that pulling back twice isn't the same on the nose as pulling back along a composition) for dependent type theory to work nicely internal to a topos in Lean

Johan Commelin (Jul 02 2021 at 15:30):

@Cyril Cohen You are also involved in this hierarchy builder project, right? Could that be put to use here?

Johan Commelin (Jul 02 2021 at 15:30):

Of course it would create a hierarchy that is a priori disjoint from the existing one in mathlib. Which will probably bite us.

Cyril Cohen (Jul 02 2021 at 15:33):

Yes, the hierarchy would be disjoint. But maybe you can generate them quantifying on an abstract topos and use them in Lean? I don't know

Bhavik Mehta (Jul 02 2021 at 15:34):

Ah here's the full thread: https://leanprover.zulipchat.com/#narrow/stream/236446-Type-theory/topic/How.20to.20get.20HoTT.20people.20into.20Lean/near/197486222, specifically https://leanprover.zulipchat.com/#narrow/stream/236446-Type-theory/topic/How.20to.20get.20HoTT.20people.20into.20Lean/near/197495583

Johan Commelin (Jul 02 2021 at 15:38):

@Bhavik Mehta thanks for digging up all those pointers

Bhavik Mehta (Jul 02 2021 at 15:54):

This is something I've dreamt about having in Lean for years :D

Bhavik Mehta (Jul 02 2021 at 15:57):

There's one approach I've been discussing with @Ken Lee which I feel might be accessible as well as useful: defining an internal monoid on X : C as Π δ, monoid (δ ⟶ X) such that precomposition is a monoid hom. Then we can automatically re-use all of mathlib's algebraic hierarchy, specifically it's easy to generalise this to internal rings, modules etc without a lot of boilerplate code; and we can then work with generalised elements in a category as if they're just elements of some type

Bhavik Mehta (Jul 02 2021 at 16:00):

This doesn't let you auto-port all results, but I think it could make it easy to transfer results: for instance here when I defined internal natural numbers in a cartesian closed category, the proof of some lemmas were just "unfold definitions then repeat the natural numbers proof", and some were almost exactly a natural numbers proof including using ring

Bhavik Mehta (Jul 02 2021 at 16:01):

Admittedly that file as a whole isn't a great example since it has muddled APIs for natural number objects, generalised elements all in one; ideally it should be three separate files

Johan Commelin (Jul 02 2021 at 17:18):

One thing that might help with guiding our decision is actually how to define pseudonormed insides a topos.

  • We could work with sheaves taking values in pseudonormed foobars
  • We could work with families of subobjects. Here we have two options:
    • Using the subobject API developed by Bhavik. I think this will give a feel that is pretty close to the handson definition that we have in Type
    • Using families of objects and compatible monomorphisms between them. I fear that we will quickly run into a huge slew of canonical isomorphisms that aren't defeqs.

Adam Topaz (Jul 02 2021 at 17:21):

I was actually wondering about this. Consider the category of pseudonormed sets. Is it possible to define, say, pseudonormed groups as something like an abelian group object in this category?

Adam Topaz (Jul 02 2021 at 17:37):

(The answer is, of course, no. E.g one has to specify that the operation is additive and hence use addition on the reals which index the filtration.)

Johan Commelin (Jul 02 2021 at 18:28):

Does it make sense to generalize the indexing set of the filtration?

Johan Commelin (Jul 02 2021 at 18:29):

To something like linearly ordered commutative groups with zero?

Adam Topaz (Jul 02 2021 at 18:30):

For the case of pseudonormed rings, it seems we really need an ordered semiring as the indexing type

Johan Commelin (Jul 02 2021 at 18:30):

Good point.

Adam Topaz (Jul 02 2021 at 18:33):

Modulo the distinction between rings and semirings, it seems that the indexing type for a pseudonormed foo should be an ordered foo

Damiano Testa (Jul 02 2021 at 18:34):

Why ordered foo? Isn't the order on the filtration determined by inclusion of sets?

Damiano Testa (Jul 02 2021 at 18:34):

Maybe foo below is enough?

Johan Commelin (Jul 02 2021 at 18:37):

@Damiano Testa You want Vc1Vc2V_{\le c_1} \subset V_{\le c_2} for c1c2c_1 \le c_2.

Damiano Testa (Jul 02 2021 at 18:38):

Oops, sorry! My mistake! And we did not even need Lean to expose this one!

Damiano Testa (Jul 02 2021 at 19:33):

Maybe I should not add another comment, but, if the base of the filtration satisfieshas_exist_add_of_le, then the inclusion is a consequence of the remaining containments, right? If a ≤ b, then b = c+a (by exist_...), so R_b contains R_c + R_a and R_c contains 0. If the hypothesis that Johan mentioned is the only place where an order of the filtering foo plays a role, it may not be needed that there is an order on it. I'm not sure if this is useful or not, but it is less structure to carry around, if the eventual application is with ℝ≥0.

Damiano Testa (Jul 02 2021 at 19:42):

At least, this might allow to split the arguments into a multiplicative one, the corresponding to_additive and a further layer dealing with a monotone map of ordered stuff, right?

Peter Scholze (Jul 02 2021 at 19:44):

I think I agree with Damiano's comment. In fact, I never explicitly asked for this monotonicity (but did check for myself that it follows, as Damiano observes)

Damiano Testa (Jul 02 2021 at 19:54):

While we are at it, should the union of the R_a equal R? I guess that I always assume this in my mental picture, but it probably should be a requirement, right?

Adam Topaz (Jul 02 2021 at 20:01):

How would this work for, say, pseudonormed multiplicative monoids?

Adam Topaz (Jul 02 2021 at 20:02):

don't we need to be able to say something like 1Ra1 \in R_a if 1a1 \le a?

Adam Topaz (Jul 02 2021 at 20:03):

There might be a trick along the lines that Damiano is suggesting, but I don't see it.

Peter Scholze (Jul 02 2021 at 20:04):

Hmm. Good question. I never considered the purely multiplicative version... it seems a bit strange.

Peter Scholze (Jul 02 2021 at 20:06):

@Damiano Testa I didn't put the condition as I didn't need it, even though it's satisfied in all examples.

Generally, feel free to change the definition to what you feel is best or is most easily formalized.

Damiano Testa (Jul 02 2021 at 20:10):

Adam, I had not fully developed the idea of splitting algebraic operations and order, it just seemed like it might be a good way of separating different parts of the argument. I am not sure what is a good answer to your question on monoids. With the additive version, you can invoke the "opposite" axiom, but the multiplicative version seems trickier...

Damiano Testa (Jul 02 2021 at 20:12):

Maybe this is one of those cases where you might want to assume the monotonicity in general, since in the applications you have it...

Damiano Testa (Jul 02 2021 at 20:13):

Peter, interesting that the condition on the union is not needed!

Damiano Testa (Jul 02 2021 at 20:14):

Anyway, I'm off to bed: good night all!

Peter Scholze (Jul 02 2021 at 20:15):

I guess that's like an enorm, that can take the value \infty.

Damiano Testa (Jul 03 2021 at 05:09):

Mostly for my own sake, I thought of making a definition. Feel free to disregard!

import algebra.algebra.basic

variables {R F : Type*} (filtr : F  set R)

class mul_filtr [has_mul R] [has_mul F] :=
(mul :  f₁ f₂ : F, (filtr f₁) * (filtr f₂)  filtr (f₁ * f₂))

class add_filtr [has_add R] [has_add F] :=
(add :  f₁ f₂ : F, (filtr f₁) + (filtr f₂)  filtr (f₁ + f₂))

attribute [to_additive] mul_filtr

class semiring_filtration [semiring R] [semiring F] [add_filtr filtr] [mul_filtr filtr] :=
(zero_mem : (0 : R)  filtr (0 : F))
(one_mem : (1 : R)  filtr (1 : F))

class filtration [ring R] [ring F] [add_filtr filtr] [mul_filtr filtr] :=
(neg :  f, - filtr f = filtr f)
(one_mem : (1 : R)  filtr (1 : F))

Johan Commelin (Jul 03 2021 at 05:22):

That indeed looks like the thing we want in Type. Next challenge: wite these defs in Cond :lol:

Damiano Testa (Jul 03 2021 at 07:27):

At least, I am glad that I learned enough Lean to formulate the easy version of definitions!

Johan Commelin (Jul 05 2021 at 07:04):

Maybe sheaves of modules are a good example to keep in mind. A sheaf of rings/abelian groups can be described in two ways: as a sheaf taking values in the category of rings/abelian groups, or as a ring/ab_group object in the category of set-valued sheaves.
But if you have a sheaf of rings O\mathcal O, then a sheaf of O\mathcal O-modules is not a "sheaf valued in foo-modules" (I guess you could take values in RModR\sum_R \mathrm{Mod}_R, but that will be a tricky definition). So a sheaf of modules seems to push us in the directions of "module object over the ring object O\mathcal O".

Kevin Buzzard (Jul 05 2021 at 07:38):

Note that we still don't have sheaves of modules in mathlib.

Kevin Buzzard (Jul 05 2021 at 07:41):

Note also that the sigma type trick is what we ultimately used when defining the structure sheaf on an affine scheme (we defined sections on U\sub Spec(R) to be a map from U to the disjoint union of the R_P with some properties -- this is not the definition in the stacks project

Scott Morrison (Jul 16 2021 at 04:32):

I thought we had all the ingredients available to say:

Scott Morrison (Jul 16 2021 at 04:33):

  • A ring is a monoid object in Ab, so
  • A sheaf of rings is the same as a sheaf of monoid objects in Ab
  • A sheaf of monoid objects in C is a monoid object in sheaves in C
  • Hence a sheaf of rings is a monoid object in sheaves in Ab
  • and we have module objects for monoid objects, hence we have sheaves of modules?

Scott Morrison (Jul 16 2021 at 04:34):

I haven't looked at this recently, maybe one or more of these ingredients is still missing.

Johan Commelin (Jul 16 2021 at 04:43):

@Scott Morrison Ooh, I forgot that we already had module objects!
Anyway, I guess that we will still need a bit of API around this to make it usable. Stacking all those constructions on top of each other, it will be quite annoying (for example) to write down M(S)M(S) for some sheaf of modules MM.

Scott Morrison (Jul 16 2021 at 04:44):

Yes, I agree this is only a "in principle the definition can be built out of existing lego" statement, nothing stronger about that being a good idea. :-)

Scott Morrison (Jul 16 2021 at 04:45):

somewhat similar to Adam's singular_homology definition :-)

Bhavik Mehta (Jul 16 2021 at 16:04):

Scott Morrison said:

  • A ring is a monoid object in Ab, so
  • A sheaf of rings is the same as a sheaf of monoid objects in Ab
  • A sheaf of monoid objects in C is a monoid object in sheaves in C
  • Hence a sheaf of rings is a monoid object in sheaves in Ab
  • and we have module objects for monoid objects, hence we have sheaves of modules?

I don't think we have your second point or third point yet? I'd definitely like to see these though

Adam Topaz (Jul 16 2021 at 16:10):

Do we even have the tensor product of sheaves in Ab?

Adam Topaz (Jul 16 2021 at 16:12):

I'm assuming we don't, since we can't sheafify yet.

Scott Morrison (Jul 17 2021 at 01:23):

Hmm, okay. I was being wildly optimistic. I'm hoping to get back to mathlib soon, maybe I'll look in this direction for a bit.


Last updated: Dec 20 2023 at 11:08 UTC