Zulip Chat Archive

Stream: Is there code for X?

Topic: Continuous linear map to normed group hom


Daniel Roca GonzΓ‘lez (Jan 19 2022 at 17:48):

Hi,
I am in a situation where I have a continuous_linear_map and need to convert it to a normed_group_hom. It seems weird to me that these are even different notions. Is there an automatic way to convert between them? I don't find any function to do this. Should automatic coercion work?

Eric Wieser (Jan 19 2022 at 17:54):

This certainly won't be automatic, someone will have had to prove continuous_linear_map.to_normed_group_hom by hand (and as far as I can see they haven't). Are you able to prove that yourself? (I can't comment on whether it's true)

Patrick Massot (Jan 19 2022 at 18:01):

Daniel Roca GonzΓ‘lez said:

Hi,
I am in a situation where I have a continuous_linear_map and need to convert it to a normed_group_hom. It seems weird to me that these are even different notions.

Normed group homomorphisms are maps between normed group that have no reason to be linear spaces, so there is no way they could "the same notion".

Patrick Massot (Jan 19 2022 at 18:03):

And continuous linear maps assume you have a topological module (say a topological vector space) but they do not assume the topology comes from a norm.

Patrick Massot (Jan 19 2022 at 18:03):

Does it make sense?

Eric Wieser (Jan 19 2022 at 18:08):

Here's the missing definition:

import analysis.normed.group.hom
import analysis.normed_space.operator_norm

variables {π•œ π•œβ‚‚ E F : Type*}
variables [semi_normed_group E] [semi_normed_group F]
variables [nondiscrete_normed_field π•œ] [nondiscrete_normed_field π•œβ‚‚] {σ₁₂ : π•œ β†’+* π•œβ‚‚}
variables [normed_space π•œ E] [normed_space π•œβ‚‚ F] [ring_hom_isometric σ₁₂]

@[simps]
def continuous_linear_map.to_normed_group_hom (f : E β†’SL[σ₁₂] F) : normed_group_hom E F :=
{ to_fun := f,
  map_add' := f.map_add,
  bound' := let ⟨r, hr, h⟩ := f.bound in ⟨r, h⟩ }

So all the maths is already there (docs#continuous_linear_map.bound), the glue was just missing

Daniel Roca GonzΓ‘lez (Jan 19 2022 at 18:11):

Thank you, now I understand why one can't be a subset of the other. I do think that we should have @Eric Wieser 's conversion in the library, along with the other direction.

Eric Wieser (Jan 19 2022 at 18:13):

Is the other direction true? How do you prove map_smul?

Daniel Roca GonzΓ‘lez (Jan 19 2022 at 18:14):

wait, you're right, that's not true either

Patrick Massot (Jan 19 2022 at 18:14):

Crap, Eric was faster

Patrick Massot (Jan 19 2022 at 18:14):

Mine was:

import analysis.normed_space.operator_norm
import analysis.normed.group.hom

def continuous_linear_map.to_normed_group_hom
  {π•œ π•œ': Type*} {E : Type*} {F : Type*} [semi_normed_group E]
  [semi_normed_group F] [nondiscrete_normed_field π•œ] [nondiscrete_normed_field π•œ']
  [semi_normed_space π•œ E] [semi_normed_space π•œ' F] {Οƒ : π•œ β†’+* π•œ'} [ring_hom_isometric Οƒ]
  (f : E β†’SL[Οƒ] F) : normed_group_hom E F :=
{ to_fun := f,
  map_add' := map_add f,
  bound' := ⟨βˆ₯fβˆ₯, f.le_op_norm⟩ }

Patrick Massot (Jan 19 2022 at 18:15):

I still prefer my last line.

Eric Wieser (Jan 19 2022 at 18:16):

I don't get how your last line is so short yet the proof of continuous_linear_map.bound doesn't seem to unfold to it -- oh nevermind, le_op_norm is proved in terms of bound

Patrick Massot (Jan 19 2022 at 18:16):

Daniel, we could add this, but I'm a bit worried this is an #xy issue. There's a reason why nobody ever needed that. I'm pretty skeptical that you "need to convert it to a normed_group_hom".

Patrick Massot (Jan 19 2022 at 18:18):

Daniel, if you wonder about the sigma stuff in our code, you can read this blog post.

Daniel Roca GonzΓ‘lez (Jan 19 2022 at 18:26):

You're right: I said this because I didn't find the equivalent of normed_group_hom.antilipschitz_of_norm_ge , but after looking some more I found linear_map.antilipschitz_of_bound , which is basically what I needed. Thank you both.

Eric Wieser (Jan 19 2022 at 18:29):

I think the def is still worth having in mathlib simply to show the statement is true, even if it's not useful


Last updated: Dec 20 2023 at 11:08 UTC