@@ -429,6 +429,43 @@ open Function
429
429
430
430
section restrictScalarsRange
431
431
432
+ variable {R S M P M' P' : Type *}
433
+ [CommSemiring R] [CommSemiring S] [SMul S R]
434
+ [AddCommMonoid M] [Module R M] [AddCommMonoid P] [Module R P]
435
+ [Module S M] [Module S P]
436
+ [IsScalarTower S R M] [IsScalarTower S R P]
437
+ [AddCommMonoid M'] [Module S M'] [AddCommMonoid P'] [Module S P']
438
+
439
+ variable (i : M' →ₗ[S] M) (k : P' →ₗ[S] P) (hk : Injective k)
440
+ (f : M →ₗ[R] P) (hf : ∀ m, f (i m) ∈ LinearMap.range k)
441
+
442
+ /-- Restrict the scalars and range of a linear map. -/
443
+ noncomputable def restrictScalarsRange :
444
+ M' →ₗ[S] P' :=
445
+ ((f.restrictScalars S).comp i).codLift k hk hf
446
+
447
+ @[simp]
448
+ lemma restrictScalarsRange_apply (m : M') :
449
+ k (restrictScalarsRange i k hk f hf m) = f (i m) := by
450
+ have : k (restrictScalarsRange i k hk f hf m) =
451
+ (k ∘ₗ ((f.restrictScalars S).comp i).codLift k hk hf) m :=
452
+ rfl
453
+ rw [this, comp_codLift, comp_apply, restrictScalars_apply]
454
+
455
+ @[simp]
456
+ lemma eq_restrictScalarsRange_iff (m : M') (p : P') :
457
+ p = restrictScalarsRange i k hk f hf m ↔ k p = f (i m) := by
458
+ rw [← restrictScalarsRange_apply i k hk f hf m, hk.eq_iff]
459
+
460
+ @[simp]
461
+ lemma restrictScalarsRange_apply_eq_zero_iff (m : M') :
462
+ restrictScalarsRange i k hk f hf m = 0 ↔ f (i m) = 0 := by
463
+ rw [← hk.eq_iff, restrictScalarsRange_apply, map_zero]
464
+
465
+ end restrictScalarsRange
466
+
467
+ section restrictScalarsRange₂
468
+
432
469
variable {R S M N P M' N' P' : Type *}
433
470
[CommSemiring R] [CommSemiring S] [SMul S R]
434
471
[AddCommMonoid M] [Module R M] [AddCommMonoid N] [Module R N] [AddCommMonoid P] [Module R P]
@@ -441,25 +478,25 @@ variable (i : M' →ₗ[S] M) (j : N' →ₗ[S] N) (k : P' →ₗ[S] P) (hk : In
441
478
(B : M →ₗ[R] N →ₗ[R] P) (hB : ∀ m n, B (i m) (j n) ∈ LinearMap.range k)
442
479
443
480
/-- Restrict the scalars, domains, and range of a bilinear map. -/
444
- noncomputable def restrictScalarsRange :
481
+ noncomputable def restrictScalarsRange₂ :
445
482
M' →ₗ[S] N' →ₗ[S] P' :=
446
483
(((LinearMap.restrictScalarsₗ S R _ _ _).comp
447
484
(B.restrictScalars S)).compl₁₂ i j).codRestrict₂ k hk hB
448
485
449
- @[simp] lemma restrictScalarsRange_apply (m : M') (n : N') :
450
- k (restrictScalarsRange i j k hk B hB m n) = B (i m) (j n) := by
451
- simp [restrictScalarsRange]
486
+ @[simp] lemma restrictScalarsRange₂_apply (m : M') (n : N') :
487
+ k (restrictScalarsRange₂ i j k hk B hB m n) = B (i m) (j n) := by
488
+ simp [restrictScalarsRange₂ ]
452
489
453
490
@[simp]
454
- lemma eq_restrictScalarsRange_iff (m : M') (n : N') (p : P') :
455
- p = restrictScalarsRange i j k hk B hB m n ↔ k p = B (i m) (j n) := by
456
- rw [← restrictScalarsRange_apply i j k hk B hB m n, hk.eq_iff]
491
+ lemma eq_restrictScalarsRange₂_iff (m : M') (n : N') (p : P') :
492
+ p = restrictScalarsRange₂ i j k hk B hB m n ↔ k p = B (i m) (j n) := by
493
+ rw [← restrictScalarsRange₂_apply i j k hk B hB m n, hk.eq_iff]
457
494
458
495
@[simp]
459
- lemma restrictScalarsRange_apply_eq_zero_iff (m : M') (n : N') :
460
- restrictScalarsRange i j k hk B hB m n = 0 ↔ B (i m) (j n) = 0 := by
461
- rw [← hk.eq_iff, restrictScalarsRange_apply , map_zero]
496
+ lemma restrictScalarsRange₂_apply_eq_zero_iff (m : M') (n : N') :
497
+ restrictScalarsRange₂ i j k hk B hB m n = 0 ↔ B (i m) (j n) = 0 := by
498
+ rw [← hk.eq_iff, restrictScalarsRange₂_apply , map_zero]
462
499
463
- end restrictScalarsRange
500
+ end restrictScalarsRange₂
464
501
465
502
end LinearMap
0 commit comments