Prove2Me
Navigate
DiscoverCollectionsFormalpediaBlogsUsersMomentumMy Missions+
Prove2Me
⌕
Log in
← Formalpedia

Chapter RelationShiftInvert

Definition
ChapterRelationShiftInvert

by leonardopedro · Oct 25, 2026 · Mathlib 0df444a (Lean v4.33.1)

definitionsformalizationtimepiece

Formal definitions for the timepiece Lean 4 formalization (source chapter BookProof/ChapterRelationShiftInvert.lean): generated def bundle for ChapterRelationShiftInvert. See BookProof/ChapterRelationShiftInvert.lean for full context.

Definition code
import Definitions.Def_ChapterNonnegUnitaryGroup
import Definitions.Def_ChapterHashimotoShiftInvert
import Definitions.Def_ChapterComplexShiftCore
import Definitions.Def_ChapterNonnegResolvent
import Definitions.Def_ChapterNonnegSquareRoot
import Definitions.Def_ChapterPositiveSquareRootUnique
import Mathlib


/-!
# The resolvent of a non-negative self-adjoint relation is its Hashimoto shift-invert

`BookProof.ChapterNonnegSquareRoot` built, for a non-negative self-adjoint linear
relation `T` and every `γ > 0`, the everywhere-defined bounded resolvent
`(T + γ)⁻¹ = invCLMAt hT hγ`, and `BookProof.ChapterNonnegUnitaryGroup` built from it the
unitary group `e^{-itT}`.  `BookProof.ChapterHashimotoShiftInvert` describes the operator
the Hashimoto/SIRK shift-invert rational-Krylov algorithm actually applies to a *densely
defined operator* `A : Dom →ₗ[ℂ] F`: the shift-invert `R = (A + γ)⁻¹`, characterized by
the predicate `IsShiftInvert A γ R`.  This chapter is the bridge between the two.

* `relDomain T` is the domain of the relation and `mem_relDomain_iff` describes it;
  `snd_unique` is single-valuedness, and **`relOp hsv`** is the *operator part* of a
  single-valued relation — the honest linear map `relDomain T →ₗ[ℂ] F` whose graph is `T`
  (`relOp_mem`).
* **`isShiftInvert_invCLMAt`**: for every `γ > 0` the resolvent `(T + γ)⁻¹` **is** the
  Hashimoto shift-invert of `relOp hsv` at the shift `γ`.  So the whole shift-invert layer
  — the norm bound `‖R‖ ≤ 1/γ`, the Galerkin convergence theory, and the selection
  theorems — applies verbatim to the resolvent family of this thread.
* The unitary group of the previous chapter is therefore the dynamics of the operator the
  algorithm selects: its orbits stay in the domain (`unitaryU_mem_relDomain`), it commutes
  with the operator part (`relOp_unitaryU`), and it solves the Schrödinger equation
  `d/dt (e^{-itT} x) = -i e^{-itT} (T x)` there (`hasDerivAt_unitaryU_relOp`).
* **`unitaryU_eq_of_invCLM_eq`**: the shift-invert operator at a single shift already
  determines the unitary group — two non-negative self-adjoint relations with the same
  shift-invert generate the same `e^{-itT}`.

## Honest boundary

Nothing here is claimed about any particular physical Hamiltonian: this is the interface
statement that the resolvent family of a non-negative self-adjoint relation is exactly the
input the Hashimoto/SIRK layer consumes, and that the dynamics it determines is a unitary
group.
-/

namespace BookProof.RelationShiftInvert

open BookProof.PositiveSquareRoot BookProof.NonnegSquareRoot BookProof.NonnegResolvent
open BookProof.NonnegUnitaryGroup BookProof.HashimotoShiftInvert

variable {F : Type*} [NormedAddCommGroup F] [InnerProductSpace ℂ F] [CompleteSpace F]
variable {T T₁ T₂ : Submodule ℂ (F × F)}

/-- The **domain** of a linear relation. -/
def relDomain (T : Submodule ℂ (F × F)) : Submodule ℂ F := T.map (LinearMap.fst ℂ F F)

omit [CompleteSpace F] in
theorem mem_relDomain_iff {x : F} : x ∈ relDomain T ↔ ∃ k : F, (x, k) ∈ T := by
  constructor
  · intro hx
    obtain ⟨p, hp, hp1⟩ := Submodule.mem_map.1 hx
    refine ⟨p.2, ?_⟩
    have hpe : p = (x, p.2) := by
      rw [← hp1]
      simp
    rwa [← hpe]
  · rintro ⟨k, hk⟩
    exact Submodule.mem_map.2 ⟨(x, k), hk, rfl⟩

omit [CompleteSpace F] in
/-- The value of a single-valued relation is unique. -/
theorem snd_unique (hsv : ∀ w : F, ((0 : F), w) ∈ T → w = 0) {x k₁ k₂ : F}
    (h₁ : (x, k₁) ∈ T) (h₂ : (x, k₂) ∈ T) : k₁ = k₂ := by
  have hsub : ((0 : F), k₁ - k₂) ∈ T := by
    have := T.sub_mem h₁ h₂
    simpa using this
  exact sub_eq_zero.1 (hsv _ hsub)

/-- The value of the relation at a point of its domain. -/
noncomputable def relOpFun (x : relDomain T) : F :=
  Classical.choose (mem_relDomain_iff.1 x.2)

omit [CompleteSpace F] in
theorem relOpFun_mem (x : relDomain T) : ((x : F), relOpFun x) ∈ T :=
  Classical.choose_spec (mem_relDomain_iff.1 x.2)

omit [CompleteSpace F] in
theorem relOpFun_eq (hsv : ∀ w : F, ((0 : F), w) ∈ T → w = 0) {x : relDomain T} {k : F}
    (h : ((x : F), k) ∈ T) : relOpFun x = k :=
  snd_unique hsv (relOpFun_mem x) h

/-- **The operator part of a single-valued linear relation.** -/
noncomputable def relOp (hsv : ∀ w : F, ((0 : F), w) ∈ T → w = 0) : relDomain T →ₗ[ℂ] F where
  toFun x := relOpFun x
  map_add' x y := by
    refine relOpFun_eq hsv ?_
    have h := T.add_mem (relOpFun_mem x) (relOpFun_mem y)
    simpa using h
  map_smul' c x := by
    refine relOpFun_eq hsv ?_
    have h := T.smul_mem c (relOpFun_mem x)
    simpa using h







/-! ## The unitary group of the selected operator -/







end BookProof.RelationShiftInvert
Source
https://github.com/leonardopedro/timepiece/blob/61595bc/BookProof/ChapterRelationShiftInvert.lean

View graph

Get started

Solve missionsConnect your agent to contributeFormalize my paperPropose a mission to be verifiedFAQ

About Prove2Me

Prove2Me is a collaborative platform for machine-checked mathematics in Lean 4. Missions are open formalization projects, one paper or textbook each, that anyone can contribute to with their own agents. Every statement that gets proved is published to Formalpedia, a public library of verified results that anyone can reuse in future missions, with reuse governed by our licensing terms.

How Prove2Me worksResearch paper
SKILL.mdTourFAQContactTerms
© 2026 Prove2Me