@@ -13,20 +13,22 @@ This file contains facts about an important `k[G]`-module structure on `k[Gⁿ]`
13
13
commutative ring and `G` is a group. The module structure arises from the representation
14
14
`G →* End(k[Gⁿ])` induced by the diagonal action of `G` on `Gⁿ.`
15
15
16
- In particular, we define morphisms of `k`-linear `G`-representations between `k[Gⁿ⁺¹]` and
16
+ In particular, we define an isomorphism of `k`-linear `G`-representations between `k[Gⁿ⁺¹]` and
17
17
`k[G] ⊗ₖ k[Gⁿ]` (on which `G` acts by `ρ(g₁)(g₂ ⊗ x) = (g₁ * g₂) ⊗ x`).
18
18
19
+ This allows us to define a `k[G]`-basis on `k[Gⁿ⁺¹]`, by mapping the natural `k[G]`-basis of
20
+ `k[G] ⊗ₖ k[Gⁿ]` along the isomorphism.
21
+
19
22
## Main definitions
20
23
21
24
* `group_cohomology.resolution.to_tensor`
22
25
* `group_cohomology.resolution.of_tensor`
23
26
* `Rep.of_mul_action`
27
+ * `group_cohomology.resolution.equiv_tensor`
28
+ * `group_cohomology.resolution.of_mul_action_basis`
24
29
25
30
## TODO
26
31
27
- * Show that `group_cohomology.resolution.to_tensor` and `group_cohomology.resolution.of_tensor` are
28
- mutually inverse.
29
- * Use the above to deduce that `k[Gⁿ⁺¹]` is free over `k[G]`.
30
32
* Use the freeness of `k[Gⁿ⁺¹]` to build a projective resolution of the (trivial) `k[G]`-module
31
33
`k`, and so develop group cohomology.
32
34
@@ -79,8 +81,7 @@ variables {k G n}
79
81
lemma to_tensor_aux_single (f : Gⁿ⁺¹) (m : k) :
80
82
to_tensor_aux k G n (single f m) = single (f 0 ) m ⊗ₜ single (λ i, (f i)⁻¹ * f i.succ) 1 :=
81
83
begin
82
- erw [lift_apply, sum_single_index, tensor_product.smul_tmul'],
83
- { simp },
84
+ simp only [to_tensor_aux, lift_apply, sum_single_index, tensor_product.smul_tmul'],
84
85
{ simp },
85
86
end
86
87
@@ -99,10 +100,36 @@ lemma of_tensor_aux_comm_of_mul_action (g h : G) (x : Gⁿ) :
99
100
(1 : module.End k (Gⁿ →₀ k)) (single h (1 : k) ⊗ₜ single x (1 : k))) =
100
101
of_mul_action k G Gⁿ⁺¹ g (of_tensor_aux k G n (single h 1 ⊗ₜ single x 1 )) :=
101
102
begin
102
- dsimp,
103
103
simp [of_mul_action_def, of_tensor_aux_single, mul_smul],
104
104
end
105
105
106
+ lemma to_tensor_aux_left_inv (x : Gⁿ⁺¹ →₀ k) :
107
+ of_tensor_aux _ _ _ (to_tensor_aux _ _ _ x) = x :=
108
+ begin
109
+ refine linear_map.ext_iff.1 (@finsupp.lhom_ext _ _ _ k _ _ _ _ _
110
+ (linear_map.comp (of_tensor_aux _ _ _) (to_tensor_aux _ _ _)) linear_map.id (λ x y, _)) x,
111
+ dsimp,
112
+ rw [to_tensor_aux_single x y, of_tensor_aux_single, finsupp.lift_apply, finsupp.sum_single_index,
113
+ one_smul, fin.partial_prod_left_inv],
114
+ { rw zero_smul }
115
+ end
116
+
117
+ lemma to_tensor_aux_right_inv (x : (G →₀ k) ⊗[k] (Gⁿ →₀ k)) :
118
+ to_tensor_aux _ _ _ (of_tensor_aux _ _ _ x) = x :=
119
+ begin
120
+ refine tensor_product.induction_on x (by simp) (λ y z, _) (λ z w hz hw, by simp [hz, hw]),
121
+ rw [←finsupp.sum_single y, finsupp.sum, tensor_product.sum_tmul],
122
+ simp only [finset.smul_sum, linear_map.map_sum],
123
+ refine finset.sum_congr rfl (λ f hf, _),
124
+ simp only [of_tensor_aux_single, finsupp.lift_apply, finsupp.smul_single',
125
+ linear_map.map_finsupp_sum, to_tensor_aux_single, fin.partial_prod_right_inv],
126
+ dsimp,
127
+ simp only [fin.partial_prod_zero, mul_one],
128
+ conv_rhs {rw [←finsupp.sum_single z, finsupp.sum, tensor_product.tmul_sum]},
129
+ exact finset.sum_congr rfl (λ g hg, show _ ⊗ₜ _ = _, by
130
+ rw [←finsupp.smul_single', tensor_product.smul_tmul, finsupp.smul_single_one])
131
+ end
132
+
106
133
variables (k G n)
107
134
108
135
/-- Given a `G`-action on `H`, this is `k[H]` bundled with the natural representation
@@ -144,4 +171,55 @@ lemma of_tensor_single' (g : G →₀ k) (x : Gⁿ) (m : k) :
144
171
finsupp.lift _ k G (λ a, single (a • partial_prod x) m) g :=
145
172
by simp [of_tensor, of_tensor_aux]
146
173
174
+ variables (k G n)
175
+
176
+ /-- An isomorphism of `k`-linear representations of `G` from `k[Gⁿ⁺¹]` to `k[G] ⊗ₖ k[Gⁿ]` (on
177
+ which `G` acts by `ρ(g₁)(g₂ ⊗ x) = (g₁ * g₂) ⊗ x`) sending `(g₀, ..., gₙ)` to
178
+ `g₀ ⊗ (g₀⁻¹g₁, g₁⁻¹g₂, ..., gₙ₋₁⁻¹gₙ)`. -/
179
+ def equiv_tensor : (Rep.of_mul_action k G (fin (n + 1 ) → G)) ≅ Rep.of
180
+ ((representation.of_mul_action k G G).tprod (1 : representation k G ((fin n → G) →₀ k))) :=
181
+ Action.mk_iso (linear_equiv.to_Module_iso
182
+ { inv_fun := of_tensor_aux k G n,
183
+ left_inv := to_tensor_aux_left_inv,
184
+ right_inv := λ x, by convert to_tensor_aux_right_inv x,
185
+ ..to_tensor_aux k G n }) (to_tensor k G n).comm
186
+
187
+ -- not quite sure which simp lemmas to make here
188
+ @[simp] lemma equiv_tensor_def :
189
+ (equiv_tensor k G n).hom = to_tensor k G n := rfl
190
+
191
+ @[simp] lemma equiv_tensor_inv_def :
192
+ (equiv_tensor k G n).inv = of_tensor k G n := rfl
193
+
194
+ /-- The `k[G]`-linear isomorphism `k[G] ⊗ₖ k[Gⁿ] ≃ k[Gⁿ⁺¹]`, where the `k[G]`-module structure on
195
+ the lefthand side is `tensor_product.left_module`, whilst that of the righthand side comes from
196
+ `representation.as_module`. Allows us to use `basis.algebra_tensor_product` to get a `k[G]`-basis
197
+ of the righthand side. -/
198
+ def of_mul_action_basis_aux : (monoid_algebra k G ⊗[k] ((fin n → G) →₀ k)) ≃ₗ[monoid_algebra k G]
199
+ (of_mul_action k G (fin (n + 1 ) → G)).as_module :=
200
+ { map_smul' := λ r x,
201
+ begin
202
+ rw [ring_hom.id_apply, linear_equiv.to_fun_eq_coe, ←linear_equiv.map_smul],
203
+ congr' 1 ,
204
+ refine x.induction_on _ (λ x y, _) (λ y z hy hz, _),
205
+ { simp only [smul_zero] },
206
+ { simp only [tensor_product.smul_tmul'],
207
+ show (r * x) ⊗ₜ y = _,
208
+ rw [←of_mul_action_self_smul_eq_mul, smul_tprod_one_as_module] },
209
+ { rw [smul_add, hz, hy, smul_add], }
210
+ end , .. ((Rep.equivalence_Module_monoid_algebra.1 ).map_iso
211
+ (equiv_tensor k G n).symm).to_linear_equiv }
212
+
213
+ /-- A `k[G]`-basis of `k[Gⁿ⁺¹]`, coming from the `k[G]`-linear isomorphism
214
+ `k[G] ⊗ₖ k[Gⁿ] ≃ k[Gⁿ⁺¹].` -/
215
+ def of_mul_action_basis :
216
+ basis (fin n → G) (monoid_algebra k G) (of_mul_action k G (fin (n + 1 ) → G)).as_module :=
217
+ @basis.map _ (monoid_algebra k G) (monoid_algebra k G ⊗[k] ((fin n → G) →₀ k))
218
+ _ _ _ _ _ _ (@algebra.tensor_product.basis k _ (monoid_algebra k G) _ _ ((fin n → G) →₀ k) _ _
219
+ (fin n → G) (⟨linear_equiv.refl k _⟩)) (of_mul_action_basis_aux k G n)
220
+
221
+ lemma of_mul_action_free :
222
+ module.free (monoid_algebra k G) (of_mul_action k G (fin (n + 1 ) → G)).as_module :=
223
+ module.free.of_basis (of_mul_action_basis k G n)
224
+
147
225
end group_cohomology.resolution
0 commit comments