@@ -305,39 +305,31 @@ theorem smul_mem_span_smul_of_mem {s : Set S} {t : Set A} {k : S} (hks : k ∈ s
305
305
fun b c hc => by rw [IsScalarTower.smul_assoc]; exact smul_mem _ _ hc
306
306
#align submodule.smul_mem_span_smul_of_mem Submodule.smul_mem_span_smul_of_mem
307
307
308
- variable [SMulCommClass R S A]
309
-
310
- theorem smul_mem_span_smul {s : Set S} (hs : span R s = ⊤) {t : Set A} {k : S} {x : A}
311
- (hx : x ∈ span R t) : k • x ∈ span R (s • t) :=
312
- span_induction hx (fun x hx => smul_mem_span_smul_of_mem (hs.symm ▸ mem_top) hx)
313
- (by rw [smul_zero]; exact zero_mem _)
314
- (fun x y ihx ihy => by rw [smul_add]; exact add_mem ihx ihy)
315
- fun c x hx => smul_comm c k x ▸ smul_mem _ _ hx
316
- #align submodule.smul_mem_span_smul Submodule.smul_mem_span_smul
317
-
318
- theorem smul_mem_span_smul' {s : Set S} (hs : span R s = ⊤) {t : Set A} {k : S} {x : A}
319
- (hx : x ∈ span R (s • t)) : k • x ∈ span R (s • t) :=
320
- span_induction hx
321
- (fun x hx => by
322
- let ⟨p, _hp, q, hq, hpq⟩ := Set.mem_smul.1 hx
323
- rw [← hpq, smul_smul]
324
- exact smul_mem_span_smul_of_mem (hs.symm ▸ mem_top) hq)
325
- (by rw [smul_zero]; exact zero_mem _)
326
- (fun x y ihx ihy => by rw [smul_add]; exact add_mem ihx ihy)
327
- fun c x hx => smul_comm c k x ▸ smul_mem _ _ hx
328
- #align submodule.smul_mem_span_smul' Submodule.smul_mem_span_smul'
329
-
330
308
theorem span_smul_of_span_eq_top {s : Set S} (hs : span R s = ⊤) (t : Set A) :
331
309
span R (s • t) = (span S t).restrictScalars R :=
332
310
le_antisymm
333
- (span_le.2 fun _x hx =>
334
- let ⟨p, _q, _hps, hqt, hpqx⟩ := Set.mem_smul.1 hx
335
- hpqx ▸ (span S t).smul_mem p (subset_span hqt))
336
- fun _p hp =>
337
- span_induction hp (fun x hx => one_smul S x ▸ smul_mem_span_smul hs (subset_span hx))
338
- (zero_mem _) (fun _ _ => add_mem) fun _k _x hx => smul_mem_span_smul' hs hx
311
+ (span_le.2 fun _x ⟨p, _hps, _q, hqt, hpqx⟩ ↦ hpqx ▸ (span S t).smul_mem p (subset_span hqt))
312
+ fun p hp ↦ closure_induction hp (zero_mem _) (fun _ _ ↦ add_mem) fun s0 y hy ↦ by
313
+ refine span_induction (hs ▸ mem_top : s0 ∈ span R s)
314
+ (fun x hx ↦ subset_span ⟨x, hx, y, hy, rfl⟩) ?_ ?_ ?_
315
+ · rw [zero_smul]; apply zero_mem
316
+ · intro _ _; rw [add_smul]; apply add_mem
317
+ · intro r s0 hy; rw [IsScalarTower.smul_assoc]; exact smul_mem _ r hy
339
318
#align submodule.span_smul_of_span_eq_top Submodule.span_smul_of_span_eq_top
340
319
320
+ -- The following two lemmas were originally used to prove `span_smul_of_span_eq_top`
321
+ -- but are now not needed.
322
+ theorem smul_mem_span_smul' {s : Set S} (hs : span R s = ⊤) {t : Set A} {k : S} {x : A}
323
+ (hx : x ∈ span R (s • t)) : k • x ∈ span R (s • t) := by
324
+ rw [span_smul_of_span_eq_top hs] at hx ⊢; exact (span S t).smul_mem k hx
325
+ #align submodule.smul_mem_span_smul' Submodule.smul_mem_span_smul'
326
+
327
+ theorem smul_mem_span_smul {s : Set S} (hs : span R s = ⊤) {t : Set A} {k : S} {x : A}
328
+ (hx : x ∈ span R t) : k • x ∈ span R (s • t) := by
329
+ rw [span_smul_of_span_eq_top hs]
330
+ exact (span S t).smul_mem k (span_le_restrictScalars R S t hx)
331
+ #align submodule.smul_mem_span_smul Submodule.smul_mem_span_smul
332
+
341
333
end Module
342
334
343
335
section Algebra
0 commit comments