Open kohr-h opened 7 years ago
Well 2 is obviously the way to go, but it adds quite some complexity if users want to add a new norm etc, then they also have to somehow be able to provide the dual norm. With that said, adding it would be trivial, and adding "dual space" would i.m.o. make perfect sense.
A minor addition is that we should make all "obvious" identifications, i.e. the dual space of a hilbert space is itself, and the dual of the dual is (in most cases anyway) the space itself. Perhaps we also need a "is_reflexive" flag.
A minor addition is that we should make all "obvious" identifications, i.e. the dual space of a hilbert space is itself, and the dual of the dual is (in most cases anyway) the space itself. Perhaps we also need a "is_reflexive" flag.
We should make obvious identifications, right. Regarding reflexivity, I'm not sure what to do ideally. Can we ever represent the part of the bidual that is not contained in the original space? Like, functionals of functionals? That would really require a whole new machinery without really adding much.
I could as well imagine taking the easy way out here by always assuming that X.dual_space.dual_space == X
and writing this bold assumption down somewhere. The bidual is always a superset, so we miss only stuff we can't properly represent anyway.
The only current "broken" case would be L^1 / L^\infty
, but here somebody would have to tell me how to represent the space of finitely additive, finite, signed and absolutely continuous measures on Omega
equipped with the total variation norm, which apparently is the dual space of L^\infty(Omega)
.
We currently disable inner products and adjoints when the space exponent is not equal to 2. However, both can be interpreted in a generalized sense in Banach spaces.
<.,.>: L^p x L^(p') -> F
, similar with other dual product spacesX x X^*
.A: L^p -> L^q
as the operatorA^*: L^(q') -> L^(p')
, in generalA: X -> Y
,A^*:Y^* -> X^*
.In fact, when dealing with Lebesgue spaces, the formal definitions of these quantities are most of the time identical with the Hilbert space variants. And it can be very useful e.g. in optimization when these concepts can be applied "without thinking" to more general spaces.
There are basically 3 of ways to deal with this:
Here's how I think about this: (1) feels like an arbitrary and very limiting restriction IMO, without a compelling reason. (2) is still mathematically sane but requires a bit more code - in particular something like a
dual_space
property would be needed for that. But we also havetangent_bundle
so I don't think that would be a big deal to add. (3) is the lazy approach, and that might bite us in the long run if things really stop making sense.Opinions?