@@ -412,12 +412,16 @@ variable {K : Type*} [Field K] (v : Valuation K Γ)
412412
413413/-- `Valuation.unitsMap` is the `MonoidHom` obtained by restricting a valuation to the non-zero
414414 elements of the ring. -/
415- @[simps]
416415noncomputable def unitsMap : Kˣ →* Γˣ where
417416 toFun := fun x ↦ Units.mk0 _ (ne_zero_of_unit v x)
418417 map_one' := by simp
419418 map_mul' := fun x y ↦ by simp
420419
420+ @[simp]
421+ lemma unitsMap_apply (x : Kˣ) : v.unitsMap x = v x.1 := by
422+ simp only [unitsMap, Units.val_mk0, MonoidHom.coe_mk, OneHom.coe_mk, Units.val_mk0]
423+
424+
421425/-- The range of `Valuation.unitsMap` as a subgroup of the target. -/
422426def unitsMapRange : Subgroup Γˣ where
423427 carrier := range v.unitsMap
@@ -539,7 +543,6 @@ end Field
539543
540544open LinearOrderedCommGroup
541545
542- variable {Γ : Type *} [LinearOrderedCommGroupWithZero Γ]
543546
544547section Ring
545548
@@ -650,7 +653,8 @@ namespace Subgroup
650653
651654variable (H : Subgroup G) [Nontrivial H]
652655
653-
656+ -- Move together results in `Yakov.lean` (probably inside `Valuation.Discrete.Basic` or
657+ -- `Order.Group.Cyclic`
654658lemma genLTOne_val_eq_genLTOne : ((⊤ : Subgroup H).genLTOne) = H.genLTOne := by
655659 set γ := H.genLTOne with hγ
656660 set η := ((⊤ : Subgroup H).genLTOne) with hη
@@ -709,19 +713,16 @@ theorem exists_isPreuniformizer_of_isNontrivial [v.IsNontrivial] :
709713 have hg_mem : g.1 ∈ v.unitsMapRange := SetLike.coe_mem ..
710714 obtain ⟨π, hπ⟩ := hg_mem
711715 use π.1
712- have moveup : v.unitsMap π = v π.1 := by -- *MOVE ME UP!*
713- simp only [unitsMap_apply, Units.val_mk0]
714716 constructor
715717 · apply le_of_lt
716- rw [← moveup]
717- rw [hπ]
718+ rw [← unitsMap_apply, hπ]
718719 have := Subgroup.genLTOne_lt_one (H := v.unitsMapRange)
719720 rw [hg]
720721 rw [← Units.val_one]
721722 rw [Units.val_lt_val]
722723 rw [LinearOrderedCommGroup.Subgroup.genLTOne_val_eq_genLTOne]
723724 exact this
724- · rw [← moveup , hπ, hg]
725+ · rw [← unitsMap_apply , hπ, hg]
725726 rw [LinearOrderedCommGroup.Subgroup.genLTOne_val_eq_genLTOne]
726727 -- **FAE : The above `splitting` should not be performed**
727728
@@ -762,13 +763,13 @@ end IsDiscrete
762763
763764section IsNontrivial
764765
765- variable {v} [IsNontrivial v]
766+ variable {v} [IsNontrivial v] [Nontrivial Γˣ]
766767
767768theorem IsUniformizer.isPreuniformizer {π : K} (hπ : IsUniformizer v π) :
768769 IsPreuniformizer v π := by
769770 rw [isPreuniformizer_iff]
770771 rw [isUniformizer_iff] at hπ
771- haveI := isDiscrete_of_exists_isUniformizer hπ
772+ have := isDiscrete_of_exists_isUniformizer hπ
772773 sorry
773774 /- set g := (Mul.exists_generator_lt_one ℤ v.unitsMapRange_ne_bot).choose with hg
774775 obtain ⟨h1, htop⟩ := (Mul.exists_generator_lt_one ℤ v.unitsMapRange_ne_bot).choose_spec
@@ -789,7 +790,9 @@ section IsDiscrete
789790variable {v} [hv : IsDiscrete v]
790791
791792theorem IsPreuniformizer.isUniformizer {π : K} (hπ : IsPreuniformizer v π) :
793+ haveI := IsDiscrete.nontrivial_value_group v
792794 IsUniformizer v π := by
795+ have := IsDiscrete.nontrivial_value_group v
793796 rw [isUniformizer_iff]
794797 rw [isPreuniformizer_iff] at hπ
795798 sorry
@@ -801,21 +804,25 @@ theorem IsPreuniformizer.isUniformizer {π : K} (hπ : IsPreuniformizer v π) :
801804 exact MultInt.eq_ofAdd_neg_one_of_generates_top h1 htop -/
802805
803806theorem isUniformizer_iff_isPreuniformizer {π : K} :
807+ haveI := IsDiscrete.nontrivial_value_group v
804808 IsUniformizer v π ↔ IsPreuniformizer v π :=
809+ have := IsDiscrete.nontrivial_value_group v
805810 ⟨fun hπ ↦ IsUniformizer.isPreuniformizer hπ, fun hπ ↦ IsPreuniformizer.isUniformizer hπ⟩
806811
807812/-- A constructor for uniformizers. -/
808- def Preuniformizer.to_uniformizer (π : Preuniformizer v) : Uniformizer v where
809- val := π.val
810- valuation_eq_gen := IsPreuniformizer.isUniformizer π.2
813+ def Preuniformizer.to_uniformizer (π : Preuniformizer v) :
814+ haveI := IsDiscrete.nontrivial_value_group v
815+ Uniformizer v := by
816+ have := IsDiscrete.nontrivial_value_group v
817+ apply Uniformizer.mk
818+ exact IsPreuniformizer.isUniformizer π.2
811819
812820end IsDiscrete
813821
814822section PreUniformizer
815823
816824variable {v} [IsNontrivial v]
817825
818- omit [Nontrivial Γˣ] in
819826theorem isPreuniformizer_of_associated {π₁ π₂ : K₀} (h1 : IsPreuniformizer v π₁)
820827 (H : Associated π₁ π₂) : IsPreuniformizer v π₂ := by
821828 obtain ⟨u, hu⟩ := H
@@ -907,6 +914,8 @@ end PreUniformizer
907914
908915section IsUniformizer
909916
917+ variable [Nontrivial Γˣ]
918+
910919theorem isUniformizer_of_associated {π₁ π₂ : K₀} (h1 : IsUniformizer v π₁) (H : Associated π₁ π₂) :
911920 IsUniformizer v π₂ :=
912921 have : IsDiscrete v := isDiscrete_of_exists_isUniformizer h1
@@ -915,6 +924,8 @@ theorem isUniformizer_of_associated {π₁ π₂ : K₀} (h1 : IsUniformizer v
915924
916925end IsUniformizer
917926
927+ variable [Nontrivial Γˣ]
928+
918929section Uniformizer
919930
920931theorem associated_of_uniformizer (π₁ π₂ : Uniformizer v) : Associated π₁.1 π₂.1 :=
@@ -936,6 +947,7 @@ theorem uniformizer_is_generator (π : Uniformizer v) :
936947
937948end Uniformizer
938949
950+
939951theorem isUniformizer_is_generator {π : v.valuationSubring} (hπ : IsUniformizer v π) :
940952 maximalIdeal v.valuationSubring = Ideal.span {π} :=
941953 have : IsDiscrete v := isDiscrete_of_exists_isUniformizer hπ
@@ -1003,6 +1015,7 @@ theorem isUniformizer_of_generator [IsDiscrete v] {r : K₀}
10031015 Ideal.mem_span_singleton', dvd_iff_exists_eq_mul_left]
10041016 tauto -/
10051017
1018+ omit [Nontrivial Γˣ] in
10061019theorem val_le_iff_dvd (L : Type w₁) [Field L] {w : Valuation L ℤₘ₀} [IsDiscrete w]
10071020 [IsDiscreteValuationRing w.valuationSubring] (x : w.valuationSubring) (n : ℕ) :
10081021 w x ≤ ofAdd (-(n : ℤ)) ↔ IsLocalRing.maximalIdeal w.valuationSubring ^ n ∣ Ideal.span {x} := by
0 commit comments