@@ -214,44 +214,22 @@ end IsRankOneDiscrete
214214
215215section IsNontrivial
216216
217- open MonoidHomWithZero
217+ open LinearOrderedCommGroup MonoidHomWithZero
218218
219219section Ring
220220
221221variable {K : Type *} [Ring K] (v : Valuation K Γ) [IsCyclic (valueGroup v)]
222222 [Nontrivial (valueGroup v)]
223223
224- -- **TODO** : wait for Nontrivial (valueMonoid v) and restate.
225- instance IsRankOneDiscrete.mk' /- {π : K}
226- (hπ : v π = (LinearOrderedCommGroup.genLTOne (valueGroup v)).1) -/ :
227- IsRankOneDiscrete v := by
228- /- have hπ0 : v π ≠ 0 := sorry
229- have h1 : ((1 : (valueGroup v)) : Γˣ) = 1 := rfl
230- apply IsRankOneDiscrete.mk
231- use Units.mk0 (v π) hπ0
232- constructor
233- · --rw [← LinearOrderedCommGroup.Subgroup.genLTOne_zpowers_eq_top (H := valueGroup v)]
234- sorry
235- · simp only [hπ, LinearOrderedCommGroup.genLTOne_eq_of_top, Units.mk0_val, ← h1]
236- exact Subtype.coe_lt_coe.mpr (LinearOrderedCommGroup.Subgroup.genLTOne_lt_one ⊤) -/
237- sorry
238-
239- /- apply IsRankOneDiscrete.mk
240- use Units.mk0 (v π) (IsUniformizer_val_ne_zero hπ)
241- constructor
242- · sorry
243- · sorry -/
244- /- simp [hπ, genLTOne_eq_of_top, Units.mk0_val]
245- refine ⟨?_, by use π⟩
246- simpa [Units.mk0_val, Subgroup.genLTOne_zpowers_eq_top, Subgroup.mem_top]
247- using Subgroup.genLTOne_lt_one ⊤ -/
224+ instance IsRankOneDiscrete.mk' : IsRankOneDiscrete v :=
225+ ⟨(valueGroup v).genLTOne,
226+ ⟨(valueGroup v).genLTOne_zpowers_eq_top, (valueGroup v).genLTOne_lt_one⟩⟩
227+
248228
249229end Ring
250230
251231section Field
252232
253- open LinearOrderedCommGroup
254-
255233variable {K : Type *} [Field K] (v : Valuation K Γ) [IsCyclic (valueGroup v)]
256234 [Nontrivial (valueGroup v)]
257235
@@ -456,7 +434,8 @@ noncomputable instance _root_.DiscreteValuation.rankOne : RankOne v where
456434
457435end RankOne -/
458436
459- theorem ideal_isPrincipal /- [ v.IsNontrivial ] [IsCyclic Γˣ] -/ (I : Ideal K₀) : I.IsPrincipal := by
437+ theorem ideal_isPrincipal [IsCyclic (valueGroup v)] [Nontrivial (valueGroup v)] (I : Ideal K₀) :
438+ I.IsPrincipal := by
460439 suffices ∀ P : Ideal K₀, P.IsPrime → Submodule.IsPrincipal P by
461440 exact (IsPrincipalIdealRing.of_prime this).principal I
462441 intro P hP
@@ -476,11 +455,11 @@ theorem ideal_isPrincipal /- [v.IsNontrivial] [IsCyclic Γˣ] -/ (I : Ideal K₀
476455 rw [← Ideal.IsMaximal.eq_of_le (IsLocalRing.maximalIdeal.isMaximal K₀) hP.ne_top hx_mem]
477456 exact ⟨π.1 , Uniformizer_is_generator π⟩
478457
479- theorem integer_isPrincipalIdealRing /- [ v.IsNontrivial ] [IsCyclic Γˣ] -/ : IsPrincipalIdealRing K₀ :=
480- ⟨fun I ↦ ideal_isPrincipal v I⟩
458+ theorem integer_isPrincipalIdealRing [IsCyclic (valueGroup v) ] [Nontrivial (valueGroup v)] :
459+ IsPrincipalIdealRing K₀ := ⟨fun I ↦ ideal_isPrincipal v I⟩
481460
482461/-- This is Chapter I, Section 1, Proposition 1 in Serre's Local Fields -/
483- instance dvr_of_isDiscrete /- [ v.IsNontrivial ] [IsCyclic Γˣ] -/ :
462+ instance dvr_of_isDiscrete [IsCyclic (valueGroup v) ] [Nontrivial (valueGroup v)] :
484463 IsDiscreteValuationRing K₀ where
485464 toIsPrincipalIdealRing := integer_isPrincipalIdealRing v
486465 toIsLocalRing := inferInstance
@@ -500,19 +479,26 @@ def _root_.IsDiscreteValuationRing.maximalIdeal : HeightOneSpectrum A where
500479 ne_bot := by
501480 simpa [ne_eq, ← isField_iff_maximalIdeal_eq] using IsDiscreteValuationRing.not_isField A
502481
503- -- variable {A}
504-
505482noncomputable instance instAdicValued : Valued (FractionRing A) ℤₘ₀ :=
506483 (IsDiscreteValuationRing.maximalIdeal A).adicValued
507484
508485instance :
509486 IsRankOneDiscrete ((IsDiscreteValuationRing.maximalIdeal A).valuation (FractionRing A)) := by
487+ have : Nontrivial ↥(MonoidHomWithZero.valueGroup
488+ (valuation (FractionRing A) (IsDiscreteValuationRing.maximalIdeal A))) := by
489+ let v := (IsDiscreteValuationRing.maximalIdeal A).valuation (FractionRing A)
490+ set π := valuation_exists_uniformizer (FractionRing A) (maximalIdeal A)|>.choose with hπ_def
491+ have hπ : v π = ↑(ofAdd (-1 : ℤ)) :=
492+ valuation_exists_uniformizer (FractionRing A) (maximalIdeal A)|>.choose_spec
493+ rw [Subgroup.nontrivial_iff_exists_ne_one]
494+ use Units.mk0 (v π) (by simp [hπ])
495+ constructor
496+ · apply MonoidHomWithZero.mem_valueGroup
497+ simp only [Units.val_mk0, mem_range]
498+ use π
499+ · simp only [hπ]
500+ exact not_eq_of_beq_eq_false rfl
510501 apply IsRankOneDiscrete.mk'
511- /- apply isDiscrete_of_exists_isUniformizer
512- (π := valuation_exists_uniformizer (FractionRing A) (maximalIdeal A)|>.choose)
513- convert valuation_exists_uniformizer (FractionRing A) (maximalIdeal A)|>.choose_spec
514- rw [← genLTOne_eq_of_top, ← Multiplicative.genLTOne_eq_neg_one]
515- norm_cast -/
516502
517503theorem exists_of_le_one {x : FractionRing A} (H : Valued.v x ≤ (1 : ℤₘ₀)) :
518504 ∃ a : A, algebraMap A (FractionRing A) a = x := by
0 commit comments