(Semi-)linear isometries #
In this file we define LinearIsometry σ₁₂ E E₂ (notation: E →ₛₗᵢ[σ₁₂] E₂) to be a semilinear
isometric embedding of E into E₂ and LinearIsometryEquiv (notation: E ≃ₛₗᵢ[σ₁₂] E₂) to be
a semilinear isometric equivalence between E and E₂. The notation for the associated purely
linear concepts is E →ₗᵢ[R] E₂, E ≃ₗᵢ[R] E₂, and E →ₗᵢ⋆[R] E₂, E ≃ₗᵢ⋆[R] E₂ for
the star-linear versions.
We also prove some trivial lemmas and provide convenience constructors.
Since a lot of elementary properties don't require ‖x‖ = 0 → x = 0 we start setting up the
theory for SeminormedAddCommGroup and we specialize to NormedAddCommGroup when needed.
A σ₁₂-semilinear isometric embedding of a normed R-module into an R₂-module.
- toFun : E → E₂
A σ₁₂-semilinear isometric embedding of a normed R-module into an R₂-module.
Equations
- One or more equations did not get rendered due to their size.
A linear isometric embedding of a normed R-module into another one.
Equations
- One or more equations did not get rendered due to their size.
An antilinear isometric embedding of a normed R-module into another one.
Equations
- One or more equations did not get rendered due to their size.
SemilinearIsometryClass F σ E E₂ asserts F is a type of bundled σ-semilinear isometries
E → E₂.
See also LinearIsometryClass F R E E₂ for the case where σ is the identity map on R.
A map f between an R-module and an S-module over a ring homomorphism σ : R →+* S
is semilinear if it satisfies the two properties f (x + y) = f x + f y and
f (c • x) = (σ c) • f x.
- map_smulₛₗ : ∀ (f : 𝓕) (c : R) (x : E), f (c • x) = σ₁₂ c • f x
LinearIsometryClass F R E E₂ asserts F is a type of bundled R-linear isometries
M → M₂.
This is an abbreviation for SemilinearIsometryClass F (RingHom.id R) E E₂.
Equations
- LinearIsometryClass 𝓕 R E E₂ = SemilinearIsometryClass 𝓕 (RingHom.id R) E E₂
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
See Note [custom simps projection]. We need to specify this projection explicitly in this case, because it is a composition of multiple projections.
Equations
- LinearIsometry.Simps.apply σ₁₂ E E₂ h = ⇑h
Alias of LinearIsometry.isEmbedding.
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Interpret a linear isometry as a continuous linear map.
Equations
- f.toContinuousLinearMap = { toLinearMap := f.toLinearMap, cont := ⋯ }
The identity linear isometry.
Equations
- LinearIsometry.id = { toLinearMap := LinearMap.id, norm_map' := ⋯ }
Composition of linear isometries.
Equations
- g.comp f = { toLinearMap := g.comp f.toLinearMap, norm_map' := ⋯ }
Construct a LinearIsometry from a LinearMap satisfying Isometry.
Equations
- f.toLinearIsometry hf = { toLinearMap := f, norm_map' := ⋯ }
Submodule.subtype as a LinearIsometry.
Equations
- p.subtypeₗᵢ = { toLinearMap := p.subtype, norm_map' := ⋯ }
A semilinear isometric equivalence between two normed vector spaces.
- toFun : E → E₂
- invFun : E₂ → E
- left_inv : Function.LeftInverse self.invFun (↑self.toLinearEquiv).toFun
- right_inv : Function.RightInverse self.invFun (↑self.toLinearEquiv).toFun
A semilinear isometric equivalence between two normed vector spaces.
Equations
- One or more equations did not get rendered due to their size.
A linear isometric equivalence between two normed vector spaces.
Equations
- One or more equations did not get rendered due to their size.
An antilinear isometric equivalence between two normed vector spaces.
Equations
- One or more equations did not get rendered due to their size.
SemilinearIsometryEquivClass F σ E E₂ asserts F is a type of bundled σ-semilinear
isometric equivs E → E₂.
See also LinearIsometryEquivClass F R E E₂ for the case where σ is the identity map on R.
A map f between an R-module and an S-module over a ring homomorphism σ : R →+* S
is semilinear if it satisfies the two properties f (x + y) = f x + f y and
f (c • x) = (σ c) • f x.
- map_smulₛₗ : ∀ (f : 𝓕) (r : R) (x : E), f (r • x) = σ₁₂ r • f x
LinearIsometryEquivClass F R E E₂ asserts F is a type of bundled R-linear isometries
M → M₂.
This is an abbreviation for SemilinearIsometryEquivClass F (RingHom.id R) E E₂.
Equations
- LinearIsometryEquivClass 𝓕 R E E₂ = SemilinearIsometryEquivClass 𝓕 (RingHom.id R) E E₂
Equations
- ⋯ = ⋯
Equations
- One or more equations did not get rendered due to their size.
Equations
- ⋯ = ⋯
Shortcut instance, saving 8.5% of compilation time in
Mathlib.Analysis.InnerProductSpace.Adjoint.
(This instance was pinpointed by benchmarks; we didn't do an in depth investigation why it is specifically needed.)
Equations
- LinearIsometryEquiv.instCoeFun = { coe := DFunLike.coe }
Construct a LinearIsometryEquiv from a LinearEquiv and two inequalities:
∀ x, ‖e x‖ ≤ ‖x‖ and ∀ y, ‖e.symm y‖ ≤ ‖y‖.
Equations
- LinearIsometryEquiv.ofBounds e h₁ h₂ = { toLinearEquiv := e, norm_map' := ⋯ }
Reinterpret a LinearIsometryEquiv as a LinearIsometry.
Equations
- e.toLinearIsometry = { toLinearMap := ↑e.toLinearEquiv, norm_map' := ⋯ }
Reinterpret a LinearIsometryEquiv as an IsometryEquiv.
Equations
- e.toIsometryEquiv = { toEquiv := e.toEquiv, isometry_toFun := ⋯ }
Reinterpret a LinearIsometryEquiv as a Homeomorph.
Equations
- e.toHomeomorph = e.toIsometryEquiv.toHomeomorph
Interpret a LinearIsometryEquiv as a ContinuousLinearEquiv.
Equations
- One or more equations did not get rendered due to their size.
Identity map as a LinearIsometryEquiv.
Equations
- LinearIsometryEquiv.refl R E = { toLinearEquiv := LinearEquiv.refl R E, norm_map' := ⋯ }
Linear isometry equiv between a space and its lift to another universe.
Equations
- LinearIsometryEquiv.ulift R E = { toLinearEquiv := ContinuousLinearEquiv.ulift.toLinearEquiv, norm_map' := ⋯ }
Equations
- LinearIsometryEquiv.instInhabited = { default := LinearIsometryEquiv.refl R E }
The inverse LinearIsometryEquiv.
Equations
- e.symm = { toLinearEquiv := e.symm, norm_map' := ⋯ }
See Note [custom simps projection]. We need to specify this projection explicitly in this case, because it is a composition of multiple projections.
Equations
- LinearIsometryEquiv.Simps.apply σ₁₂ E E₂ h = ⇑h
See Note [custom simps projection]
Equations
- LinearIsometryEquiv.Simps.symm_apply σ₁₂ E E₂ h = ⇑h.symm
Composition of LinearIsometryEquivs as a LinearIsometryEquiv.
Equations
- e.trans e' = { toLinearEquiv := e.trans e'.toLinearEquiv, norm_map' := ⋯ }
Lemmas about mixing the group structure with definitions. Because we have multiple ways to
express LinearIsometryEquiv.refl, LinearIsometryEquiv.symm, and
LinearIsometryEquiv.trans, we want simp lemmas for every combination.
The assumption made here is that if you're using the group structure, you want to preserve it
after simp.
This copies the approach used by the lemmas near Equiv.Perm.trans_one.
Reinterpret a LinearIsometryEquiv as a ContinuousLinearEquiv.
Equations
- ⋯ = ⋯
Construct a linear isometry equiv from a surjective linear isometry.
Equations
- LinearIsometryEquiv.ofSurjective f hfr = { toLinearEquiv := LinearEquiv.ofBijective f.toLinearMap ⋯, norm_map' := ⋯ }
If a linear isometry has an inverse, it is a linear isometric equivalence.
Equations
- LinearIsometryEquiv.ofLinearIsometry f g h₁ h₂ = { toLinearEquiv := LinearEquiv.ofLinear f.toLinearMap g h₁ h₂, norm_map' := ⋯ }
The negation operation on a normed space E, considered as a linear isometry equivalence.
Equations
- LinearIsometryEquiv.neg R = { toLinearEquiv := LinearEquiv.neg R, norm_map' := ⋯ }
The natural equivalence (E × E₂) × E₃ ≃ E × (E₂ × E₃) is a linear isometry.
Equations
- LinearIsometryEquiv.prodAssoc R E E₂ E₃ = { toLinearEquiv := LinearEquiv.prodAssoc R E E₂ E₃, norm_map' := ⋯ }
If p is a submodule that is equal to ⊤, then LinearIsometryEquiv.ofTop p hp is the
"identity" equivalence between p and E.
Equations
- LinearIsometryEquiv.ofTop E p hp = { toLinearEquiv := LinearEquiv.ofTop p hp, norm_map' := ⋯ }
LinearEquiv.ofEq as a LinearIsometryEquiv.
Equations
- LinearIsometryEquiv.ofEq p q hpq = { toLinearEquiv := LinearEquiv.ofEq p q hpq, norm_map' := ⋯ }
Two linear isometries are equal if they are equal on basis vectors.
Two linear isometric equivalences are equal if they are equal on basis vectors.
Reinterpret a LinearIsometry as a LinearIsometryEquiv to the range.
Equations
- f.equivRange = { toLinearEquiv := LinearEquiv.ofInjective f.toLinearMap ⋯, norm_map' := ⋯ }