Imports
/-
Copyright (c) 2025 Joseph Tooby-Smith. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Joseph Tooby-Smith
-/
module
public import Physlib.QuantumMechanics.HilbertSpaces.OneDimension.SchwartzSubmodule
public import Physlib.QuantumMechanics.Operators.OneDimension.Unbounded
public import Mathlib.MeasureTheory.Measure.Haar.Unique
public import Mathlib.Analysis.Calculus.ContDiff.OperationsParity operator
@[expose] public sectionThe parity operator on functions
The parity operator is defined as linear map from ℝ → ℂ to itself, such that
ψ is taken to fun x => ψ (-x).
def parityOperator : (ℝ → ℂ) →ₗ[ℂ] (ℝ → ℂ) where
toFun ψ := fun x => ψ (-x)
map_add' ψ1 ψ2 := ψ1:ℝ → ℂψ2:ℝ → ℂ⊢ (fun x => (ψ1 + ψ2) (-x)) = (fun x => ψ1 (-x)) + fun x => ψ2 (-x)
ψ1:ℝ → ℂψ2:ℝ → ℂx:ℝ⊢ (ψ1 + ψ2) (-x) = ((fun x => ψ1 (-x)) + fun x => ψ2 (-x)) x
All goals completed! 🐙
map_smul' a ψ1 := a:ℂψ1:ℝ → ℂ⊢ (fun x => (a • ψ1) (-x)) = (RingHom.id ℂ) a • fun x => ψ1 (-x)
a:ℂψ1:ℝ → ℂx:ℝ⊢ (a • ψ1) (-x) = ((RingHom.id ℂ) a • fun x => ψ1 (-x)) x
All goals completed! 🐙The parity operator on Schwartz maps
The parity operator on the Schwartz maps is defined as the linear map from
𝓢(ℝ, ℂ) to itself, such that ψ is taken to fun x => ψ (-x).
n✝:ℕx:ℝn:ℕ⊢ ‖0 x‖ ≤ 1 + |x|hn n✝:ℕx:ℝn:ℕ⊢ n + 1 ≠ 0
simp only [Pi.zero_apply, norm_zero] n✝:ℕx:ℝn:ℕ⊢ 0 ≤ 1 + |x|hn n✝:ℕx:ℝn:ℕ⊢ n + 1 ≠ 0
apply add_nonneg ha n✝:ℕx:ℝn:ℕ⊢ 0 ≤ 1hb n✝:ℕx:ℝn:ℕ⊢ 0 ≤ |x|hn n✝:ℕx:ℝn:ℕ⊢ n + 1 ≠ 0
· ha n✝:ℕx:ℝn:ℕ⊢ 0 ≤ 1 exact zero_le_one' ℝ All goals completed! 🐙
· hb n✝:ℕx:ℝn:ℕ⊢ 0 ≤ |x| exact abs_nonneg x All goals completed! 🐙
simp All goals completed! 🐙
· refine_3 ⊢ ∃ k C, ∀ (x : ℝ), ‖x‖ ≤ C * (1 + ‖-x‖) ^ k simp refine_3 ⊢ ∃ k C, ∀ (x : ℝ), |x| ≤ C * (1 + |x|) ^ k
use 1, 1 h ⊢ ∀ (x : ℝ), |x| ≤ 1 * (1 + |x|) ^ 1
intro x h x:ℝ⊢ |x| ≤ 1 * (1 + |x|) ^ 1
simp All goals completed! 🐙The unbounded parity operator, whose domain is Schwartz maps.
def parityOperatorUnbounded : UnboundedOperator schwartzIncl schwartzIncl_injective :=
UnboundedOperator.ofSelfCLM parityOperatorSchwartz@[simp]
lemma parityOperatorSchwartz_parityOperatorSchwartz (ψ : 𝓢(ℝ, ℂ)) :
parityOperatorSchwartz (parityOperatorSchwartz ψ) = ψ := by ψ:𝓢(ℝ, ℂ)⊢ parityOperatorSchwartz (parityOperatorSchwartz ψ) = ψ
ext x ψ:𝓢(ℝ, ℂ)x:ℝ⊢ (parityOperatorSchwartz (parityOperatorSchwartz ψ)) x = ψ x
simp [parityOperatorSchwartz] All goals completed! 🐙Parity operator is symmetric
lemma parityOperatorUnbounded_isSymmetric :
parityOperatorUnbounded.IsSymmetric := by ⊢ parityOperatorUnbounded.IsSymmetric
intro ψ1 ψ2 ψ1:𝓢(ℝ, ℂ)ψ2:𝓢(ℝ, ℂ)⊢ ⟪(↑parityOperatorUnbounded).toFun ψ1, schwartzIncl ψ2⟫_ℂ = ⟪schwartzIncl ψ1, (↑parityOperatorUnbounded).toFun ψ2⟫_ℂ
dsimp [parityOperatorUnbounded] ψ1:𝓢(ℝ, ℂ)ψ2:𝓢(ℝ, ℂ)⊢ ⟪schwartzIncl (parityOperatorSchwartz ψ1), schwartzIncl ψ2⟫_ℂ =
⟪schwartzIncl ψ1, schwartzIncl (parityOperatorSchwartz ψ2)⟫_ℂ
rw [schwartzIncl_inner, ψ1:𝓢(ℝ, ℂ)ψ2:𝓢(ℝ, ℂ)⊢ ∫ (x : ℝ), (starRingEnd ℂ) ((parityOperatorSchwartz ψ1) x) * ψ2 x =
⟪schwartzIncl ψ1, schwartzIncl (parityOperatorSchwartz ψ2)⟫_ℂ ψ1:𝓢(ℝ, ℂ)ψ2:𝓢(ℝ, ℂ)⊢ ∫ (x : ℝ), (starRingEnd ℂ) ((parityOperatorSchwartz ψ1) x) * ψ2 x =
∫ (x : ℝ), (starRingEnd ℂ) (ψ1 x) * (parityOperatorSchwartz ψ2) x schwartzIncl_inner ψ1:𝓢(ℝ, ℂ)ψ2:𝓢(ℝ, ℂ)⊢ ∫ (x : ℝ), (starRingEnd ℂ) ((parityOperatorSchwartz ψ1) x) * ψ2 x =
∫ (x : ℝ), (starRingEnd ℂ) (ψ1 x) * (parityOperatorSchwartz ψ2) x ψ1:𝓢(ℝ, ℂ)ψ2:𝓢(ℝ, ℂ)⊢ ∫ (x : ℝ), (starRingEnd ℂ) ((parityOperatorSchwartz ψ1) x) * ψ2 x =
∫ (x : ℝ), (starRingEnd ℂ) (ψ1 x) * (parityOperatorSchwartz ψ2) x] ψ1:𝓢(ℝ, ℂ)ψ2:𝓢(ℝ, ℂ)⊢ ∫ (x : ℝ), (starRingEnd ℂ) ((parityOperatorSchwartz ψ1) x) * ψ2 x =
∫ (x : ℝ), (starRingEnd ℂ) (ψ1 x) * (parityOperatorSchwartz ψ2) x
let f (x : ℝ) :=
(starRingEnd ℂ) ((ψ1) (-x)) * (ψ2) x ψ1:𝓢(ℝ, ℂ)ψ2:𝓢(ℝ, ℂ)f:ℝ → ℂ := fun x => (starRingEnd ℂ) (ψ1 (-x)) * ψ2 x⊢ ∫ (x : ℝ), (starRingEnd ℂ) ((parityOperatorSchwartz ψ1) x) * ψ2 x =
∫ (x : ℝ), (starRingEnd ℂ) (ψ1 x) * (parityOperatorSchwartz ψ2) x
change ∫ (x : ℝ), f x = _ ψ1:𝓢(ℝ, ℂ)ψ2:𝓢(ℝ, ℂ)f:ℝ → ℂ := fun x => (starRingEnd ℂ) (ψ1 (-x)) * ψ2 x⊢ ∫ (x : ℝ), f x = ∫ (x : ℝ), (starRingEnd ℂ) (ψ1 x) * (parityOperatorSchwartz ψ2) x
trans ∫ (x : ℝ), f (- x) ψ1:𝓢(ℝ, ℂ)ψ2:𝓢(ℝ, ℂ)f:ℝ → ℂ := fun x => (starRingEnd ℂ) (ψ1 (-x)) * ψ2 x⊢ ∫ (x : ℝ), f x = ∫ (x : ℝ), f (-x)ψ1:𝓢(ℝ, ℂ)ψ2:𝓢(ℝ, ℂ)f:ℝ → ℂ := fun x => (starRingEnd ℂ) (ψ1 (-x)) * ψ2 x⊢ ∫ (x : ℝ), f (-x) = ∫ (x : ℝ), (starRingEnd ℂ) (ψ1 x) * (parityOperatorSchwartz ψ2) x
· ψ1:𝓢(ℝ, ℂ)ψ2:𝓢(ℝ, ℂ)f:ℝ → ℂ := fun x => (starRingEnd ℂ) (ψ1 (-x)) * ψ2 x⊢ ∫ (x : ℝ), f x = ∫ (x : ℝ), f (-x) exact Eq.symm (integral_neg_eq_self f volume) All goals completed! 🐙
· ψ1:𝓢(ℝ, ℂ)ψ2:𝓢(ℝ, ℂ)f:ℝ → ℂ := fun x => (starRingEnd ℂ) (ψ1 (-x)) * ψ2 x⊢ ∫ (x : ℝ), f (-x) = ∫ (x : ℝ), (starRingEnd ℂ) (ψ1 x) * (parityOperatorSchwartz ψ2) x simp only [neg_neg, f] ψ1:𝓢(ℝ, ℂ)ψ2:𝓢(ℝ, ℂ)f:ℝ → ℂ := fun x => (starRingEnd ℂ) (ψ1 (-x)) * ψ2 x⊢ ∫ (x : ℝ), (starRingEnd ℂ) (ψ1 x) * ψ2 (-x) = ∫ (x : ℝ), (starRingEnd ℂ) (ψ1 x) * (parityOperatorSchwartz ψ2) x
rfl All goals completed! 🐙