Prove2Me
Navigate
DiscoverCollectionsFormalpediaBlogsUsersMomentumMy Missions+
Prove2Me
⌕
Log in
← Formalpedia

The Lean 4 theorem `cocycle_one` in the `?` chapter of the timepiece formalization

Definition
ChapterMackeyInducedSystem

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

definitionsformalizationtimepiece

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

Definition code
import Theorems.Thm_BookProof_ChapterMackeyImprimitivity_cocycle_mem_stabilizer







import Definitions.Def_ChapterMackeyImprimitivity
import Mathlib


/-!
# Mackey's imprimitivity theorem, the converse direction (book.tex, Note 33 / Note 84)

`BookProof.ChapterMackeyImprimitivity` proves one half of Mackey's theorem in the
transitive discrete case: every system of imprimitivity `(U, p)` of `G` over a finite
transitive `G`-space `X` is unitarily equivalent to the system induced by the
representation `L = U|_H` of the stabilizer `H = Stab(x₀)` on the fibre `ran p x₀`.

Note 84 of `book.tex` uses the statement as a **one-to-one correspondence** between systems
of imprimitivity based on the homogeneous space and representations of the little group.
This file supplies the missing half of that correspondence: for *every* unitary
representation `L` of the stabilizer `H` on a complex Hilbert space `K`, the induced data

  `(V g f) x = L (cocycle g x) (f (g⁻¹ • x))`,   `cocycle g x = (s x)⁻¹ g s (g⁻¹ • x)`,
  `(P y f) x = if x = y then f x else 0`

on the space of `K`-valued fields over `X` (with the `ℓ²` inner product, `PiLp 2`) really
**is** a system of imprimitivity in the sense of `ImprimitivitySystem` — and its fibre
representation over `x₀` is `L` again, so the two constructions are mutually inverse.

## Results

* `cocycle_one`, `cocycle_mul` — the cocycle identities
  `c 1 x = 1`, `c (g₁g₂) x = c g₁ x · c g₂ (g₁⁻¹ • x)`, which make the induced maps a
  representation;
* `indRepLin` — the induced operator of `g`, linear on the field space, with
  `indRepLin_one`, `indRepLin_comp` and `indRepLin_norm` (it is an isometry);
* `indRep` — the induced *unitary*, and `indRepHom`, the induced unitary representation of
  `G` by linear isometry equivalences of the field space;
* `indPvm` — the induced projection-valued measure (multiplication by indicators), a
  bounded operator;
* **`inducedSystem`** — the bundled `ImprimitivitySystem G X (FieldSpace X K)`: the induced
  data satisfy self-adjointness, idempotence, orthogonality, completeness and the
  covariance relation `V(g) P(A) V(g)⁻¹ = P(gA)`;
* **`inducedSystem_fibre`** and **`inducedSystem_stabilizer_rep`** — the fibre of the
  induced system over `x₀` consists of the fields supported at `x₀`, and (for the
  normalized section `s x₀ = 1`) the stabilizer acts on it by `L`: the induced system
  reproduces the representation it was induced from;
* **`mackey_correspondence`** — both halves together.

Everything is `sorry`-free and uses only the standard axioms.
-/

open scoped InnerProductSpace
open Finset

namespace BookProof.ChapterMackeyInducedSystem

open BookProof.ChapterMackeyImprimitivity

variable {G : Type*} [Group G] {X : Type*} [Fintype X] [DecidableEq X] [MulAction G X]
variable {K : Type*} [NormedAddCommGroup K] [InnerProductSpace ℂ K]
variable {x₀ : X}

/-- The space of `K`-valued fields on the finite base `X`, with the `ℓ²` inner product. -/
abbrev FieldSpace (X K : Type*) [Fintype X] [NormedAddCommGroup K] [InnerProductSpace ℂ K] :=
  PiLp 2 (fun _ : X => K)

/-! ## The cocycle identities -/

omit [Fintype X] [DecidableEq X] in
theorem cocycle_one (s : X → G) (x : X) : cocycle s 1 x = 1 := by
  simp [cocycle]

omit [Fintype X] [DecidableEq X] in
theorem cocycle_mul (s : X → G) (g₁ g₂ : G) (x : X) :
    cocycle s (g₁ * g₂) x = cocycle s g₁ x * cocycle s g₂ (g₁⁻¹ • x) := by
  have hx : (g₁ * g₂)⁻¹ • x = g₂⁻¹ • (g₁⁻¹ • x) := by
    rw [mul_inv_rev, mul_smul]
  rw [cocycle, cocycle, cocycle, hx]
  group

/-! ## The induced representation -/

