@@ -102,41 +102,40 @@ instance quotient.mk.is_add_group_hom :
102
102
quotient.mk :=
103
103
quotient_add_group.is_add_group_hom _
104
104
105
- section of
105
+ section tmul
106
106
variables {M N}
107
107
108
- def of (m : M) (n : N) : M ⊗ N :=
109
- quotient_add_group.mk $ free_abelian_group.of (m, n)
108
+ def tmul (m : M) (n : N) : M ⊗ N := quotient_add_group.mk $ free_abelian_group.of (m, n)
110
109
111
- infix ` ⊗ₛ `:100 := of
110
+ infix ` ⊗ₜ `:100 := tmul
112
111
113
- lemma of .add_left (m₁ m₂ : M) (n : N) : (m₁ + m₂) ⊗ₛ n = m₁ ⊗ₛ n + m₂ ⊗ₛ n :=
112
+ lemma tmul .add_left (m₁ m₂ : M) (n : N) : (m₁ + m₂) ⊗ₜ n = m₁ ⊗ₜ n + m₂ ⊗ₜ n :=
114
113
eq.symm $ sub_eq_zero.1 $ eq.symm $ quotient.sound $
115
114
group.in_closure.basic $ or.inl $ ⟨m₁, m₂, n, rfl⟩
116
115
117
- lemma of .add_right (m : M) (n₁ n₂ : N) : m ⊗ₛ (n₁ + n₂) = m ⊗ₛ n₁ + m ⊗ₛ n₂ :=
116
+ lemma tmul .add_right (m : M) (n₁ n₂ : N) : m ⊗ₜ (n₁ + n₂) = m ⊗ₜ n₁ + m ⊗ₜ n₂ :=
118
117
eq.symm $ sub_eq_zero.1 $ eq.symm $ quotient.sound $
119
118
group.in_closure.basic $ or.inr $ or.inl $ ⟨m, n₁, n₂, rfl⟩
120
119
121
- lemma of .smul (r : R) (m : M) (n : N) : (r • m) ⊗ₛ n = m ⊗ₛ (r • n) :=
120
+ lemma tmul .smul (r : R) (m : M) (n : N) : (r • m) ⊗ₜ n = m ⊗ₜ (r • n) :=
122
121
sub_eq_zero.1 $ eq.symm $ quotient.sound $
123
122
group.in_closure.basic $ or.inr $ or.inr $ ⟨r, m, n, rfl⟩
124
123
125
- end of
124
+ end tmul
126
125
127
126
local attribute [instance] free_abelian_group.to_add_comm_group.is_add_group_hom
128
127
local attribute [instance] quotient_add_group.is_add_group_hom_quotient_lift
129
128
130
129
@[reducible] def smul.aux (r : R) (x : free_abelian_group (M × N)) : M ⊗ N :=
131
- free_abelian_group.to_add_comm_group (λ (y : M × N), (r • y.1 ) ⊗ₛ (y.2 )) x
130
+ free_abelian_group.to_add_comm_group (λ (y : M × N), (r • y.1 ) ⊗ₜ (y.2 )) x
132
131
133
132
@[reducible] def smul (r : R) : M ⊗ N → M ⊗ N :=
134
133
quotient_add_group.lift _ (smul.aux M N r)
135
134
begin
136
135
assume x hx,
137
136
induction hx with _ hx _ _ ih _ _ _ _ ih1 ih2,
138
137
{ rcases hx with ⟨m₁, m₂, n, rfl⟩ | ⟨m, n₁, n₂, rfl⟩ | ⟨q, m, n, rfl⟩;
139
- simp [smul.aux, -sub_eq_add_neg, sub_self, of .add_left, of .add_right, of .smul,
138
+ simp [smul.aux, -sub_eq_add_neg, sub_self, tmul .add_left, tmul .add_right, tmul .smul,
140
139
smul_add, smul_smul, mul_comm] },
141
140
{ refl },
142
141
{ change smul.aux M N r (-_) = 0 ,
@@ -164,8 +163,8 @@ instance : module R (M ⊗ N) :=
164
163
refine @free_abelian_group.to_add_comm_group.unique _ _ _ _ _ ⟨λ p q, _⟩ _ z,
165
164
{ simp [tensor_product.smul_add] },
166
165
rintro ⟨m, n⟩,
167
- show (r • m) ⊗ₛ n + (s • m) ⊗ₛ n = ((r + s) • m) ⊗ₛ n,
168
- simp [add_smul, of .add_left]
166
+ show (r • m) ⊗ₜ n + (s • m) ⊗ₜ n = ((r + s) • m) ⊗ₜ n,
167
+ simp [add_smul, tmul .add_left]
169
168
end ,
170
169
mul_smul := begin
171
170
intros r s x,
@@ -176,29 +175,29 @@ instance : module R (M ⊗ N) :=
176
175
⟨λ p q, _⟩ _ z,
177
176
{ simp [tensor_product.smul_add] },
178
177
rintro ⟨m, n⟩,
179
- simp [smul, smul.aux, mul_smul, of ]
178
+ simp [smul, smul.aux, mul_smul, tmul ]
180
179
end ,
181
180
one_smul := λ x, quotient.induction_on x $ λ _,
182
181
eq.symm $ free_abelian_group.to_add_comm_group.unique _ _ $ λ ⟨p, q⟩,
183
182
by rw [one_smul]; refl,
184
183
.. tensor_product.add_comm_group M N }
185
184
186
- theorem bilinear : is_bilinear_map (@of R _ M N _ _) :=
187
- { add_left := of .add_left,
188
- add_right := of .add_right,
185
+ theorem bilinear : is_bilinear_map (@tmul R _ M N _ _) :=
186
+ { add_left := tmul .add_left,
187
+ add_right := tmul .add_right,
189
188
smul_left := λ r x y, rfl,
190
- smul_right := assume r m n, (of .smul r m n).symm }
189
+ smul_right := assume r m n, (tmul .smul r m n).symm }
191
190
192
- @[simp] lemma add_of (m₁ m₂ : M) (n : N) : (m₁ + m₂) ⊗ₛ n = m₁ ⊗ₛ n + m₂ ⊗ₛ n :=
191
+ @[simp] lemma add_tmul (m₁ m₂ : M) (n : N) : (m₁ + m₂) ⊗ₜ n = m₁ ⊗ₜ n + m₂ ⊗ₜ n :=
193
192
(bilinear M N).add_left m₁ m₂ n
194
193
195
- @[simp] lemma of_add (m : M) (n₁ n₂ : N) : m ⊗ₛ (n₁ + n₂) = m ⊗ₛ n₁ + m ⊗ₛ n₂ :=
194
+ @[simp] lemma tmul_add (m : M) (n₁ n₂ : N) : m ⊗ₜ (n₁ + n₂) = m ⊗ₜ n₁ + m ⊗ₜ n₂ :=
196
195
(bilinear M N).add_right m n₁ n₂
197
196
198
- @[simp] lemma smul_of (r : R) (x : M) (y : N) : (r • x) ⊗ₛ y = r • (x ⊗ₛ y) :=
197
+ @[simp] lemma smul_tmul (r : R) (x : M) (y : N) : (r • x) ⊗ₜ y = r • (x ⊗ₜ y) :=
199
198
rfl
200
199
201
- @[simp] lemma of_smul (r : R) (x : M) (y : N) : x ⊗ₛ (r • y) = r • (x ⊗ₛ y) :=
200
+ @[simp] lemma tmul_smul (r : R) (x : M) (y : N) : x ⊗ₜ (r • y) = r • (x ⊗ₜ y) :=
202
201
(bilinear M N).smul_right r x y
203
202
204
203
end module
@@ -211,11 +210,11 @@ protected theorem induction_on
211
210
{C : M ⊗ N → Prop }
212
211
(z : M ⊗ N)
213
212
(C0 : C 0 )
214
- (C1 : ∀ x y, C $ x ⊗ₛ y)
213
+ (C1 : ∀ x y, C $ x ⊗ₜ y)
215
214
(Cp : ∀ x y, C x → C y → C (x + y)) : C z :=
216
215
quotient.induction_on z $ λ x, free_abelian_group.induction_on x
217
216
C0 (λ ⟨p, q⟩, C1 p q)
218
- (λ ⟨p, q⟩ _, show C (-(p ⊗ₛ q)), by rw ← (bilinear M N).neg_left; from C1 (-p) q)
217
+ (λ ⟨p, q⟩ _, show C (-(p ⊗ₜ q)), by rw ← (bilinear M N).neg_left; from C1 (-p) q)
219
218
(λ _ _, Cp _ _)
220
219
221
220
section UMP
@@ -254,7 +253,7 @@ free_abelian_group.to_add_comm_group.add _ _ _
254
253
= r • to_module f hf x :=
255
254
tensor_product.induction_on x smul_zero.symm
256
255
(λ p q, by rw [← (bilinear M N).smul_left];
257
- simp [to_module, of , hf.smul_left])
256
+ simp [to_module, tmul , hf.smul_left])
258
257
(λ p q ih1 ih2, by simp [@smul_add _ _ _ _ r p q,
259
258
to_module.add, ih1, ih2, smul_add])
260
259
@@ -263,12 +262,12 @@ def to_module.linear :
263
262
{ add := to_module.add hf,
264
263
smul := to_module.smul hf }
265
264
266
- @[simp] lemma to_module.of (x y) :
267
- to_module f hf (x ⊗ₛ y) = f x y :=
268
- by simp [to_module, of ]
265
+ @[simp] lemma to_module.tmul (x y) :
266
+ to_module f hf (x ⊗ₜ y) = f x y :=
267
+ by simp [to_module, tmul ]
269
268
270
269
theorem to_module.unique {g : M ⊗ N → P}
271
- (hg : is_linear_map g) (H : ∀ x y, g (x ⊗ₛ y) = f x y)
270
+ (hg : is_linear_map g) (H : ∀ x y, g (x ⊗ₜ y) = f x y)
272
271
(z : M ⊗ N) : g z = to_module f hf z :=
273
272
begin
274
273
apply quotient_add_group.induction_on' z,
@@ -282,7 +281,7 @@ omit hf
282
281
283
282
theorem to_module.ext {g h : M ⊗ N → P}
284
283
(hg : is_linear_map g) (hh : is_linear_map h)
285
- (H : ∀ x y, g (x ⊗ₛ y) = h (x ⊗ₛ y))
284
+ (H : ∀ x y, g (x ⊗ₜ y) = h (x ⊗ₜ y))
286
285
(z : M ⊗ N) : g z = h z :=
287
286
begin
288
287
apply quotient_add_group.induction_on' z,
@@ -301,10 +300,10 @@ end
301
300
def to_module.equiv : { f : M → N → P // is_bilinear_map f }
302
301
≃ linear_map (M ⊗ N) P :=
303
302
{ to_fun := λ f, ⟨to_module f.1 f.2 , to_module.linear f.2 ⟩,
304
- inv_fun := λ f, ⟨λ m n, f (m ⊗ₛ n),
303
+ inv_fun := λ f, ⟨λ m n, f (m ⊗ₜ n),
305
304
is_bilinear_map.comp (bilinear M N) f.2 ⟩,
306
305
left_inv := λ f, subtype.eq $ funext $ λ x, funext $ λ y,
307
- to_module.of f.2 _ _,
306
+ to_module.tmul f.2 _ _,
308
307
right_inv := λ f, subtype.eq $ eq.symm $ funext $ λ z,
309
308
to_module.unique _ f.2 (λ x y, rfl) _ }
310
309
@@ -313,11 +312,11 @@ end UMP
313
312
protected def id : R ⊗ M ≃ₗ M :=
314
313
{ to_fun := @to_module _ _ _ _ _ _ _ _ (λ c x, c • x) $
315
314
by refine {..}; intros; simp [smul_add, add_smul, smul_smul, mul_comm, mul_left_comm],
316
- inv_fun := λ x, 1 ⊗ₛ x,
315
+ inv_fun := λ x, 1 ⊗ₜ x,
317
316
left_inv := λ z, by refine to_module.ext
318
317
(((bilinear R M).linear_right 1 ).comp $ to_module.linear _)
319
318
is_linear_map.id (λ c x, _) z;
320
- simp; rw [← smul_of , smul_eq_mul, mul_one],
319
+ simp; rw [← smul_tmul , smul_eq_mul, mul_one],
321
320
right_inv := λ z, by simp,
322
321
linear_fun := to_module.linear _ }
323
322
@@ -334,7 +333,7 @@ protected def comm : M ⊗ N ≃ₗ N ⊗ M :=
334
333
335
334
protected def assoc : (M ⊗ N) ⊗ P ≃ₗ M ⊗ (N ⊗ P) :=
336
335
{ to_fun := begin
337
- refine to_module (λ mn p, to_module (λ m n, m ⊗ₛ (n ⊗ₛ p)) _ mn) _;
336
+ refine to_module (λ mn p, to_module (λ m n, m ⊗ₜ (n ⊗ₜ p)) _ mn) _;
338
337
constructor; intros; simp,
339
338
{ symmetry,
340
339
refine to_module.unique _
@@ -346,7 +345,7 @@ protected def assoc : (M ⊗ N) ⊗ P ≃ₗ M ⊗ (N ⊗ P) :=
346
345
intros; simp }
347
346
end ,
348
347
inv_fun := begin
349
- refine to_module (λ m, to_module (λ n p, (m ⊗ₛ n) ⊗ₛ p) _) _;
348
+ refine to_module (λ m, to_module (λ n p, (m ⊗ₜ n) ⊗ₜ p) _) _;
350
349
constructor; intros; simp,
351
350
{ symmetry,
352
351
refine to_module.unique _
@@ -357,14 +356,26 @@ protected def assoc : (M ⊗ N) ⊗ P ≃ₗ M ⊗ (N ⊗ P) :=
357
356
(is_linear_map.map_smul_right (to_module.linear _)) _ _,
358
357
intros; simp }
359
358
end ,
360
- left_inv := λ z, by refine to_module.ext ((to_module.linear _).comp (to_module.linear _)) is_linear_map.id (λ mn p, _) z;
361
- simp;
362
- refine to_module.ext ((to_module.linear _).comp (to_module.linear _)) ((bilinear _ _).linear_left p) (λ m n, _) mn;
359
+ left_inv :=
360
+ begin
361
+ intro z,
362
+ refine to_module.ext ((to_module.linear _).comp
363
+ (to_module.linear _)) is_linear_map.id (λ mn p, _) z,
363
364
simp,
364
- right_inv := λ z, by refine to_module.ext ((to_module.linear _).comp (to_module.linear _)) is_linear_map.id (λ m np, _) z;
365
- simp;
366
- refine to_module.ext ((to_module.linear _).comp (to_module.linear _)) ((bilinear _ _).linear_right m) (λ n p, _) np;
365
+ refine to_module.ext ((to_module.linear _).comp
366
+ (to_module.linear _)) ((bilinear _ _).linear_left p) (λ m n, _) mn,
367
+ simp
368
+ end ,
369
+ right_inv :=
370
+ begin
371
+ intro z,
372
+ refine to_module.ext ((to_module.linear _).comp
373
+ (to_module.linear _)) is_linear_map.id (λ m np, _) z,
367
374
simp,
375
+ refine to_module.ext ((to_module.linear _).comp
376
+ (to_module.linear _)) ((bilinear _ _).linear_right m) (λ n p, _) np,
377
+ simp
378
+ end ,
368
379
linear_fun := to_module.linear _ }
369
380
370
381
end tensor_product
0 commit comments