diff --git a/Mathlib/Analysis/InnerProductSpace/MulOpposite.lean b/Mathlib/Analysis/InnerProductSpace/MulOpposite.lean index 3f1bbb0ce56664..51886b80c43ffb 100644 --- a/Mathlib/Analysis/InnerProductSpace/MulOpposite.lean +++ b/Mathlib/Analysis/InnerProductSpace/MulOpposite.lean @@ -13,9 +13,8 @@ This file defines the inner product space structure on `Hแตแต’แต–` where we def the inner product naturally. We also define `OrthonormalBasis.mulOpposite`. -/ -variable {๐•œ H : Type*} - namespace MulOpposite +variable {๐•œ H : Type*} open MulOpposite @@ -26,7 +25,8 @@ instance [Inner ๐•œ H] : Inner ๐•œ Hแตแต’แต– where inner x y := inner ๐•œ x. @[simp] theorem inner_op [Inner ๐•œ H] (x y : H) : inner ๐•œ (op x) (op y) = inner ๐•œ x y := rfl -variable [RCLike ๐•œ] [NormedAddCommGroup H] [InnerProductSpace ๐•œ H] +section InnerProductSpace +variable [RCLike ๐•œ] [SeminormedAddCommGroup H] [InnerProductSpace ๐•œ H] instance : InnerProductSpace ๐•œ Hแตแต’แต– where norm_sq_eq_re_inner x := (inner_self_eq_norm_sq x.unop).symm @@ -34,30 +34,22 @@ instance : InnerProductSpace ๐•œ Hแตแต’แต– where add_left x y z := InnerProductSpace.add_left x.unop y.unop z.unop smul_left x y r := InnerProductSpace.smul_left x.unop y.unop r +section orthonormal + theorem _root_.Module.Basis.mulOpposite_is_orthonormal_iff {ฮน : Type*} (b : Module.Basis ฮน ๐•œ H) : Orthonormal ๐•œ b.mulOpposite โ†” Orthonormal ๐•œ b := Iff.rfl +variable {ฮน H : Type*} [NormedAddCommGroup H] [InnerProductSpace ๐•œ H] [Fintype ฮน] + /-- The multiplicative opposite of an orthonormal basis `b`, i.e., `b i โ†ฆ op (b i)`. -/ -noncomputable def _root_.OrthonormalBasis.mulOpposite {ฮน : Type*} - [Fintype ฮน] (b : OrthonormalBasis ฮน ๐•œ H) : +noncomputable def _root_.OrthonormalBasis.mulOpposite (b : OrthonormalBasis ฮน ๐•œ H) : OrthonormalBasis ฮน ๐•œ Hแตแต’แต– := b.toBasis.mulOpposite.toOrthonormalBasis b.orthonormal -theorem isometry_opLinearEquiv {R M : Type*} [Semiring R] [SeminormedAddCommGroup M] [Module R M] : - Isometry (opLinearEquiv R (M:=M)) := fun _ _ => rfl - -variable (๐•œ H) in -/-- The linear isometry equivalence version of the function `op`. -/ -@[simps!] -def opLinearIsometryEquiv : H โ‰ƒโ‚—แตข[๐•œ] Hแตแต’แต– where - toLinearEquiv := opLinearEquiv ๐•œ - norm_map' _ := rfl +@[simp] lemma _root_.OrthonormalBasis.toBasis_mulOpposite (b : OrthonormalBasis ฮน ๐•œ H) : + b.mulOpposite.toBasis = b.toBasis.mulOpposite := rfl -@[simp] -theorem toLinearEquiv_opLinearIsometryEquiv : - (opLinearIsometryEquiv ๐•œ H).toLinearEquiv = opLinearEquiv ๐•œ := rfl +end orthonormal -@[simp] -theorem toContinuousLinearEquiv_opLinearIsometryEquiv : - (opLinearIsometryEquiv ๐•œ H).toContinuousLinearEquiv = opContinuousLinearEquiv ๐•œ := rfl +end InnerProductSpace end MulOpposite diff --git a/Mathlib/Analysis/Normed/Operator/LinearIsometry.lean b/Mathlib/Analysis/Normed/Operator/LinearIsometry.lean index 1914f7184d71ef..d545f2fdb553d5 100644 --- a/Mathlib/Analysis/Normed/Operator/LinearIsometry.lean +++ b/Mathlib/Analysis/Normed/Operator/LinearIsometry.lean @@ -1070,3 +1070,25 @@ noncomputable def LinearIsometry.equivRange {R S : Type*} [Semiring R] [Ring S] [Module R F] {ฯƒโ‚โ‚‚ : R โ†’+* S} {ฯƒโ‚‚โ‚ : S โ†’+* R} [RingHomInvPair ฯƒโ‚โ‚‚ ฯƒโ‚‚โ‚] [RingHomInvPair ฯƒโ‚‚โ‚ ฯƒโ‚โ‚‚] (f : F โ†’โ‚›โ‚—แตข[ฯƒโ‚โ‚‚] E) : F โ‰ƒโ‚›โ‚—แตข[ฯƒโ‚โ‚‚] (LinearMap.range f.toLinearMap) := { f with toLinearEquiv := LinearEquiv.ofInjective f.toLinearMap f.injective } + +namespace MulOpposite +variable {R H : Type*} [Semiring R] [SeminormedAddCommGroup H] [Module R H] + +theorem isometry_opLinearEquiv : Isometry (opLinearEquiv R (M := H)) := fun _ _ => rfl + +variable (R H) in +/-- The linear isometry equivalence version of the function `op`. -/ +@[simps!] +def opLinearIsometryEquiv : H โ‰ƒโ‚—แตข[R] Hแตแต’แต– where + toLinearEquiv := opLinearEquiv R + norm_map' _ := rfl + +@[simp] +theorem toLinearEquiv_opLinearIsometryEquiv : + (opLinearIsometryEquiv R H).toLinearEquiv = opLinearEquiv R := rfl + +@[simp] +theorem toContinuousLinearEquiv_opLinearIsometryEquiv : + (opLinearIsometryEquiv R H).toContinuousLinearEquiv = opContinuousLinearEquiv R := rfl + +end MulOpposite