Paper XI · Lean source
TwistedRescaling.lean
Selected results recorded Coverage and evidence
Compiler/replay evidence is reported for a subset or bounded block. No whole-work coverage is implied.
This viewer reads the retained source; it does not run Lean or assign new claim mappings.
Local imports (2)
PaperXI/TwistedRescaling.lean158 lines
Original source path
formalization/PaperXI/TwistedRescaling.leanSkip declarations and read code
1 import PaperXI.TwistedAction
2 import PaperXI.CocycleBasis
3
4 /-! Actual algebra equivalences under normalized scalar changes of basis.
5 The equivalence is constructed from the canonical bases of the two concrete
6 twisted algebras; its multiplicativity follows from their proved tables. -/
7 set_option autoImplicit false
8 noncomputable section
9 namespace PaperXI.TwistedRescaling
10
11 open CocycleCommutator Module
12 variable {A : Type*} [CommGroup A] [Fintype A]
13
14 /-- Equality of cocycles transports the actual algebras and their bases. -/
15 def congrEquiv (c d : Cocycle A ℂˣ) (hc : Normalized c) (hd : Normalized d)
16 (h : c = d) : TwistedAlgebra.Algebra c hc ≃ₐ[ℂ] TwistedAlgebra.Algebra d hd := by
17 cases h
18 exact AlgEquiv.refl
19
20 @[simp] theorem congrEquiv_basis (c d : Cocycle A ℂˣ)
21 (hc : Normalized c) (hd : Normalized d) (h : c = d) (a : A) :
22 congrEquiv c d hc hd h (TwistedAlgebra.basis c hc a) =
23 TwistedAlgebra.basis d hd a := by
24 cases h
25 rfl
26
27 /-- The constructed linear equivalence sends each rescaled algebra basis
28 element to the corresponding scalar multiple in the original algebra. -/
29 def linearEquiv (c : Cocycle A ℂˣ) (hc : Normalized c)
30 (s : A → ℂˣ) (hs : s 1 = 1) :
31 TwistedAlgebra.Algebra (rescale c s) (normalized_rescale c hc s hs) ≃ₗ[ℂ]
32 TwistedAlgebra.Algebra c hc :=
33 (TwistedAlgebra.basis (rescale c s) (normalized_rescale c hc s hs)).equiv
34 ((TwistedAlgebra.basis c hc).unitsSMul s) (Equiv.refl A)
35
36 @[simp] theorem linearEquiv_basis (c : Cocycle A ℂˣ) (hc : Normalized c)
37 (s : A → ℂˣ) (hs : s 1 = 1) (a : A) :
38 linearEquiv c hc s hs
39 (TwistedAlgebra.basis (rescale c s) (normalized_rescale c hc s hs) a) =
40 (s a : ℂ) • TwistedAlgebra.basis c hc a := by
41 simp only [linearEquiv, Basis.equiv_apply, Equiv.refl_apply,
42 Basis.unitsSMul_apply, Units.smul_def]
43
44 set_option backward.isDefEq.respectTransparency false in
45 /-- The rescaled basis obeys the rescaled cocycle's multiplication table. -/
46 theorem scaled_basis_mul (c : Cocycle A ℂˣ) (hc : Normalized c)
47 (s : A → ℂˣ) (a b : A) :
48 ((s a : ℂ) • TwistedAlgebra.basis c hc a) *
49 ((s b : ℂ) • TwistedAlgebra.basis c hc b) =
50 ((rescale c s).coeff a b : ℂ) •
51 ((s (a * b) : ℂ) • TwistedAlgebra.basis c hc (a * b)) := by
52 have h := rescaled_basis_mul (B := TwistedAlgebra.Algebra c hc) c
53 (TwistedAlgebra.basis c hc) (TwistedAlgebra.basis_mul c hc) s a b
54 simpa only [Basis.unitsSMul_apply, Units.smul_def] using h
55
56 theorem linearEquiv_one (c : Cocycle A ℂˣ) (hc : Normalized c)
57 (s : A → ℂˣ) (hs : s 1 = 1) : linearEquiv c hc s hs 1 = 1 := by
58 rw [← TwistedAlgebra.basis_one (rescale c s) (normalized_rescale c hc s hs),
59 linearEquiv_basis, hs, Units.val_one, one_smul, TwistedAlgebra.basis_one]
60
61 theorem linearEquiv_mul (c : Cocycle A ℂˣ) (hc : Normalized c)
62 (s : A → ℂˣ) (hs : s 1 = 1)
63 (x y : TwistedAlgebra.Algebra (rescale c s) (normalized_rescale c hc s hs)) :
64 linearEquiv c hc s hs (x * y) =
65 linearEquiv c hc s hs x * linearEquiv c hc s hs y := by
66 classical
67 have hBasis (a b : A) :
68 linearEquiv c hc s hs
69 (TwistedAlgebra.basis (rescale c s) (normalized_rescale c hc s hs) a *
70 TwistedAlgebra.basis (rescale c s) (normalized_rescale c hc s hs) b) =
71 linearEquiv c hc s hs
72 (TwistedAlgebra.basis (rescale c s) (normalized_rescale c hc s hs) a) *
73 linearEquiv c hc s hs
74 (TwistedAlgebra.basis (rescale c s) (normalized_rescale c hc s hs) b) := by
75 rw [TwistedAlgebra.basis_mul, map_smul, linearEquiv_basis,
76 linearEquiv_basis, linearEquiv_basis, scaled_basis_mul]
77 conv_lhs => rw [← (TwistedAlgebra.basis (rescale c s)
78 (normalized_rescale c hc s hs)).sum_repr x,
79 ← (TwistedAlgebra.basis (rescale c s) (normalized_rescale c hc s hs)).sum_repr y]
80 conv_rhs => rw [← (TwistedAlgebra.basis (rescale c s)
81 (normalized_rescale c hc s hs)).sum_repr x,
82 ← (TwistedAlgebra.basis (rescale c s) (normalized_rescale c hc s hs)).sum_repr y]
83 simp only [Finset.sum_mul, Finset.mul_sum, map_sum, map_smul,
84 smul_mul_assoc, mul_smul_comm, hBasis]
85
86 /-- The actual twisted algebras of cohomologous normalized cocycles are
87 isomorphic, with the source-to-target direction matching basis rescaling. -/
88 def rescaleEquiv (c : Cocycle A ℂˣ) (hc : Normalized c)
89 (s : A → ℂˣ) (hs : s 1 = 1) :
90 TwistedAlgebra.Algebra (rescale c s) (normalized_rescale c hc s hs) ≃ₐ[ℂ]
91 TwistedAlgebra.Algebra c hc :=
92 AlgEquiv.ofLinearEquiv (linearEquiv c hc s hs)
93 (linearEquiv_one c hc s hs) (linearEquiv_mul c hc s hs)
94
95 @[simp] theorem rescaleEquiv_basis (c : Cocycle A ℂˣ) (hc : Normalized c)
96 (s : A → ℂˣ) (hs : s 1 = 1) (a : A) :
97 rescaleEquiv c hc s hs
98 (TwistedAlgebra.basis (rescale c s) (normalized_rescale c hc s hs) a) =
99 (s a : ℂ) • TwistedAlgebra.basis c hc a :=
100 linearEquiv_basis c hc s hs a
101
102 /-- The inverse sends an original basis vector to its inverse scalar multiple. -/
103 @[simp] theorem rescaleEquiv_symm_basis (c : Cocycle A ℂˣ) (hc : Normalized c)
104 (s : A → ℂˣ) (hs : s 1 = 1) (a : A) :
105 (rescaleEquiv c hc s hs).symm (TwistedAlgebra.basis c hc a) =
106 ((s a)⁻¹ : ℂˣ) •
107 TwistedAlgebra.basis (rescale c s) (normalized_rescale c hc s hs) a := by
108 apply (rescaleEquiv c hc s hs).injective
109 simp only [AlgEquiv.apply_symm_apply, Units.smul_def, map_smul,
110 rescaleEquiv_basis, smul_smul]
111 simp
112
113 variable {B : Type*} [Semiring B] [Algebra ℂ B]
114
115 /-- Transport any algebra action through the constructed rescaling map. -/
116 def transport (c : Cocycle A ℂˣ) (hc : Normalized c)
117 (s : A → ℂˣ) (hs : s 1 = 1)
118 (F : TwistedAlgebra.Algebra c hc →ₐ[ℂ] B) :
119 TwistedAlgebra.Algebra (rescale c s) (normalized_rescale c hc s hs) →ₐ[ℂ] B :=
120 F.comp (rescaleEquiv c hc s hs).toAlgHom
121
122 @[simp] theorem transport_basis (c : Cocycle A ℂˣ) (hc : Normalized c)
123 (s : A → ℂˣ) (hs : s 1 = 1)
124 (F : TwistedAlgebra.Algebra c hc →ₐ[ℂ] B) (a : A) :
125 transport c hc s hs F
126 (TwistedAlgebra.basis (rescale c s) (normalized_rescale c hc s hs) a) =
127 (s a : ℂ) • F (TwistedAlgebra.basis c hc a) := by
128 simp only [transport, AlgHom.comp_apply, AlgEquiv.coe_toAlgHom, rescaleEquiv_basis, map_smul]
129
130 /-- A transported action is determined by the rescaled basis operators. -/
131 theorem transport_unique (c : Cocycle A ℂˣ) (hc : Normalized c)
132 (s : A → ℂˣ) (hs : s 1 = 1)
133 (F : TwistedAlgebra.Algebra c hc →ₐ[ℂ] B)
134 (G : TwistedAlgebra.Algebra (rescale c s) (normalized_rescale c hc s hs) →ₐ[ℂ] B)
135 (hG : ∀ a, G (TwistedAlgebra.basis (rescale c s)
136 (normalized_rescale c hc s hs) a) =
137 (s a : ℂ) • F (TwistedAlgebra.basis c hc a)) :
138 G = transport c hc s hs F := by
139 apply AlgHom.toLinearMap_injective
140 apply (TwistedAlgebra.basis (rescale c s) (normalized_rescale c hc s hs)).ext
141 intro a
142 exact (hG a).trans (transport_basis c hc s hs F a).symm
143
144 /-- Rescaling induces an equivalence on actual algebra actions. -/
145 def actionEquiv (c : Cocycle A ℂˣ) (hc : Normalized c)
146 (s : A → ℂˣ) (hs : s 1 = 1) :
147 (TwistedAlgebra.Algebra c hc →ₐ[ℂ] B) ≃
148 (TwistedAlgebra.Algebra (rescale c s) (normalized_rescale c hc s hs) →ₐ[ℂ] B) where
149 toFun := transport c hc s hs
150 invFun F := F.comp (rescaleEquiv c hc s hs).symm.toAlgHom
151 left_inv F := by
152 ext x
153 exact congrArg F ((rescaleEquiv c hc s hs).apply_symm_apply x)
154 right_inv F := by
155 ext x
156 exact congrArg F ((rescaleEquiv c hc s hs).symm_apply_apply x)
157
158 end PaperXI.TwistedRescaling
Original file and source record
This copy matches the recorded source file. Its publication here does not change the work’s review status.
SHA-256: 1bb12f819e8232e254d6147b5fac209667d032836c4aa02fe72c472015d40e0d
Back to Paper XI: Packets, Arithmetic Realization, and Conditional Comparison