@@ -293,7 +293,7 @@ module.of_core $ by refine { smul := (•), ..};
293
293
294
294
/-- Composition by `f : M₂ → M₃` is a linear map from the space of linear maps `M → M₂` to the space of
295
295
linear maps `M₂ → M₃`. -/
296
- def congr_right (f : M₂ →ₗ[R] M₃) : (M →ₗ[R] M₂) →ₗ[R] (M →ₗ[R] M₃) :=
296
+ def comp_right (f : M₂ →ₗ[R] M₃) : (M →ₗ[R] M₂) →ₗ[R] (M →ₗ[R] M₃) :=
297
297
⟨linear_map.comp f,
298
298
λ _ _, linear_map.ext $ λ _, f.2 _ _,
299
299
λ _ _, linear_map.ext $ λ _, f.3 _ _⟩
@@ -626,53 +626,39 @@ lemma span_union (s t : set M) : span R (s ∪ t) = span R s ⊔ span R t :=
626
626
lemma span_Union {ι} (s : ι → set M) : span R (⋃ i, s i) = ⨆ i, span R (s i) :=
627
627
(submodule.gi R M).gc.l_supr
628
628
629
- @[simp] theorem Union_coe_of_directed {ι} (hι : nonempty ι)
630
- (S : ι → submodule R M)
631
- (H : ∀ i j, ∃ k, S i ≤ S k ∧ S j ≤ S k) :
629
+ @[simp] theorem coe_supr_of_directed {ι} [hι : nonempty ι]
630
+ (S : ι → submodule R M) (H : directed (≤) S) :
632
631
((supr S : submodule R M) : set M) = ⋃ i, S i :=
633
632
begin
634
633
refine subset.antisymm _ (Union_subset $ le_supr S),
635
- rw [show supr S = ⨆ i, span R (S i), by simp, ← span_Union],
636
- unfreezeI,
637
- refine λ x hx, span_induction hx (λ _, id) _ _ _,
638
- { cases hι with i, exact mem_Union.2 ⟨i, by simp⟩ },
639
- { simp, intros x y i hi j hj,
634
+ suffices : (span R (⋃ i, (S i : set M)) : set M) ⊆ ⋃ (i : ι), ↑(S i),
635
+ by simpa only [span_Union, span_eq] using this ,
636
+ refine (λ x hx, span_induction hx (λ _, id) _ _ _);
637
+ simp only [mem_Union, exists_imp_distrib],
638
+ { exact hι.elim (λ i, ⟨i, (S i).zero_mem⟩) },
639
+ { intros x y i hi j hj,
640
640
rcases H i j with ⟨k, ik, jk⟩,
641
641
exact ⟨k, add_mem _ (ik hi) (jk hj)⟩ },
642
- { simp [-mem_coe]; exact λ a x i hi, ⟨i, smul_mem _ a hi⟩ },
642
+ { exact λ a x i hi, ⟨i, smul_mem _ a hi⟩ },
643
643
end
644
644
645
645
lemma mem_supr_of_mem {ι : Sort *} {b : M} (p : ι → submodule R M) (i : ι) (h : b ∈ p i) :
646
646
b ∈ (⨆i, p i) :=
647
647
have p i ≤ (⨆i, p i) := le_supr p i,
648
648
@this b h
649
649
650
- @[simp] theorem mem_supr_of_directed {ι} (hι : nonempty ι)
651
- (S : ι → submodule R M)
652
- (H : ∀ i j, ∃ k, S i ≤ S k ∧ S j ≤ S k) {x} :
650
+ @[simp] theorem mem_supr_of_directed {ι} [nonempty ι]
651
+ (S : ι → submodule R M) (H : directed (≤) S) {x} :
653
652
x ∈ supr S ↔ ∃ i, x ∈ S i :=
654
- by rw [← mem_coe, Union_coe_of_directed hι S H, mem_Union]; refl
653
+ by { rw [← mem_coe, coe_supr_of_directed S H, mem_Union], refl }
655
654
656
655
theorem mem_Sup_of_directed {s : set (submodule R M)}
657
- {z} (hzs : z ∈ Sup s) (x ∈ s)
658
- (hdir : ∀ i ∈ s, ∀ j ∈ s, ∃ k ∈ s, i ≤ k ∧ j ≤ k) :
659
- ∃ y ∈ s, z ∈ y :=
656
+ {z} (hs : s.nonempty) (hdir : directed_on (≤) s) :
657
+ z ∈ Sup s ↔ ∃ y ∈ s, z ∈ y :=
660
658
begin
661
- haveI := classical.dec, rw Sup_eq_supr at hzs,
662
- have : ∃ (i : submodule R M), z ∈ ⨆ (H : i ∈ s), i,
663
- { refine (mem_supr_of_directed ⟨⊥⟩ _ (λ i j, _)).1 hzs,
664
- by_cases his : i ∈ s; by_cases hjs : j ∈ s,
665
- { rcases hdir i his j hjs with ⟨k, hks, hik, hjk⟩,
666
- exact ⟨k, le_supr_of_le hks (supr_le $ λ _, hik),
667
- le_supr_of_le hks (supr_le $ λ _, hjk)⟩ },
668
- { exact ⟨i, le_refl _, supr_le $ hjs.elim⟩ },
669
- { exact ⟨j, supr_le $ his.elim, le_refl _⟩ },
670
- { exact ⟨⊥, supr_le $ his.elim, supr_le $ hjs.elim⟩ } },
671
- cases this with N hzn, by_cases hns : N ∈ s,
672
- { have : (⨆ (H : N ∈ s), N) ≤ N := supr_le (λ _, le_refl _),
673
- exact ⟨N, hns, this hzn⟩ },
674
- { have : (⨆ (H : N ∈ s), N) ≤ ⊥ := supr_le hns.elim,
675
- cases (mem_bot R).1 (this hzn), exact ⟨x, H, x.zero_mem⟩ }
659
+ haveI : nonempty s := hs.to_subtype,
660
+ rw [Sup_eq_supr, supr_subtype', mem_supr_of_directed, subtype.exists],
661
+ exact (directed_on_iff_directed _).1 hdir
676
662
end
677
663
678
664
section
@@ -1475,7 +1461,7 @@ def congr_right (f : M₂ ≃ₗ[R] M₃) : (M →ₗ[R] M₂) ≃ₗ (M →ₗ
1475
1461
1476
1462
/-- If M and M₂ are linearly isomorphic then the two spaces of linear maps from M and M₂ to themselves
1477
1463
are linearly isomorphic. -/
1478
- def conj (e : M ≃ₗ[R] M₂) : (M →ₗ[R] M) ≃ₗ[R] (M₂ →ₗ[R] M₂) := arrow_congr e e
1464
+ def conj (e : M ≃ₗ[R] M₂) : (module.End R M) ≃ₗ[R] (module.End R M₂) := arrow_congr e e
1479
1465
1480
1466
end comm_ring
1481
1467
0 commit comments