Zulip Chat Archive

Stream: new members

Topic: Bounded bilinear forms


Moritz (Nov 16 2021 at 21:32):

I was playing around with Lax-Milgram and I noticed that the definitions of is_bounded_bilinear_map in analysis/normed_space/bounded_linear_maps and bilinear_form in linear_algebra/bilinear_form are quite different, the former defines a proposition and the later defines the object. Is this intentional or should is_bounded_bilinear_map be a lemma and a new definition bounded_bilinear_map, which is of the same form as the one in linear_algebra/bilinear_form?

Heather Macbeth (Nov 16 2021 at 21:48):

@Moritz, perhaps you are asking whether the concept is_bounded_bilinear_map should be "bundled". Is that right?

Heather Macbeth (Nov 16 2021 at 21:52):

That is, you're asking whether it would be better to define something like

structure bounded_bilinear_form extends bilin_form R M :=
(bounded :  (C : ) (H : C > 0),  (x : E) (y : F), f (x, y)  (C * x) * y)

Moritz (Nov 16 2021 at 21:55):

I was asking whether one could imitate the definition of bilin_form, but extending it sounds even better

Heather Macbeth (Nov 16 2021 at 21:57):

I believe this is a case where it was written "unbundled" a long time ago, before bundling everything became the mathlib convention. It seems that @Patrick Massot wrote the first version of this file back in 2018 so he can probably confirm this.

Heather Macbeth (Nov 16 2021 at 21:58):

Offhand, I would say, yes, it might be good to change to a bundled definition, but it might be a fair bit of work to switch over.

Heather Macbeth (Nov 16 2021 at 21:59):

For something related which is already bundled, check out docs#continuous_multilinear_map

Heather Macbeth (Nov 16 2021 at 22:04):

Mathlib often goes through large-scale refactors like this, so if there's a consensus, you'd be welcome to switch it over (but we usually try to save our newcomers from having to do this kind of tedious work :smiley: )

Kevin Buzzard (Nov 16 2021 at 22:06):

I've actually found that bundling stuff is really educational! Several Imperial students bundled basic algebraic stuff very early on in their career and I'm convinced it taught them a lot. "Look at this file, now try to do the same with this thing"

Moritz (Nov 16 2021 at 22:06):

I feel it is more tedious to prove Lax-Milgram with the unbundled version :-D

Heather Macbeth (Nov 16 2021 at 22:07):

(I am delighted to hear someone is attacking Lax-Milgram!)

Moritz (Nov 16 2021 at 22:07):

Yeah, refactoring the stuff in linear_algebra was really instructive, even though it was not that difficult. I am just afraid that if I start refactoring everything I find, I will never prove anything in Lean

Eric Rodriguez (Nov 16 2021 at 22:08):

welcome to what we do here ;b

Patrick Massot (Nov 16 2021 at 22:08):

I don't think I introduced bounded bilinear maps. But I can confirm that nothing was bundled in 2018

Heather Macbeth (Nov 16 2021 at 22:13):

Ah, in fact it was @Sebastien Gouezel, in #966.

Heather Macbeth (Nov 16 2021 at 22:17):

Moritz said:

I feel it is more tedious to prove Lax-Milgram with the unbundled version :-D

Moritz said:

I am just afraid that if I start refactoring everything I find, I will never prove anything in Lean

Indeed, there's a bit of "tedious either way" going on here .... but my guess is that it'll be slightly pleasanter (for now) to do it with the existing, unbundled version, feel free to recruit help on Zulip for things that feel harder than they should be.

Heather Macbeth (Nov 16 2021 at 22:32):

Actually, a third way would be to assume

(B : bilin_form R M) (hB : is_bounded_bilinear_map B)

which is a little redundant (since it's stating the bilinearity twice), but not actually wrong.

Heather Macbeth (Nov 16 2021 at 22:35):

(I mean, hopefully this would not be what is done in the library in another 3 years from now, but I think it's a perfectly fine hack for now.)

Moritz (Nov 18 2021 at 10:12):

The issue with not cleaning up now (or soon) is that it will only get more involved the more stuff we build on top of the non-refactored structure.

Moritz (Nov 18 2021 at 10:18):

I've looked at the linear algebra part of it and I feel like even that is in need of a quite significant cleanup: I think it is possible to unify bilinear_map, bilin_form and sesq_form into a single semibilin_map which has the former three as special cases. The definition could be essentially what is the definition of bilin_form but way more general (yesterday I generalized it to a bilinear map, but not with the ring homomorphism yet). the way that bilin_form is written makes it easy to extend it to a bounded bilinear form, I don't see how to do the same thing with the current definition of the bilinear map.

Moritz (Nov 18 2021 at 10:19):

Is it ok to do a pull-request with a very much wip version just to get feedback on whether this has any chance of getting accepted into mathlib?

Johan Commelin (Nov 18 2021 at 10:20):

Certainly! There are RFC and WIP labels that you can use.

Frédéric Dupuis (Nov 18 2021 at 13:10):

Moritz said:

I've looked at the linear algebra part of it and I feel like even that is in need of a quite significant cleanup: I think it is possible to unify bilinear_map, bilin_form and sesq_form into a single semibilin_map which has the former three as special cases. The definition could be essentially what is the definition of bilin_form but way more general (yesterday I generalized it to a bilinear map, but not with the ring homomorphism yet). the way that bilin_form is written makes it easy to extend it to a bounded bilinear form, I don't see how to do the same thing with the current definition of the bilinear map.

Is there any reason to use these over things like E →ₗ[R] F →ₗ[R] G?

Notification Bot (Nov 18 2021 at 16:02):

This topic was moved by Anne Baanen to #maths > Bounded bilinear forms

Frédéric Dupuis (Nov 18 2021 at 16:05):

I was also thinking about this because just yesterday I opened a PR (#10373) to allow semilinear versions of maps of type E →ₗ[R] F →ₗ[R] G, i.e. E →ₛₗ[σ] F →ₛₗ[ρ] G, with [module R₁ E], [module R₂ F] and [module R₃ G], and σ : R₁ →+* R₃, ρ : R₂ →+* R₃. As far as I can tell, this should cover pretty much all cases of interest, so I was wondering if we should just use that systematically and deprecate bilin_form and sesq_form.


Last updated: Dec 20 2023 at 11:08 UTC