mathlib icon indicating copy to clipboard operation
mathlib copied to clipboard

feat(analysis/normed/ring_seminorm): add ring_seminorm, ring_norm

Open mariainesdff opened this issue 3 years ago • 13 comments

We define structures ring_seminorm and ring_norm. These definitions are useful when one needs to consider multiple (semi)norms on a given ring.


Open in Gitpod

mariainesdff avatar May 12 '22 19:05 mariainesdff

Are you aware of the seminorm structure we already have? I'm a little worried this is duplicating it, just with a different sort of bundling

eric-wieser avatar May 13 '22 07:05 eric-wieser

Are you aware of the seminorm structure we already have? I'm a little worried this is duplicating it, just with a different sort of bundling

The structure seminorm is for defining module seminorms over a normed ring, that is not what I want here - I want a structure that tells me that a given function is a (ring) seminorm on a given ring.

mariainesdff avatar May 13 '22 09:05 mariainesdff

I think if we really want both is_seminorm and seminorm, then we should rename the concept in this file to is_mul_seminorm or similar.

Is it the case that anything satisfying is_mul_seminorm can be turned into seminorm, or does neither imply the other.

eric-wieser avatar May 13 '22 10:05 eric-wieser

I think if we really want both is_seminorm and seminorm, then we should rename the concept in this file to is_mul_seminorm or similar.

I would not mind renaming is_seminorm to is_ring_seminorm.

Is it the case that anything satisfying is_mul_seminorm can be turned into seminorm, or does neither imply the other.

If you have an is_ring_seminorm on k that satisfies the triangle inequality (which I probably should include in the definition), and you use this seminorm to put a semi_normed_ring kstructure on k, then this is trivially a seminorm when regarding k as a module over itself (I think this may be what you mean).

However, I explicitly want to avoid having a preferred seminorm on k; I want to be able to consider several ring seminorms on k (and a second is_ring_seminorm on k would not be a seminorm with respect to a preferred semi_normed_ring k structure).

mariainesdff avatar May 13 '22 10:05 mariainesdff

If you have an is_seminorm_ring on k that satisfies the triangle inequality (which I probably should include in the definition)

This was really what I was getting at; it seems odd for a seminorm not to satisfy the triangle inequality.

I still wonder if a better approach would be to do

structure ring_seminorm extends seminorm 𝕜 E

eric-wieser avatar May 13 '22 11:05 eric-wieser

Ah, I understand your comment now; I hadn't realized that seminorm 𝕜 E relied on an underlying global norm on 𝕜

eric-wieser avatar May 13 '22 11:05 eric-wieser

(misclick, sorry)

eric-wieser avatar May 13 '22 11:05 eric-wieser

This was really what I was getting at; it seems odd for a seminorm not to satisfy the triangle inequality.

Yes, this was an oversight on my part (since I was using is_ring_seminorm together with is_nonarchimedean in my applications). I've now included the triangle inequality as part of the definition of is_ring_seminorm.

mariainesdff avatar May 13 '22 14:05 mariainesdff

Yeah this PR is something a bit different to seminorm, which is for modules. My impression of what's going on here is that both analysts and algebraists want to talk about norms and seminorms, but the analysts are always working over the reals and complexes with their fixed usual norm, and want to talk about seminorms on vector spaces over these fields, whereas the algebraists don't have this "fixed base" and want to talk about seminorms on fields like the rationals, finite extensions of the rationals, finite extensions of the p-adic numbers, integers of these things, and so on. I guess calling the main definition is_ring_seminorm is one way of flagging this difference.

kbuzzard avatar May 13 '22 17:05 kbuzzard

Ah, I understand your comment now; I hadn't realized that seminorm 𝕜 E relied on an underlying global norm on 𝕜

Thinking again, I don't think this matters; you can always just set 𝕜 = punit and then it becomes irrelevant. So maybe extending seminorm is still the right way to go.

eric-wieser avatar May 13 '22 17:05 eric-wieser

Thinking again, I don't think this matters; you can always just set 𝕜 = punit and then it becomes irrelevant. So maybe extending seminorm is still the right way to go.

I hadn't thought of this. I will try it out. Update: This approach doesn't work because a general ring is not a module over punit. I will replace is_ring_seminorm by a structure ring_seminorm extending add_monoid_seminorm from #14336.

mariainesdff avatar May 17 '22 13:05 mariainesdff

I don't really feel comfortable reviewing this, the code looks good, but I cannot judge whether this makes sense mathematically.

mcdoll avatar Jul 30 '22 15:07 mcdoll

:v: mariainesdff can now approve this pull request. To approve and merge a pull request, simply reply with bors r+. More detailed instructions are available here.

bors[bot] avatar Aug 11 '22 16:08 bors[bot]

bors r+

mariainesdff avatar Aug 15 '22 10:08 mariainesdff

Canceled.

bors[bot] avatar Aug 15 '22 11:08 bors[bot]

If you agree with the folder scheme I described at https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Reorganising.20norms, could you move the new material to analysis.normed.field.seminorm or analysis.normed.ring.seminorm? I suspect this second option only makes sense if normed_ring doesn't live with normed_field in analysis.normed.field.basic.

YaelDillies avatar Aug 19 '22 13:08 YaelDillies

If you agree with the folder scheme I described at https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Reorganising.20norms, could you move the new material to analysis.normed.field.seminorm or analysis.normed.ring.seminorm?

I've moved it to analysis.normed.ring.seminorm (to me that seems the better option). Assuming CI works, would this be ready to merge? Otherwise it will have to wait until September 5th.

mariainesdff avatar Aug 19 '22 13:08 mariainesdff

~~@YaelDillies, you said that #16237 already added add_group_seminorm.trivial_norm but I can't find it. Does it have a different name?~~ I guess it's the 1 norm.

mariainesdff avatar Sep 13 '22 11:09 mariainesdff

~~I think add_group_seminorm.trivial_norm f is just f ≠ 0?~~

eric-wieser avatar Sep 13 '22 13:09 eric-wieser

Can I go ahead and merge it now?

mariainesdff avatar Sep 15 '22 10:09 mariainesdff

Well I would prefer for you to introduce the hom classes straight away. If you don't know how to, I can do it.

YaelDillies avatar Sep 15 '22 10:09 YaelDillies

Well I would prefer for you to introduce the hom classes straight away. If you don't know how to, I can do it.

I am happy to do that in a new PR after this one is merged. The thing is that I don't need the hom classes,, but I have needed the ring_norm and ring_seminorm definitions for months now - I would rather not wait for something that could be PRd in parallel.

mariainesdff avatar Sep 15 '22 10:09 mariainesdff

Here they are.

YaelDillies avatar Sep 15 '22 12:09 YaelDillies

I think it's fair merging now

YaelDillies avatar Sep 15 '22 18:09 YaelDillies

bors r+

mariainesdff avatar Sep 15 '22 21:09 mariainesdff

Pull request successfully merged into master.

Build succeeded:

bors[bot] avatar Sep 15 '22 23:09 bors[bot]