@@ -10,7 +10,6 @@ import tactic.tidy
10
10
import linear_algebra.submodule
11
11
import ring_theory.ideals
12
12
13
- local attribute [instance] classical.dec
14
13
open set lattice
15
14
16
15
def is_fg {α β} [ring α] [module α β]
@@ -67,36 +66,51 @@ theorem is_noetherian_iff_well_founded
67
66
(hf ⟨x, h⟩) },
68
67
exact not_le_of_lt (hN.1 (nat.lt_succ_self A))
69
68
(le_trans (le_supr _ _) this )
70
- end ,
71
- λ h N, begin
72
- suffices : ∀ M ≤ N, ∃ s, finite s ∧ M ⊔ submodule.span s = N,
73
- { rcases this ⊥ bot_le with ⟨s, hs, e⟩,
74
- exact submodule.fg_def.2 ⟨s, hs, by simpa using e⟩ },
75
- refine λ M, h.induction M _, intros M IH MN,
76
- by_cases h : ∀ x, x ∈ N → x ∈ M,
77
- { cases le_antisymm MN h, exact ⟨∅, by simp⟩ },
78
- { simp [not_forall] at h,
79
- rcases h with ⟨x, h, h₂⟩,
80
- have : ¬M ⊔ submodule.span {x} ≤ M,
81
- { intro hn, apply h₂,
82
- simpa using submodule.span_subset_iff.1 (le_trans le_sup_right hn) },
83
- rcases IH (M ⊔ submodule.span {x})
84
- ⟨@le_sup_left _ _ M _, this ⟩
85
- (sup_le MN (submodule.span_subset_iff.2 (by simpa))) with ⟨s, hs, hs₂⟩,
86
- refine ⟨insert x s, finite_insert _ hs, _⟩,
87
- rw [← hs₂, sup_assoc, ← submodule.span_union], simp }
88
- end ⟩
69
+ end ,
70
+ begin
71
+ assume h N,
72
+ suffices : ∀ M ≤ N, ∃ s, finite s ∧ M ⊔ submodule.span s = N,
73
+ { rcases this ⊥ bot_le with ⟨s, hs, e⟩,
74
+ exact submodule.fg_def.2 ⟨s, hs, by simpa using e⟩ },
75
+ refine λ M, h.induction M _, intros M IH MN,
76
+ letI := classical.dec,
77
+ by_cases h : ∀ x, x ∈ N → x ∈ M,
78
+ { cases le_antisymm MN h, exact ⟨∅, by simp⟩ },
79
+ { simp [not_forall] at h,
80
+ rcases h with ⟨x, h, h₂⟩,
81
+ have : ¬M ⊔ submodule.span {x} ≤ M,
82
+ { intro hn, apply h₂,
83
+ simpa using submodule.span_subset_iff.1 (le_trans le_sup_right hn) },
84
+ rcases IH (M ⊔ submodule.span {x})
85
+ ⟨@le_sup_left _ _ M _, this ⟩
86
+ (sup_le MN (submodule.span_subset_iff.2 (by simpa))) with ⟨s, hs, hs₂⟩,
87
+ refine ⟨insert x s, finite_insert _ hs, _⟩,
88
+ rw [← hs₂, sup_assoc, ← submodule.span_union], simp }
89
+ end ⟩
89
90
90
91
def is_noetherian_ring (α) [ring α] : Prop := is_noetherian α α
91
92
93
+ theorem ring.is_noetherian_of_fintype (R M) [ring R] [module R M] [fintype M] : is_noetherian R M :=
94
+ by letI := classical.dec;
95
+ from assume s, ⟨to_finset s, suffices span (s : set M) = s, by simpa, span_eq_of_is_submodule s.to_is_submodule⟩
96
+
97
+ instance fintype.of_subsingleton_ring {α} [ring α] [h : subsingleton α] : fintype α :=
98
+ { elems := {0 },
99
+ complete := assume x, suffices x = 0 , by simpa, subsingleton.elim x 0 }
100
+
101
+ theorem ring.is_noetherian_of_zero_eq_one {R} [ring R] (h01 : (0 : R) = 1 ) : is_noetherian_ring R :=
102
+ by haveI := subsingleton_of_zero_eq_one R h01; exact ring.is_noetherian_of_fintype R R
103
+
92
104
theorem is_noetherian_of_submodule_of_noetherian (R M) [ring R] [module R M] (N : set M) [is_submodule N]
93
105
(h : is_noetherian R M) : is_noetherian R N :=
94
106
begin
95
107
rw is_noetherian_iff_well_founded at h ⊢,
96
- convert order_embedding.well_founded (order_embedding.rsymm (submodule.lt_order_embedding R M N)) h,end
108
+ convert order_embedding.well_founded (order_embedding.rsymm (submodule.lt_order_embedding R M N)) h
109
+ end
97
110
98
111
theorem is_noetherian_of_quotient_of_noetherian (R) [ring R] (M) [module R M] (N : set M) [is_submodule N]
99
112
(h : is_noetherian R M) : is_noetherian R (quotient_module.quotient M N) :=
100
113
begin
101
114
rw is_noetherian_iff_well_founded at h ⊢,
102
- convert order_embedding.well_founded (order_embedding.rsymm (quotient_module.lt_order_embedding R M N)) h,end
115
+ convert order_embedding.well_founded (order_embedding.rsymm (quotient_module.lt_order_embedding R M N)) h
116
+ end
0 commit comments