@@ -6,6 +6,7 @@ Authors: Zhangir Azerbayev, Adam Topaz, Eric Wieser.
6
6
7
7
import algebra.ring_quot
8
8
import linear_algebra.tensor_algebra
9
+ import linear_algebra.alternating
9
10
import group_theory.perm.sign
10
11
11
12
/-!
@@ -31,6 +32,10 @@ of the exterior algebra.
31
32
1. `ι_comp_lift` is fact that the composition of `ι R` with `lift R f cond` agrees with `f`.
32
33
2. `lift_unique` ensures the uniqueness of `lift R f cond` with respect to 1.
33
34
35
+ ## Definitions
36
+
37
+ * `ι_multi` is the `alternating_map` corresponding to the wedge product of `ι R m` terms.
38
+
34
39
## Implementation details
35
40
36
41
The exterior algebra of `M` is constructed as a quotient of the tensor algebra, as follows.
@@ -156,4 +161,58 @@ begin
156
161
simp only [h],
157
162
end
158
163
164
+ @[simp]
165
+ lemma ι_add_mul_swap (x y : M) : ι R x * ι R y + ι R y * ι R x = 0 :=
166
+ calc _ = ι R (x + y) * ι R (x + y) : by simp [mul_add, add_mul]
167
+ ... = _ : ι_square_zero _
168
+
169
+ lemma ι_mul_prod_list {n : ℕ} (f : fin n → M) (i : fin n) :
170
+ (ι R $ f i) * (list.of_fn $ λ i, ι R $ f i).prod = 0 :=
171
+ begin
172
+ induction n with n hn,
173
+ { exact i.elim0, },
174
+ { rw [list.of_fn_succ, list.prod_cons, ←mul_assoc],
175
+ by_cases h : i = 0 ,
176
+ { rw [h, ι_square_zero, zero_mul], },
177
+ { replace hn := congr_arg ((*) $ ι R $ f 0 ) (hn (λ i, f $ fin.succ i) (i.pred h)),
178
+ simp only at hn,
179
+ rw [fin.succ_pred, ←mul_assoc, mul_zero] at hn,
180
+ refine (eq_zero_iff_eq_zero_of_add_eq_zero _).mp hn,
181
+ rw [← add_mul, ι_add_mul_swap, zero_mul], } }
182
+ end
183
+
184
+ variables (R)
185
+ /-- The product of `n` terms of the form `ι R m` is an alternating map.
186
+
187
+ This is a special case of `multilinear_map.mk_pi_algebra_fin` -/
188
+ def ι_multi (n : ℕ) :
189
+ alternating_map R M (exterior_algebra R M) (fin n) :=
190
+ let F := (multilinear_map.mk_pi_algebra_fin R n (exterior_algebra R M)).comp_linear_map (λ i, ι R)
191
+ in
192
+ { map_eq_zero_of_eq' := λ f x y hfxy hxy, begin
193
+ rw [multilinear_map.comp_linear_map_apply, multilinear_map.mk_pi_algebra_fin_apply],
194
+ wlog h : x < y := lt_or_gt_of_ne hxy using x y,
195
+ clear hxy,
196
+ induction n with n hn generalizing x y,
197
+ { exact x.elim0, },
198
+ { rw [list.of_fn_succ, list.prod_cons],
199
+ by_cases hx : x = 0 ,
200
+ -- one of the repeated terms is on the left
201
+ { rw hx at hfxy h,
202
+ rw [hfxy, ←fin.succ_pred y (ne_of_lt h).symm],
203
+ exact ι_mul_prod_list (f ∘ fin.succ) _, },
204
+ -- ignore the left-most term and induct on the remaining ones, decrementing indices
205
+ { convert mul_zero _,
206
+ refine hn (λ i, f $ fin.succ i)
207
+ (x.pred hx) (y.pred (ne_of_lt $ lt_of_le_of_lt x.zero_le h).symm)
208
+ (fin.pred_lt_pred_iff.mpr h) _,
209
+ simp only [fin.succ_pred],
210
+ exact hfxy, } }
211
+ end ,
212
+ to_fun := F, ..F}
213
+ variables {R}
214
+
215
+ lemma ι_multi_apply {n : ℕ} (v : fin n → M) :
216
+ ι_multi R n v = (list.of_fn $ λ i, ι R (v i)).prod := rfl
217
+
159
218
end exterior_algebra
0 commit comments