@@ -135,8 +135,58 @@ lemma mem_ker_killingForm_of_mem_rootSpace_of_forall_rootSpace_neg
135
135
| add => simp_all
136
136
end
137
137
138
+ end Field
139
+
140
+ end LieAlgebra
141
+
142
+ namespace LieModule
143
+
144
+ namespace Weight
145
+
146
+ open LieAlgebra IsKilling
147
+
148
+ variable {K L}
149
+
150
+ variable [FiniteDimensional K L] [IsKilling K L]
151
+ {H : LieSubalgebra K L} [H.IsCartanSubalgebra] [IsTriangularizable K H L] {α : Weight K H L}
152
+
153
+ instance : InvolutiveNeg (Weight K H L) where
154
+ neg α := ⟨-α, by
155
+ by_cases hα : α.IsZero
156
+ · convert α.genWeightSpace_ne_bot; rw [hα, neg_zero]
157
+ · intro e
158
+ obtain ⟨x, hx, x_ne0⟩ := α.exists_ne_zero
159
+ have := mem_ker_killingForm_of_mem_rootSpace_of_forall_rootSpace_neg K L H hx
160
+ (fun y hy ↦ by rw [rootSpace, e] at hy; rw [hy, map_zero])
161
+ rw [ker_killingForm_eq_bot] at this
162
+ exact x_ne0 this⟩
163
+ neg_neg α := by ext; simp
164
+
165
+ @[simp] lemma coe_neg : ((-α : Weight K H L) : H → K) = -α := rfl
166
+
167
+ lemma IsZero.neg (h : α.IsZero) : (-α).IsZero := by ext; rw [coe_neg, h, neg_zero]
168
+
169
+ @[simp] lemma isZero_neg : (-α).IsZero ↔ α.IsZero := ⟨fun h ↦ neg_neg α ▸ h.neg, fun h ↦ h.neg⟩
170
+
171
+ lemma IsNonZero.neg (h : α.IsNonZero) : (-α).IsNonZero := fun e ↦ h (by simpa using e.neg)
172
+
173
+ @[simp] lemma isNonZero_neg {α : Weight K H L} : (-α).IsNonZero ↔ α.IsNonZero := isZero_neg.not
174
+
175
+ @[simp] lemma toLinear_neg {α : Weight K H L} : (-α).toLinear = -α.toLinear := rfl
176
+
177
+ end Weight
178
+
179
+ end LieModule
180
+
181
+ namespace LieAlgebra
182
+
183
+ open Module LieModule Set
184
+ open Submodule renaming span → span
185
+ open Submodule renaming subset_span → subset_span
186
+
138
187
namespace IsKilling
139
188
189
+ variable [FiniteDimensional K L] (H : LieSubalgebra K L) [H.IsCartanSubalgebra]
140
190
variable [IsKilling K L]
141
191
142
192
/-- If a Lie algebra `L` has non-degenerate Killing form, the only element of a Cartan subalgebra
@@ -188,6 +238,10 @@ lemma traceForm_coroot (α : Weight K H L) (x : H) :
188
238
rw [coroot, map_nsmul, map_smul, LinearMap.smul_apply, LinearMap.smul_apply]
189
239
congr 2
190
240
241
+ @[simp] lemma coroot_neg [IsTriangularizable K H L] (α : Weight K H L) :
242
+ coroot (-α) = -coroot α := by
243
+ simp [coroot]
244
+
191
245
variable [IsTriangularizable K H L]
192
246
193
247
lemma lie_eq_killingForm_smul_of_mem_rootSpace_of_mem_rootSpace_neg_aux
@@ -557,6 +611,39 @@ lemma finrank_rootSpace_eq_one (α : Weight K H L) (hα : α.IsNonZero) :
557
611
replace hn : -2 = (n : ℤ) := by norm_cast at hn
558
612
omega
559
613
614
+ /-- The embedded `sl₂` associated to a root. -/
615
+ noncomputable def sl2SubalgebraOfRoot {α : Weight K H L} (hα : α.IsNonZero) :
616
+ LieSubalgebra K L := by
617
+ choose h e f t ht using exists_isSl2Triple_of_weight_isNonZero hα
618
+ exact t.toLieSubalgebra K
619
+
620
+ lemma mem_sl2SubalgebraOfRoot_iff {α : Weight K H L} (hα : α.IsNonZero) {h e f : L}
621
+ (t : IsSl2Triple h e f) (hte : e ∈ rootSpace H α) (htf : f ∈ rootSpace H (- α)) {x : L} :
622
+ x ∈ sl2SubalgebraOfRoot hα ↔ ∃ c₁ c₂ c₃ : K, x = c₁ • e + c₂ • f + c₃ • ⁅e, f⁆ := by
623
+ simp only [sl2SubalgebraOfRoot, IsSl2Triple.mem_toLieSubalgebra_iff]
624
+ generalize_proofs _ _ _ he hf
625
+ obtain ⟨ce, hce⟩ : ∃ c : K, he.choose = c • e := by
626
+ obtain ⟨c, hc⟩ := (finrank_eq_one_iff_of_nonzero' ⟨e, hte⟩ (by simpa using t.e_ne_zero)).mp
627
+ (finrank_rootSpace_eq_one α hα) ⟨_, he.choose_spec.choose_spec.2 .1 ⟩
628
+ exact ⟨c, by simpa using hc.symm⟩
629
+ obtain ⟨cf, hcf⟩ : ∃ c : K, hf.choose = c • f := by
630
+ obtain ⟨c, hc⟩ := (finrank_eq_one_iff_of_nonzero' ⟨f, htf⟩ (by simpa using t.f_ne_zero)).mp
631
+ (finrank_rootSpace_eq_one (-α) (by simpa)) ⟨_, hf.choose_spec.2 .2 ⟩
632
+ exact ⟨c, by simpa using hc.symm⟩
633
+ have hce₀ : ce ≠ 0 := by
634
+ rintro rfl
635
+ simp only [zero_smul] at hce
636
+ exact he.choose_spec.choose_spec.1 .e_ne_zero hce
637
+ have hcf₀ : cf ≠ 0 := by
638
+ rintro rfl
639
+ simp only [zero_smul] at hcf
640
+ exact he.choose_spec.choose_spec.1 .f_ne_zero hcf
641
+ simp_rw [hcf, hce]
642
+ refine ⟨fun ⟨c₁, c₂, c₃, hx⟩ ↦ ⟨c₁ * ce, c₂ * cf, c₃ * cf * ce, ?_⟩,
643
+ fun ⟨c₁, c₂, c₃, hx⟩ ↦ ⟨c₁ * ce⁻¹, c₂ * cf⁻¹, c₃ * ce⁻¹ * cf⁻¹, ?_⟩⟩
644
+ · simp [hx, mul_smul]
645
+ · simp [hx, mul_smul, hce₀, hcf₀]
646
+
560
647
/-- The collection of roots as a `Finset`. -/
561
648
noncomputable abbrev _root_.LieSubalgebra.root : Finset (Weight K H L) := {α | α.IsNonZero}
562
649
@@ -571,52 +658,4 @@ end CharZero
571
658
572
659
end IsKilling
573
660
574
- end Field
575
-
576
661
end LieAlgebra
577
-
578
- namespace LieModule
579
-
580
- namespace Weight
581
-
582
- open LieAlgebra IsKilling
583
-
584
- variable {K L}
585
-
586
- variable [FiniteDimensional K L]
587
- variable [IsKilling K L] {H : LieSubalgebra K L} [H.IsCartanSubalgebra] [IsTriangularizable K H L]
588
- variable {α : Weight K H L}
589
-
590
- instance : InvolutiveNeg (Weight K H L) where
591
- neg α := ⟨-α, by
592
- by_cases hα : α.IsZero
593
- · convert α.genWeightSpace_ne_bot; rw [hα, neg_zero]
594
- · intro e
595
- obtain ⟨x, hx, x_ne0⟩ := α.exists_ne_zero
596
- have := mem_ker_killingForm_of_mem_rootSpace_of_forall_rootSpace_neg K L H hx
597
- (fun y hy ↦ by rw [rootSpace, e] at hy; rw [hy, map_zero])
598
- rw [ker_killingForm_eq_bot] at this
599
- exact x_ne0 this⟩
600
- neg_neg α := by ext; simp
601
-
602
- @[simp] lemma coe_neg : ((-α : Weight K H L) : H → K) = -α := rfl
603
-
604
- lemma IsZero.neg (h : α.IsZero) : (-α).IsZero := by ext; rw [coe_neg, h, neg_zero]
605
-
606
- @[simp] lemma isZero_neg : (-α).IsZero ↔ α.IsZero := ⟨fun h ↦ neg_neg α ▸ h.neg, fun h ↦ h.neg⟩
607
-
608
- lemma IsNonZero.neg (h : α.IsNonZero) : (-α).IsNonZero := fun e ↦ h (by simpa using e.neg)
609
-
610
- @[simp] lemma isNonZero_neg {α : Weight K H L} : (-α).IsNonZero ↔ α.IsNonZero := isZero_neg.not
611
-
612
- @[simp] lemma toLinear_neg {α : Weight K H L} : (-α).toLinear = -α.toLinear := rfl
613
-
614
- variable [CharZero K]
615
-
616
- @[simp]
617
- lemma _root_.LieAlgebra.IsKilling.coroot_neg (α : Weight K H L) : coroot (-α) = -coroot α := by
618
- simp [coroot]
619
-
620
- end Weight
621
-
622
- end LieModule
0 commit comments