/-- The induced operator of `g` on the field space, as a linear map. -/
noncomputable def indRepLin (L : MulAction.stabilizer G x₀ →* (K ≃ₗᵢ[ℂ] K)) (s : X → G)
    (hs : ∀ x, s x • x₀ = x) (g : G) : FieldSpace X K →ₗ[ℂ] FieldSpace X K where
  toFun f := WithLp.toLp 2 fun x =>
    L ⟨cocycle s g x, cocycle_mem_stabilizer hs g x⟩ (f (g⁻¹ • x))
  map_add' f h := by ext x; simp
  map_smul' a f := by ext x; simp

variable {L : MulAction.stabilizer G x₀ →* (K ≃ₗᵢ[ℂ] K)} {s : X → G}

omit [DecidableEq X] in
theorem indRepLin_apply (hs : ∀ x, s x • x₀ = x) (g : G) (f : FieldSpace X K) (x : X) :
    (indRepLin L s hs g f) x = L ⟨cocycle s g x, cocycle_mem_stabilizer hs g x⟩ (f (g⁻¹ • x)) :=
  rfl

omit [DecidableEq X] in
theorem indRepLin_one (hs : ∀ x, s x • x₀ = x) (f : FieldSpace X K) :
    indRepLin L s hs 1 f = f := by
  ext x
  rw [indRepLin_apply]
  have h1 : (⟨cocycle s 1 x, cocycle_mem_stabilizer hs 1 x⟩ :
      MulAction.stabilizer G x₀) = 1 := Subtype.ext (cocycle_one s x)
  rw [h1]
  simp

omit [DecidableEq X] in
theorem indRepLin_comp (hs : ∀ x, s x • x₀ = x) (g₁ g₂ : G) (f : FieldSpace X K) :
    indRepLin L s hs g₁ (indRepLin L s hs g₂ f) = indRepLin L s hs (g₁ * g₂) f := by
  ext x
  rw [indRepLin_apply, indRepLin_apply, indRepLin_apply]
  have hmul : (⟨cocycle s (g₁ * g₂) x, cocycle_mem_stabilizer hs (g₁ * g₂) x⟩ :
        MulAction.stabilizer G x₀) =
      (⟨cocycle s g₁ x, cocycle_mem_stabilizer hs g₁ x⟩ : MulAction.stabilizer G x₀) *
        ⟨cocycle s g₂ (g₁⁻¹ • x), cocycle_mem_stabilizer hs g₂ (g₁⁻¹ • x)⟩ :=
    Subtype.ext (cocycle_mul s g₁ g₂ x)
  rw [hmul, map_mul]
  have hx : (g₁ * g₂)⁻¹ • x = g₂⁻¹ • (g₁⁻¹ • x) := by rw [mul_inv_rev, mul_smul]
  rw [hx]
  rfl

omit [DecidableEq X] in
/-- The induced operators are isometries. -/
theorem indRepLin_norm (hs : ∀ x, s x • x₀ = x) (g : G) (f : FieldSpace X K) :
    ‖indRepLin L s hs g f‖ = ‖f‖ := by
  rw [PiLp.norm_eq_of_L2, PiLp.norm_eq_of_L2]
  congr 1
  have hcoord : ∀ x : X, ‖(indRepLin L s hs g f) x‖ ^ 2 = ‖f (g⁻¹ • x)‖ ^ 2 := by
    intro x
    rw [indRepLin_apply, LinearIsometryEquiv.norm_map]
  simp only [hcoord]
  exact Fintype.sum_equiv (MulAction.toPerm g⁻¹) _ _ (fun x => rfl)

variable (L s)

/-- The induced unitary of `g`. -/
noncomputable def indRep (hs : ∀ x, s x • x₀ = x) (g : G) :
    FieldSpace X K ≃ₗᵢ[ℂ] FieldSpace X K :=
  LinearIsometryEquiv.mk
    { toLinearMap := indRepLin L s hs g
      invFun := indRepLin L s hs g⁻¹
      left_inv := fun f => by
        change indRepLin L s hs g⁻¹ (indRepLin L s hs g f) = f
        rw [indRepLin_comp, inv_mul_cancel, indRepLin_one]
      right_inv := fun f => by
        change indRepLin L s hs g (indRepLin L s hs g⁻¹ f) = f
        rw [indRepLin_comp, mul_inv_cancel, indRepLin_one] }
    (indRepLin_norm hs g)

/-- The **induced unitary representation** of `G` on the space of fields. -/
noncomputable def indRepHom (hs : ∀ x, s x • x₀ = x) :
    G →* (FieldSpace X K ≃ₗᵢ[ℂ] FieldSpace X K) where
  toFun g := indRep L s hs g
  map_one' := by
    ext f x
    exact congrFun (congrArg WithLp.ofLp (indRepLin_one hs f)) x
  map_mul' g₁ g₂ := by
    ext f x
    exact congrFun (congrArg WithLp.ofLp (indRepLin_comp hs g₁ g₂ f).symm) x

