Skip to content

feat(QuantumMechanics): derivative operators via Fourier-conjugated m…#1454

Open
adambornemann-glitch wants to merge 2 commits into
leanprover-community:masterfrom
adambornemann-glitch:feat/deriv-operator
Open

feat(QuantumMechanics): derivative operators via Fourier-conjugated m…#1454
adambornemann-glitch wants to merge 2 commits into
leanprover-community:masterfrom
adambornemann-glitch:feat/deriv-operator

Conversation

@adambornemann-glitch

Copy link
Copy Markdown
Contributor

…ultiplication

Define derivOperator f, the Fourier conjugate 𝓕⁻¹ ∘ 𝓜 (f ∘ 2π•) ∘ 𝓕 of the multiplication operator, for a symbol f of the wavenumber k.

  • derivOperator with domain/apply characterizations and aestronglyMeasurable_comp_two_pi_smul (rescaling is quasi-measure- preserving for the Haar measure)
  • derivOperator_hasDenseDomain for a.e.-strongly-measurable symbols
  • derivOperator_adjoint : (derivOperator f)† = derivOperator (conj ∘ f)
  • derivOperator_isSelfAdjoint for real-valued symbols
  • schwartzSubmodule_le_derivOperator_domain for temperate-growth symbols
  • supporting unitary-conjugation transfers in Unbounded.lean §B.5: unitaryConj_mono, the involution pair (simp), and unitaryConj_adjoint

…ultiplication

Define `derivOperator f`, the Fourier conjugate 𝓕⁻¹ ∘ 𝓜 (f ∘ 2π•) ∘ 𝓕 of the
multiplication operator, for a symbol `f` of the wavenumber `k`.

- `derivOperator` with domain/apply characterizations and
  `aestronglyMeasurable_comp_two_pi_smul` (rescaling is quasi-measure-
  preserving for the Haar measure)
- `derivOperator_hasDenseDomain` for a.e.-strongly-measurable symbols
- `derivOperator_adjoint` : `(derivOperator f)† = derivOperator (conj ∘ f)`
- `derivOperator_isSelfAdjoint` for real-valued symbols
- `schwartzSubmodule_le_derivOperator_domain` for temperate-growth symbols
- supporting unitary-conjugation transfers in Unbounded.lean §B.5:
  `unitaryConj_mono`, the involution pair (simp), and `unitaryConj_adjoint`

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

Thank you for this PR, which will now be reviewed. If submitting to ./Physlib or ./QuantumInfo, please see our review guidelines if you are not familiar with the process. You should expect a back and forth with a reviewer before your PR is merged. See also that link for how to add appropriate labels to your PR. The PR will also go through a number of automated checks. You can learn more about these here, including how to run them locally.

If you are submitting to ./PhyslibAlpha there will be a lighter review process, though your PR must still pass the automated checks.

If you want to bring attention to this PR, please write a message on this thread of the Lean Zulip.

Important: If a reviewer adds an awaiting-author label to your PR, once you have addressed the review comments, please remove that label by adding a comment with -awaiting-author. This helps us keep track of reviews.

@github-actions github-actions Bot added the t-quantum-mechanics Quantum mechanics label Jul 21, 2026
@gloges gloges self-assigned this Jul 22, 2026

@gloges gloges left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, these look good! I've left a few minor suggestions to improve the documentation, organization and Fourier/simp lemmas. There are also two lemmas which can be generalized while (I think!) leaving the proofs essentially unchanged.

Comment thread Physlib/QuantumMechanics/Operators/Derivative.lean Outdated
Comment thread Physlib/QuantumMechanics/Operators/Derivative.lean Outdated
Comment thread Physlib/QuantumMechanics/Operators/Derivative.lean Outdated
Comment thread Physlib/QuantumMechanics/Operators/Derivative.lean Outdated
Comment thread Physlib/QuantumMechanics/Operators/Derivative.lean Outdated
Comment thread Physlib/QuantumMechanics/Operators/Derivative.lean Outdated
Comment thread Physlib/QuantumMechanics/Operators/Derivative.lean Outdated
Comment thread Physlib/QuantumMechanics/Operators/Derivative.lean Outdated
Comment thread Physlib/QuantumMechanics/Operators/Unbounded.lean Outdated
Comment thread Physlib/QuantumMechanics/Operators/Derivative.lean Outdated
@gloges gloges added the awaiting-author A reviewer has asked the author a question or requested changes label Jul 22, 2026
When A is not densely defined, both adjoints are the zero map and the
adjoint domains are identified through the unitary, so the equality
holds unconditionally. Adds @[simp] unitaryConj_hasDenseDomain_iff and
drops a now-unused simp argument in derivOperator_adjoint.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
@adambornemann-glitch

Copy link
Copy Markdown
Contributor Author

done!
-awaiting-author

@github-actions github-actions Bot removed the awaiting-author A reviewer has asked the author a question or requested changes label Jul 22, 2026

@gloges gloges left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One more opportunity for generalization that we both missed.
Can you also go through and clean up the implicit/explicit arguments and add appropriate simp tags for the unitaryConj lemmas? The rule of thumb is that args should be explicit unless they can be inferred from other arguments. I think that unitaryConj_apply and mem_unitaryConj_domain_iff are deserving of simp tags, but let me know what you think.

Comment on lines +629 to +640
/-- Conjugating by `u` and then by `u⁻¹` recovers the original operator. -/
@[simp]
lemma unitaryConj_symm_unitaryConj (u : H ≃ₗᵢ[ℂ] H') (A : H →ₗ.[ℂ] H) :
unitaryConj u.symm (unitaryConj u A) = A := by
ext x hx hx'
· simp [mem_unitaryConj_domain_iff]
· simp [unitaryConj_apply]

/-- Conjugating by `u⁻¹` and then by `u` recovers the original operator. -/
@[simp]
lemma unitaryConj_unitaryConj_symm (u : H ≃ₗᵢ[ℂ] H') (B : H' →ₗ.[ℂ] H') :
unitaryConj u (unitaryConj u.symm B) = B := unitaryConj_symm_unitaryConj u.symm B

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
/-- Conjugating by `u` and then by `u⁻¹` recovers the original operator. -/
@[simp]
lemma unitaryConj_symm_unitaryConj (u : H ≃ₗᵢ[ℂ] H') (A : H →ₗ.[ℂ] H) :
unitaryConj u.symm (unitaryConj u A) = A := by
ext x hx hx'
· simp [mem_unitaryConj_domain_iff]
· simp [unitaryConj_apply]
/-- Conjugating by `u⁻¹` and then by `u` recovers the original operator. -/
@[simp]
lemma unitaryConj_unitaryConj_symm (u : H ≃ₗᵢ[ℂ] H') (B : H' →ₗ.[ℂ] H') :
unitaryConj u (unitaryConj u.symm B) = B := unitaryConj_symm_unitaryConj u.symm B
@[simp]
lemma unitaryConj_refl : unitaryConj (LinearIsometryEquiv.refl ℂ H) A = A := rfl
@[simp]
lemma unitaryConj_unitaryConj (u' : H' ≃ₗᵢ[ℂ] H'') :
unitaryConj u' (unitaryConj u A) = unitaryConj (u.trans u') A := by
ext <;> simp

These can be generalized.

@gloges gloges added the awaiting-author A reviewer has asked the author a question or requested changes label Jul 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

awaiting-author A reviewer has asked the author a question or requested changes t-quantum-mechanics Quantum mechanics

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants