Skip to content

Commit da1758a

Browse files
committed
feat(Analysis/InnerProductSpace/MulOpposite): defines the inner product on opposite spaces (#25951)
This pr defines the inner product on opposite spaces. Motivation for having the inner product structure on the opposite: One application comes up in non-commutative graphs, which are defined on a finite-dimensional C*-algebra with a faithful and positive functional (a Hilbert space structure can be induced by the defined faithful and positive functional (will be added to a pr soon)). For example, we'd need the Hilbert space structure to be defined on the opposite space to define the isomorphism: `(A →ₗ[ℂ] B) ≃ₗ[ℂ] TensorProduct ℂ B Aᵐᵒᵖ`, where `A`, `B` are again finite-dimensional C*-algebras with faithful and positive functionals. Co-authored-by: Monica Omar <2497250a@research.gla.ac.uk>
1 parent f1815ec commit da1758a

File tree

2 files changed

+64
-0
lines changed

2 files changed

+64
-0
lines changed

Mathlib.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1647,6 +1647,7 @@ import Mathlib.Analysis.InnerProductSpace.LaxMilgram
16471647
import Mathlib.Analysis.InnerProductSpace.LinearMap
16481648
import Mathlib.Analysis.InnerProductSpace.LinearPMap
16491649
import Mathlib.Analysis.InnerProductSpace.MeanErgodic
1650+
import Mathlib.Analysis.InnerProductSpace.MulOpposite
16501651
import Mathlib.Analysis.InnerProductSpace.NormPow
16511652
import Mathlib.Analysis.InnerProductSpace.OfNorm
16521653
import Mathlib.Analysis.InnerProductSpace.Orientation
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
/-
2+
Copyright (c) 2025 Monica Omar. All rights reserved.
3+
Released under Apache 2.0 license as described in the file LICENSE.
4+
Authors: Monica Omar
5+
-/
6+
import Mathlib.Analysis.InnerProductSpace.PiL2
7+
import Mathlib.LinearAlgebra.Basis.MulOpposite
8+
9+
/-!
10+
# Inner product space on `Hᵐᵒᵖ`
11+
12+
This file defines the inner product space structure on `Hᵐᵒᵖ` where we define
13+
the inner product naturally. We also define `OrthonormalBasis.mulOpposite`.
14+
-/
15+
16+
variable {𝕜 H : Type*}
17+
18+
namespace MulOpposite
19+
20+
open MulOpposite
21+
22+
/-- The inner product of `Hᵐᵒᵖ` is given by `⟪x, y⟫ ↦ ⟪x.unop, y.unop⟫`. -/
23+
instance [Inner 𝕜 H] : Inner 𝕜 Hᵐᵒᵖ where inner x y := inner 𝕜 x.unop y.unop
24+
25+
@[simp] theorem inner_unop [Inner 𝕜 H] (x y : Hᵐᵒᵖ) : inner 𝕜 x.unop y.unop = inner 𝕜 x y := rfl
26+
27+
@[simp] theorem inner_op [Inner 𝕜 H] (x y : H) : inner 𝕜 (op x) (op y) = inner 𝕜 x y := rfl
28+
29+
variable [RCLike 𝕜] [NormedAddCommGroup H] [InnerProductSpace 𝕜 H]
30+
31+
instance : InnerProductSpace 𝕜 Hᵐᵒᵖ where
32+
norm_sq_eq_re_inner x := (inner_self_eq_norm_sq x.unop).symm
33+
conj_inner_symm x y := InnerProductSpace.conj_inner_symm x.unop y.unop
34+
add_left x y z := InnerProductSpace.add_left x.unop y.unop z.unop
35+
smul_left x y r := InnerProductSpace.smul_left x.unop y.unop r
36+
37+
theorem _root_.Module.Basis.mulOpposite_is_orthonormal_iff {ι : Type*} (b : Module.Basis ι 𝕜 H) :
38+
Orthonormal 𝕜 b.mulOpposite ↔ Orthonormal 𝕜 b := Iff.rfl
39+
40+
/-- The multiplicative opposite of an orthonormal basis `b`, i.e., `b i ↦ op (b i)`. -/
41+
noncomputable def _root_.OrthonormalBasis.mulOpposite {ι : Type*}
42+
[Fintype ι] (b : OrthonormalBasis ι 𝕜 H) :
43+
OrthonormalBasis ι 𝕜 Hᵐᵒᵖ := b.toBasis.mulOpposite.toOrthonormalBasis b.orthonormal
44+
45+
theorem isometry_opLinearEquiv {R M : Type*} [Semiring R] [SeminormedAddCommGroup M] [Module R M] :
46+
Isometry (opLinearEquiv R (M:=M)) := fun _ _ => rfl
47+
48+
variable (𝕜 H) in
49+
/-- The linear isometry equivalence version of the function `op`. -/
50+
@[simps!]
51+
def opLinearIsometryEquiv : H ≃ₗᵢ[𝕜] Hᵐᵒᵖ where
52+
toLinearEquiv := opLinearEquiv 𝕜
53+
norm_map' _ := rfl
54+
55+
@[simp]
56+
theorem toLinearEquiv_opLinearIsometryEquiv :
57+
(opLinearIsometryEquiv 𝕜 H).toLinearEquiv = opLinearEquiv 𝕜 := rfl
58+
59+
@[simp]
60+
theorem toContinuousLinearEquiv_opLinearIsometryEquiv :
61+
(opLinearIsometryEquiv 𝕜 H).toContinuousLinearEquiv = opContinuousLinearEquiv 𝕜 := rfl
62+
63+
end MulOpposite

0 commit comments

Comments
 (0)