variable {L s}

omit [DecidableEq X] in
theorem indRepHom_apply (hs : ∀ x, s x • x₀ = x) (g : G) (f : FieldSpace X K) (x : X) :
    (indRepHom L s hs g f) x =
      L ⟨cocycle s g x, cocycle_mem_stabilizer hs g x⟩ (f (g⁻¹ • x)) := rfl

/-! ## The induced projection-valued measure -/

variable (X K) in
/-- Multiplication by the indicator of `{y}`, as a linear map on the field space. -/
def indPvmLin (y : X) : FieldSpace X K →ₗ[ℂ] FieldSpace X K where
  toFun f := WithLp.toLp 2 fun x => if x = y then f x else 0
  map_add' f g := by ext x; by_cases h : x = y <;> simp [h]
  map_smul' a f := by ext x; by_cases h : x = y <;> simp [h]

theorem indPvmLin_apply (y : X) (f : FieldSpace X K) (x : X) :
    (indPvmLin X K y f) x = if x = y then f x else 0 := rfl

theorem indPvmLin_norm_le (y : X) (f : FieldSpace X K) : ‖indPvmLin X K y f‖ ≤ 1 * ‖f‖ := by
  rw [one_mul, PiLp.norm_eq_of_L2, PiLp.norm_eq_of_L2]
  apply Real.sqrt_le_sqrt
  refine Finset.sum_le_sum ?_
  intro x _
  by_cases h : x = y
  · simp [indPvmLin_apply, h]
  · rw [indPvmLin_apply, if_neg h, norm_zero, zero_pow (two_ne_zero)]
    positivity

variable (X K) in
/-- The atoms of the induced projection-valued measure, as bounded operators. -/
noncomputable def indPvm (y : X) : FieldSpace X K →L[ℂ] FieldSpace X K :=
  LinearMap.mkContinuous (indPvmLin X K y) 1 (indPvmLin_norm_le y)

theorem indPvm_apply (y : X) (f : FieldSpace X K) (x : X) :
    (indPvm X K y f) x = if x = y then f x else 0 := rfl

/-! ## The induced system of imprimitivity -/

/-- **The converse half of Mackey's theorem.**  The data induced from a unitary
representation `L` of the stabilizer `H = Stab(x₀)` on `K` form a system of imprimitivity
of `G` over `X`. -/
noncomputable def inducedSystem (L : MulAction.stabilizer G x₀ →* (K ≃ₗᵢ[ℂ] K)) (s : X → G)
    (hs : ∀ x, s x • x₀ = x) : ImprimitivitySystem G X (FieldSpace X K) where
  U := indRepHom L s hs
  p := indPvm X K
  selfAdjoint y u v := by
    rw [PiLp.inner_apply, PiLp.inner_apply]
    refine Finset.sum_congr rfl fun x _ => ?_
    by_cases h : x = y <;> simp [indPvm_apply, h]
  idem y f := by ext x; by_cases h : x = y <;> simp [indPvm_apply, h]
  orthogonal y z hyz f := by
    ext x
    by_cases h : x = y
    · subst h
      simp [indPvm_apply, hyz]
    · simp [indPvm_apply, h]
  complete f := by
    ext x
    have happ : ((∑ y : X, indPvm X K y f) : FieldSpace X K) x =
        ∑ y : X, ((indPvm X K y f : FieldSpace X K) x) := by
      simp
    rw [happ]
    simp [indPvm_apply]
  covariant g y f := by
    ext x
    rw [show ((indRepHom L s hs g) (indPvm X K y f)) x =
        L ⟨cocycle s g x, cocycle_mem_stabilizer hs g x⟩ ((indPvm X K y f) (g⁻¹ • x)) from rfl,
      show ((indPvm X K (g • y)) ((indRepHom L s hs g) f)) x =
        if x = g • y then ((indRepHom L s hs g) f) x else 0 from rfl,
      indRepHom_apply, indPvm_apply]
    by_cases h : x = g • y
    · have h' : g⁻¹ • x = y := by rw [h, inv_smul_smul]
      rw [if_pos h', if_pos h]
    · have h' : g⁻¹ • x ≠ y := by
        intro hc
        exact h (by rw [← hc, smul_inv_smul])
      rw [if_neg h', if_neg h, map_zero]

/-! ## The induced system reproduces `L` -/





/-! ## The correspondence -/



end BookProof.ChapterMackeyInducedSystem
Source
https://github.com/leonardopedro/timepiece/blob/61595bc/BookProof/ChapterMackeyInducedSystem.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