@@ -556,6 +556,10 @@ def map (f : M →ₛₗ[σ₁₂] M₂) (p : submodule R M) : submodule R₂ M
556
556
@[simp] lemma map_coe (f : M →ₛₗ[σ₁₂] M₂) (p : submodule R M) :
557
557
(map f p : set M₂) = f '' p := rfl
558
558
559
+ lemma map_to_add_submonoid (f : M →ₛₗ[σ₁₂] M₂) (p : submodule R M) :
560
+ (p.map f).to_add_submonoid = p.to_add_submonoid.map f :=
561
+ set_like.coe_injective rfl
562
+
559
563
@[simp] lemma mem_map {f : M →ₛₗ[σ₁₂] M₂} {p : submodule R M} {x : M₂} :
560
564
x ∈ map f p ↔ ∃ y, y ∈ p ∧ f y = x := iff.rfl
561
565
@@ -697,15 +701,15 @@ lemma map_sup_comap_of_surjective (p q : submodule R₂ M₂) :
697
701
(p.comap f ⊔ q.comap f).map f = p ⊔ q :=
698
702
(gi_map_comap hf).l_sup_u _ _
699
703
700
- lemma map_supr_comap_of_sujective (S : ι → submodule R₂ M₂) :
704
+ lemma map_supr_comap_of_sujective {ι : Sort *} (S : ι → submodule R₂ M₂) :
701
705
(⨆ i, (S i).comap f).map f = supr S :=
702
706
(gi_map_comap hf).l_supr_u _
703
707
704
708
lemma map_inf_comap_of_surjective (p q : submodule R₂ M₂) :
705
709
(p.comap f ⊓ q.comap f).map f = p ⊓ q :=
706
710
(gi_map_comap hf).l_inf_u _ _
707
711
708
- lemma map_infi_comap_of_surjective (S : ι → submodule R₂ M₂) :
712
+ lemma map_infi_comap_of_surjective {ι : Sort *} (S : ι → submodule R₂ M₂) :
709
713
(⨅ i, (S i).comap f).map f = infi S :=
710
714
(gi_map_comap hf).l_infi_u _
711
715
@@ -739,13 +743,15 @@ lemma map_injective_of_injective : function.injective (map f) :=
739
743
lemma comap_inf_map_of_injective (p q : submodule R M) : (p.map f ⊓ q.map f).comap f = p ⊓ q :=
740
744
(gci_map_comap hf).u_inf_l _ _
741
745
742
- lemma comap_infi_map_of_injective (S : ι → submodule R M) : (⨅ i, (S i).map f).comap f = infi S :=
746
+ lemma comap_infi_map_of_injective {ι : Sort *} (S : ι → submodule R M) :
747
+ (⨅ i, (S i).map f).comap f = infi S :=
743
748
(gci_map_comap hf).u_infi_l _
744
749
745
750
lemma comap_sup_map_of_injective (p q : submodule R M) : (p.map f ⊔ q.map f).comap f = p ⊔ q :=
746
751
(gci_map_comap hf).u_sup_l _ _
747
752
748
- lemma comap_supr_map_of_injective (S : ι → submodule R M) : (⨆ i, (S i).map f).comap f = supr S :=
753
+ lemma comap_supr_map_of_injective {ι : Sort *} (S : ι → submodule R M) :
754
+ (⨆ i, (S i).map f).comap f = supr S :=
749
755
(gci_map_comap hf).u_supr_l _
750
756
751
757
lemma map_le_map_iff_of_injective (p q : submodule R M) : p.map f ≤ q.map f ↔ p ≤ q :=
@@ -772,7 +778,7 @@ lemma eq_zero_of_bot_submodule : ∀(b : (⊥ : submodule R M)), b = 0
772
778
773
779
/-- The infimum of a family of invariant submodule of an endomorphism is also an invariant
774
780
submodule. -/
775
- lemma _root_.linear_map.infi_invariant {σ : R →+* R} [ring_hom_surjective σ] {ι : Type *}
781
+ lemma _root_.linear_map.infi_invariant {σ : R →+* R} [ring_hom_surjective σ] {ι : Sort *}
776
782
(f : M →ₛₗ[σ] M) {p : ι → submodule R M} (hf : ∀ i, ∀ v ∈ (p i), f v ∈ p i) :
777
783
∀ v ∈ infi p, f v ∈ infi p :=
778
784
begin
@@ -1021,9 +1027,28 @@ by rintro ⟨y, hy, z, hz, rfl⟩; exact add_mem _
1021
1027
lemma mem_sup' : x ∈ p ⊔ p' ↔ ∃ (y : p) (z : p'), (y:M) + z = x :=
1022
1028
mem_sup.trans $ by simp only [set_like.exists, coe_mk]
1023
1029
1030
+ variables (p p')
1031
+
1024
1032
lemma coe_sup : ↑(p ⊔ p') = (p + p' : set M) :=
1025
1033
by { ext, rw [set_like.mem_coe, mem_sup, set.mem_add], simp, }
1026
1034
1035
+ lemma sup_to_add_submonoid :
1036
+ (p ⊔ p').to_add_submonoid = p.to_add_submonoid ⊔ p'.to_add_submonoid :=
1037
+ begin
1038
+ ext x,
1039
+ rw [mem_to_add_submonoid, mem_sup, add_submonoid.mem_sup],
1040
+ refl,
1041
+ end
1042
+
1043
+ lemma sup_to_add_subgroup {R M : Type *} [ring R] [add_comm_group M] [module R M]
1044
+ (p p' : submodule R M) :
1045
+ (p ⊔ p').to_add_subgroup = p.to_add_subgroup ⊔ p'.to_add_subgroup :=
1046
+ begin
1047
+ ext x,
1048
+ rw [mem_to_add_subgroup, mem_sup, add_subgroup.mem_sup],
1049
+ refl,
1050
+ end
1051
+
1027
1052
end
1028
1053
1029
1054
/- This is the character `∙`, with escape sequence `\.`, and is thus different from the scalar
@@ -1176,6 +1201,27 @@ le_antisymm
1176
1201
(supr_le $ assume i, subset.trans (assume m hm, set.mem_Union.mpr ⟨i, hm⟩) subset_span)
1177
1202
(span_le.mpr $ Union_subset_iff.mpr $ assume i m hm, mem_supr_of_mem i hm)
1178
1203
1204
+ lemma supr_to_add_submonoid {ι : Sort *} (p : ι → submodule R M) :
1205
+ (⨆ i, p i).to_add_submonoid = ⨆ i, (p i).to_add_submonoid :=
1206
+ begin
1207
+ refine le_antisymm (λ x, _) (supr_le $ λ i, to_add_submonoid_mono $ le_supr _ i),
1208
+ simp_rw [supr_eq_span, add_submonoid.supr_eq_closure, mem_to_add_submonoid, coe_to_add_submonoid],
1209
+ intros hx,
1210
+ refine submodule.span_induction hx (λ x hx, _) _ (λ x y hx hy, _) (λ r x hx, _),
1211
+ { exact add_submonoid.subset_closure hx },
1212
+ { exact add_submonoid.zero_mem _ },
1213
+ { exact add_submonoid.add_mem _ hx hy },
1214
+ { apply add_submonoid.closure_induction hx,
1215
+ { rintros x ⟨_, ⟨i, rfl⟩, hix : x ∈ p i⟩,
1216
+ apply add_submonoid.subset_closure (set.mem_Union.mpr ⟨i, _⟩),
1217
+ exact smul_mem _ r hix },
1218
+ { rw smul_zero,
1219
+ exact add_submonoid.zero_mem _ },
1220
+ { intros x y hx hy,
1221
+ rw smul_add,
1222
+ exact add_submonoid.add_mem _ hx hy, } }
1223
+ end
1224
+
1179
1225
lemma span_singleton_le_iff_mem (m : M) (p : submodule R M) : (R ∙ m) ≤ p ↔ m ∈ p :=
1180
1226
by rw [span_le, singleton_subset_iff, set_like.mem_coe]
1181
1227
0 commit comments