Skip to content

Commit 8bba420

Browse files
committed
refactor(NumberTheory): make adicCompletion a one-field structure (leanprover-community#41526)
`adicCompletion` as an `abbrev` is causing slowdown in FLT.
1 parent 2d00c92 commit 8bba420

5 files changed

Lines changed: 301 additions & 77 deletions

File tree

Mathlib/NumberTheory/NumberField/Completion/FinitePlace.lean

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,8 @@ variable {K : Type*} [Field K] {R : Type*} [CommRing R] [Algebra R K] [IsDedekin
9393

9494
/-- The embedding of a field inside its `adicCompletion` with respect to `v`. -/
9595
noncomputable def FinitePlace.embedding : K →+* adicCompletion K v :=
96-
UniformSpace.Completion.coeRingHom.comp (WithVal.equiv (v.valuation K)).symm
96+
(adicCompletion.equiv K v).symm.toRingHom.comp
97+
(UniformSpace.Completion.coeRingHom.comp (WithVal.equiv (v.valuation K)).symm)
9798

9899
theorem FinitePlace.embedding_apply (x : K) : embedding v x = ↑x := rfl
99100

Mathlib/NumberTheory/Padics/HeightOneSpectrum.lean

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -145,22 +145,30 @@ noncomputable def withValEquiv (v : HeightOneSpectrum R) :
145145
/-- The continuous `ℚ`-algebra isomorphism between `v.adicCompletion ℚ` and `ℚ_[primesEquiv v]`. -/
146146
noncomputable def adicCompletion.padicEquiv (v : HeightOneSpectrum R) :
147147
v.adicCompletion ℚ ≃A[ℚ] ℚ_[primesEquiv v] where
148-
__ := (mapRingEquiv _ (withValEquiv v).continuous
148+
__ := (IsDedekindDomain.HeightOneSpectrum.adicCompletion.equiv ℚ v).trans <|
149+
(mapRingEquiv _ (withValEquiv v).continuous
149150
(withValEquiv v).symm.continuous).trans Padic.withValRingEquiv
150-
__ := ((mapEquiv (withValEquiv v)).trans Padic.withValUniformEquiv).toHomeomorph
151+
__ := ((IsDedekindDomain.HeightOneSpectrum.adicCompletion.uniformEquiv ℚ v).trans <|
152+
(mapEquiv (withValEquiv v)).trans Padic.withValUniformEquiv).toHomeomorph
151153
commutes' := by simp
152154

153155
/-- The continuous `ℤ`-algebra isomorphism between `v.adicCompletionIntegers ℚ` and
154156
`ℤ_[primesEquiv v]`. -/
155157
noncomputable def adicCompletionIntegers.padicIntEquiv (v : HeightOneSpectrum R) :
156158
v.adicCompletionIntegers ℚ ≃A[ℤ] ℤ_[primesEquiv v] where
157-
__ := let e := (mapRingEquiv _ (withValEquiv v).continuous
159+
__ := let e0 := (IsDedekindDomain.HeightOneSpectrum.adicCompletion.equiv ℚ v).restrict
160+
(v.adicCompletionIntegers ℚ)
161+
(Valued.v (R := (v.valuation ℚ).Completion)).valuationSubring
162+
fun _ ↦ by rw [HeightOneSpectrum.mem_adicCompletionIntegers]; rfl
163+
let e := (mapRingEquiv _ (withValEquiv v).continuous
158164
(withValEquiv v).symm.continuous).restrict _ _ fun _ ↦ by
159165
simpa using! (valuation_equiv_padicValuation v).valuedCompletion_le_one_iff
160-
e.trans withValIntegersRingEquiv
161-
__ := let e := (mapEquiv (withValEquiv v)).subtype fun _ ↦ by
166+
(e0.trans e).trans withValIntegersRingEquiv
167+
__ := let e0 := (IsDedekindDomain.HeightOneSpectrum.adicCompletion.uniformEquiv ℚ v).subtype
168+
fun _ ↦ by rw [HeightOneSpectrum.mem_adicCompletionIntegers]; rfl
169+
let e := (mapEquiv (withValEquiv v)).subtype fun _ ↦ by
162170
simpa using! (valuation_equiv_padicValuation v).valuedCompletion_le_one_iff
163-
(e.trans withValIntegersUniformEquiv).toHomeomorph
171+
((e0.trans e).trans withValIntegersUniformEquiv).toHomeomorph
164172
commutes' := by simp
165173

166174
/-- The diagram

Mathlib/RingTheory/DedekindDomain/AdicValuation.lean

Lines changed: 237 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -600,26 +600,210 @@ theorem adicValued_apply' (x : WithVal (v.valuation K)) :
600600

601601
variable (K)
602602

603-
/-- The completion of `K` with respect to its `v`-adic valuation. -/
604-
abbrev adicCompletion := (v.valuation K).Completion
603+
/-- The completion of `K` with respect to its `v`-adic valuation, defined as a one-field structure
604+
wrapping the uniform-space completion `(v.valuation K).Completion`. -/
605+
structure adicCompletion where
606+
/-- Wrap an element of the underlying completion `(v.valuation K).Completion` into
607+
`adicCompletion`. -/
608+
ofCompletion ::
609+
/-- The underlying element of the completion `(v.valuation K).Completion`. -/
610+
toCompletion : (v.valuation K).Completion
611+
612+
namespace adicCompletion
613+
614+
open UniformSpace MonoidWithZeroHom MonoidWithZeroHom.ValueGroup₀ Filter Topology Valuation
615+
616+
/-- `adicCompletion.toCompletion` and `adicCompletion.ofCompletion` as an equivalence. -/
617+
@[simps]
618+
def equivCompletion : adicCompletion K v ≃ (v.valuation K).Completion where
619+
toFun := toCompletion
620+
invFun := ofCompletion
621+
left_inv _ := rfl
622+
right_inv _ := rfl
623+
624+
noncomputable instance : Field (adicCompletion K v) := fast_instance% (equivCompletion K v).field
625+
626+
/-- `adicCompletion.toCompletion` as a ring isomorphism onto the underlying completion. -/
627+
@[simps! apply]
628+
def equiv : adicCompletion K v ≃+* (v.valuation K).Completion where
629+
toEquiv := equivCompletion K v
630+
map_mul' _ _ := rfl
631+
map_add' _ _ := rfl
632+
633+
@[simp] lemma toCompletion_ofCompletion (x : (v.valuation K).Completion) :
634+
toCompletion (ofCompletion x : adicCompletion K v) = x := rfl
635+
@[simp] lemma ofCompletion_toCompletion (x : adicCompletion K v) :
636+
ofCompletion x.toCompletion = x := rfl
637+
638+
@[simp] lemma toCompletion_zero : (0 : adicCompletion K v).toCompletion = 0 := rfl
639+
@[simp] lemma toCompletion_one : (1 : adicCompletion K v).toCompletion = 1 := rfl
640+
@[simp] lemma toCompletion_add (x y : adicCompletion K v) :
641+
(x + y).toCompletion = x.toCompletion + y.toCompletion := rfl
642+
@[simp] lemma toCompletion_mul (x y : adicCompletion K v) :
643+
(x * y).toCompletion = x.toCompletion * y.toCompletion := rfl
644+
645+
theorem toCompletion_surjective : Function.Surjective (toCompletion (K := K) (v := v)) :=
646+
(equivCompletion K v).surjective
647+
648+
theorem ofCompletion_surjective : Function.Surjective (ofCompletion (K := K) (v := v)) :=
649+
(equivCompletion K v).symm.surjective
650+
651+
noncomputable instance : UniformSpace (adicCompletion K v) := .comap toCompletion inferInstance
652+
653+
theorem isUniformInducing_toCompletion :
654+
IsUniformInducing (toCompletion (K := K) (v := v)) := ⟨rfl⟩
655+
656+
instance : IsUniformAddGroup (adicCompletion K v) :=
657+
IsUniformInducing.isUniformAddGroup (equiv K v).toRingHom (isUniformInducing_toCompletion K v)
658+
659+
/-- The `v`-adic valuation on `adicCompletion K v`, transported from the completion along `equiv`.
660+
-/
661+
noncomputable def valuation : Valuation (adicCompletion K v) ℤᵐ⁰ :=
662+
Valued.v.comap (equiv K v).toRingHom
663+
664+
theorem valueGroup_eq :
665+
valueGroup (.ofClass (valuation K v)) =
666+
valueGroup (.ofClass (Valued.v : Valuation (v.valuation K).Completion ℤᵐ⁰)) := by
667+
simp [valuation, valueGroup, valueMonoid, ← (toCompletion_surjective K v).range_comp]; rfl
668+
669+
/-- The multiplicative equivalence between the value group of the completion's valuation, pulled
670+
back along `equiv`, and that of the completion. -/
671+
def valueGroupEquiv :
672+
valueGroup (.ofClass (valuation K v)) ≃*
673+
valueGroup (.ofClass (Valued.v : Valuation (v.valuation K).Completion ℤᵐ⁰)) where
674+
__ := Equiv.setCongr (by rw [valueGroup_eq K v])
675+
map_mul' _ _ := rfl
676+
677+
@[simp] theorem coe_valueGroupEquiv (a : valueGroup (.ofClass (valuation K v))) :
678+
((valueGroupEquiv K v a : _) : ℤᵐ⁰ˣ) = a := rfl
679+
680+
/-- The order-preserving multiplicative equivalence between the `ValueGroup₀` of the completion's
681+
valuation, pulled back along `equiv`, and that of the completion. -/
682+
noncomputable def valueGroupOrderIso :
683+
ValueGroup₀ (.ofClass (valuation K v)) ≃*o
684+
ValueGroup₀ (.ofClass (Valued.v : Valuation (v.valuation K).Completion ℤᵐ⁰)) where
685+
toFun := WithZero.map' (valueGroupEquiv K v)
686+
invFun := WithZero.map' (valueGroupEquiv K v).symm
687+
left_inv x := by match x with | 0 => simp | .coe a => simp
688+
right_inv y := by match y with | 0 => simp | .coe b => simp
689+
map_mul' := by simp
690+
map_le_map_iff' {a b} := by
691+
match a, b with
692+
| 0, 0 => simp
693+
| 0, .coe _ => simp
694+
| .coe _, 0 => simp
695+
| .coe a, .coe b => simp [← Subtype.coe_le_coe]
696+
697+
@[simp] theorem coe_valueGroupOrderIso_coe (a : valueGroup (.ofClass (valuation K v))) :
698+
valueGroupOrderIso K v (a : ValueGroup₀ _) = (valueGroupEquiv K v a : ValueGroup₀ _) := by
699+
simp [valueGroupOrderIso]
700+
701+
theorem embedding_valueGroupOrderIso (g : ValueGroup₀ (.ofClass (valuation K v))) :
702+
embedding (valueGroupOrderIso K v g) = embedding g := by
703+
match g with
704+
| 0 => simp [valueGroupOrderIso]
705+
| .coe a => simp [coe_valueGroupOrderIso_coe, embedding_apply, coe_valueGroupEquiv]
706+
707+
theorem valueGroupOrderIso_restrict (x : adicCompletion K v) :
708+
valueGroupOrderIso K v ((valuation K v).restrict x) =
709+
Valued.v.restrict (toCompletion x) := by
710+
apply embedding_strictMono.injective
711+
rw [embedding_valueGroupOrderIso, embedding_restrict, embedding_restrict]; rfl
712+
713+
noncomputable instance : Valued (adicCompletion K v) ℤᵐ⁰ where
714+
v := valuation K v
715+
is_topological_valuation s := by
716+
rw [(isUniformInducing_toCompletion K v).isInducing.nhds_eq_comap 0, toCompletion_zero,
717+
Filter.mem_comap]
718+
refine ⟨fun ⟨t, ht, hts⟩ ↦ ?_, fun ⟨γ, hγ⟩ ↦ ?_⟩
719+
· obtain ⟨δ, hδ⟩ := Valued.mem_nhds_zero.1 ht
720+
refine ⟨Units.mapEquiv (valueGroupOrderIso K v).symm.toMulEquiv δ, fun x hx ↦ hts (hδ ?_)⟩
721+
rw [Set.mem_setOf_eq] at hx ⊢
722+
simpa [← map_lt_map_iff (valueGroupOrderIso K v), valueGroupOrderIso_restrict] using hx
723+
· refine ⟨{y | Valued.v.restrict y < ↑(Units.mapEquiv (valueGroupOrderIso K v).toMulEquiv γ)},
724+
?_, fun x hx ↦ hγ ?_⟩
725+
· rw [Valued.mem_nhds_zero]
726+
exact ⟨Units.mapEquiv (valueGroupOrderIso K v).toMulEquiv γ, subset_rfl⟩
727+
· rw [Set.mem_setOf_eq, ← map_lt_map_iff (valueGroupOrderIso K v),
728+
valueGroupOrderIso_restrict]
729+
simpa using hx
730+
731+
noncomputable instance : CompleteSpace (adicCompletion K v) :=
732+
((isUniformInducing_toCompletion K v).completeSpace_congr (toCompletion_surjective K v)).mpr
733+
inferInstance
734+
735+
/-- Coercion of an element of `WithVal (v.valuation K)` into the adic completion. -/
736+
instance : Coe (WithVal (v.valuation K)) (adicCompletion K v) where
737+
coe x := ofCompletion (x : (v.valuation K).Completion)
738+
739+
/-- Coercion of an element of `K` into the adic completion. -/
740+
instance (priority := 99) : Coe K (adicCompletion K v) where
741+
coe k := ofCompletion (k : (v.valuation K).Completion)
742+
743+
@[simp] lemma coe_toCompletion (k : K) :
744+
(↑k : adicCompletion K v).toCompletion = (k : (v.valuation K).Completion) := rfl
745+
746+
theorem valuedAdicCompletion_def {x : adicCompletion K v} :
747+
Valued.v x = Valued.extensionValuation x.toCompletion := rfl
748+
749+
@[simp] theorem valued_toCompletion (x : adicCompletion K v) :
750+
Valued.v x.toCompletion = Valued.v x := rfl
751+
752+
@[simp] theorem valued_ofCompletion (y : (v.valuation K).Completion) :
753+
Valued.v (ofCompletion y : adicCompletion K v) = Valued.v y := rfl
754+
755+
theorem valued_coe (k : K) :
756+
Valued.v (↑k : adicCompletion K v) = v.valuation K k := by
757+
simp
758+
759+
@[ext] theorem ext {x y : adicCompletion K v} (h : x.toCompletion = y.toCompletion) : x = y := by
760+
cases x; cases y; exact congrArg ofCompletion h
761+
762+
@[norm_cast] lemma coe_zero : ((0 : K) : adicCompletion K v) = 0 := by
763+
apply adicCompletion.ext; simp
764+
@[norm_cast] lemma coe_one : ((1 : K) : adicCompletion K v) = 1 := by
765+
apply adicCompletion.ext; simp
766+
@[norm_cast] lemma coe_add (x y : K) :
767+
((x + y : K) : adicCompletion K v) = ↑x + ↑y := by
768+
apply adicCompletion.ext; simp [UniformSpace.Completion.coe_add]
769+
@[norm_cast] lemma coe_mul (x y : K) :
770+
((x * y : K) : adicCompletion K v) = ↑x * ↑y := by
771+
apply adicCompletion.ext; simp [UniformSpace.Completion.coe_mul]
772+
773+
/-- `toCompletion` as a uniform-space isomorphism onto the underlying completion. -/
774+
def uniformEquiv : adicCompletion K v ≃ᵤ (v.valuation K).Completion where
775+
toEquiv := equivCompletion K v
776+
uniformContinuous_toFun := uniformContinuous_comap
777+
uniformContinuous_invFun :=
778+
(isUniformInducing_toCompletion K v).uniformContinuous_iff.mpr uniformContinuous_id
779+
780+
theorem continuous_toCompletion : Continuous (toCompletion (K := K) (v := v)) :=
781+
(uniformEquiv K v).continuous
605782

606-
theorem valuedAdicCompletion_def {x : v.adicCompletion K} :
607-
Valued.v x = Valued.extensionValuation x := rfl
783+
theorem continuous_ofCompletion : Continuous (ofCompletion (K := K) (v := v)) :=
784+
(uniformEquiv K v).symm.continuous
785+
786+
instance : T0Space (adicCompletion K v) :=
787+
(uniformEquiv K v).toHomeomorph.isEmbedding.t0Space
788+
789+
end adicCompletion
608790

609791
lemma valuedAdicCompletion_surjective :
610-
Function.Surjective (Valued.v : (v.adicCompletion K) → ℤᵐ⁰) :=
611-
Valued.valuedCompletion_surjective_iff.mpr <| .of_comp (v.valuation_surjective K)
792+
Function.Surjective (Valued.v : (v.adicCompletion K) → ℤᵐ⁰) := by
793+
have h : Function.Surjective (Valued.v : (v.valuation K).Completion → ℤᵐ⁰) :=
794+
Valued.valuedCompletion_surjective_iff.mpr <| .of_comp (v.valuation_surjective K)
795+
exact h.comp (adicCompletion.toCompletion_surjective K v)
612796

613797
lemma adicCompletion_valueGroup_eq : MonoidWithZeroHom.valueGroup (.ofClass (Valued.v
614798
(R := adicCompletion K v))) =
615799
MonoidWithZeroHom.valueGroup (.ofClass (valuation K v)) := by
616800
ext n
617-
simp only [MonoidWithZeroHom.mem_valueGroup_iff_of_comm, ne_eq, map_eq_zero]
618-
refine ⟨fun ⟨a, ha0, x, hx⟩ ↦ ?_, fun ⟨a, ha0, x, hx⟩ ↦ ⟨a, by simp [ha0], x, by simpa using hx⟩⟩
801+
simp only [MonoidWithZeroHom.mem_valueGroup_iff_of_comm, ne_eq, MonoidWithZeroHom.coe_ofClass]
802+
refine ⟨fun ⟨a, ha0, x, hx⟩ ↦ ?_, fun ⟨a, ha0, x, hx⟩ ↦
803+
⟨↑a, by simpa using ha0, ↑x, by simpa using hx⟩⟩
619804
obtain ⟨b, hb⟩ := valuation_surjective K v (Valued.v a)
620805
obtain ⟨y, hy⟩ := valuation_surjective K v (Valued.v x)
621-
refine ⟨b, ?_, y, by simpa [hb, hy] using hx⟩
622-
rwa [← ne_eq, ← (valuation K v).ne_zero_iff, hb, Valuation.ne_zero_iff]
806+
exact ⟨b, by rw [hb]; exact ha0, y, by rw [hb, hy]; exact hx⟩
623807

624808
/-- The ring of integers of `adicCompletion`. -/
625809
def adicCompletionIntegers : ValuationSubring (v.adicCompletion K) :=
@@ -655,9 +839,10 @@ instance adicValued.uniformContinuousConstSMul :
655839
exact (Ring.uniformContinuousConstSMul (WithVal <| v.valuation K)).uniformContinuous_const_smul _
656840

657841
open UniformSpace in
658-
instance : Algebra S (v.adicCompletion K) where
842+
/-- The `S`-algebra structure on the underlying completion. -/
843+
noncomputable instance instAlgebraCompletion : Algebra S ((v.valuation K).Completion) where
659844
toSMul := Completion.instSMul _ _
660-
algebraMap := Completion.coeRingHom.comp (algebraMap _ _)
845+
algebraMap := Completion.coeRingHom.comp (algebraMap S (WithVal (v.valuation K)))
661846
commutes' r x := by
662847
induction x using Completion.induction_on with
663848
| hp =>
@@ -671,22 +856,48 @@ instance : Algebra S (v.adicCompletion K) where
671856
simp [Algebra.smul_def, Completion.algebraMap_def, WithVal.algebraMap_right_apply,
672857
Completion.coeRingHom]
673858

859+
noncomputable instance : Algebra S (v.adicCompletion K) :=
860+
fast_instance% (adicCompletion.equivCompletion K v).algebra S
861+
862+
theorem algebraMap_adicCompletion_toCompletion (r : S) :
863+
(algebraMap S (v.adicCompletion K) r).toCompletion =
864+
algebraMap S ((v.valuation K).Completion) r := rfl
865+
866+
instance {S₀ : Type*} [CommSemiring S₀] [Algebra S₀ S] [Algebra S₀ K] [IsScalarTower S₀ S K] :
867+
IsScalarTower S₀ S ((v.valuation K).Completion) :=
868+
.of_algebraMap_eq fun x ↦ by
869+
exact congrArg (UniformSpace.Completion.coeRingHom (α := WithVal (v.valuation K)))
870+
(IsScalarTower.algebraMap_apply S₀ S (WithVal (v.valuation K)) x)
871+
872+
instance {S₀ : Type*} [CommSemiring S₀] [Algebra S₀ S] [Algebra S₀ K] [IsScalarTower S₀ S K] :
873+
IsScalarTower S₀ S (v.adicCompletion K) :=
874+
.of_algebraMap_eq fun x ↦ by
875+
apply adicCompletion.ext
876+
rw [algebraMap_adicCompletion_toCompletion, algebraMap_adicCompletion_toCompletion,
877+
IsScalarTower.algebraMap_apply S₀ S ((v.valuation K).Completion)]
878+
674879
theorem coe_smul_adicCompletion (r : S) (x : WithVal (v.valuation K)) :
675-
(↑(r • x) : v.adicCompletion K) = r • (↑x : v.adicCompletion K) :=
676-
UniformSpace.Completion.coe_smul r x
880+
(↑(r • x) : v.adicCompletion K) = r • (↑x : v.adicCompletion K) := by
881+
apply adicCompletion.ext
882+
exact UniformSpace.Completion.coe_smul r x
677883

678884
theorem algebraMap_adicCompletion : ⇑(algebraMap S <| v.adicCompletion K) = (↑) ∘ algebraMap S K :=
679885
rfl
680886

681887
variable {R} in
682-
theorem denseRange_algebraMap : DenseRange (algebraMap K (v.adicCompletion K)) :=
683-
UniformSpace.Completion.denseRange_coe.comp (WithVal.equiv _).symm.surjective.denseRange
684-
(UniformSpace.Completion.continuous_coe _)
888+
theorem denseRange_algebraMap : DenseRange (algebraMap K (v.adicCompletion K)) := by
889+
rw [algebraMap_adicCompletion]
890+
exact (adicCompletion.ofCompletion_surjective K v).denseRange.comp
891+
(UniformSpace.Completion.denseRange_coe.comp (WithVal.equiv _).symm.surjective.denseRange
892+
(UniformSpace.Completion.continuous_coe _))
893+
(adicCompletion.continuous_ofCompletion K v)
685894

686895
end Algebra
687896

688897
theorem coe_algebraMap_mem (r : R) : ↑((algebraMap R K) r) ∈ adicCompletionIntegers K v := by
689-
rw [mem_adicCompletionIntegers, Valued.valuedCompletion_apply]
898+
rw [mem_adicCompletionIntegers]
899+
change Valued.v (↑((algebraMap R K) r) : adicCompletion K v).toCompletion ≤ 1
900+
rw [Valued.valuedCompletion_apply]
690901
simpa using v.valuation_le_one _
691902

692903
instance : Algebra R (v.adicCompletionIntegers K) where
@@ -702,11 +913,11 @@ instance : Algebra R (v.adicCompletionIntegers K) where
702913
map_one' := by ext; simp
703914
map_mul' x y := by
704915
ext
705-
simp only [map_mul, UniformSpace.Completion.coe_mul, MulMemClass.mk_mul_mk]
916+
simp [map_mul, UniformSpace.Completion.coe_mul]
706917
map_zero' := by ext; simp
707918
map_add' x y := by
708919
ext
709-
simp only [map_add, UniformSpace.Completion.coe_add, AddMemClass.mk_add_mk] }
920+
simp [map_add, UniformSpace.Completion.coe_add] }
710921
commutes' r x := by
711922
rw [mul_comm]
712923
smul_def' r x := by
@@ -730,14 +941,16 @@ open scoped algebraMap in -- to make the coercions from `R` fire
730941
/-- The valuation on the completion agrees with the global valuation on elements of the
731942
integer ring. -/
732943
theorem valuedAdicCompletion_eq_valuation (r : R) :
733-
Valued.v (r : v.adicCompletion K) = v.valuation K r :=
734-
Valued.valuedCompletion_apply _
944+
Valued.v (r : v.adicCompletion K) = v.valuation K r := by
945+
rw [← adicCompletion.valued_toCompletion]
946+
exact Valued.valuedCompletion_apply _
735947

736948
variable {R K} in
737949
/-- The valuation on the completion agrees with the global valuation on elements of the field. -/
738950
theorem valuedAdicCompletion_eq_valuation' (k : K) :
739-
Valued.v (k : v.adicCompletion K) = v.valuation K k :=
740-
Valued.valuedCompletion_apply _
951+
Valued.v (k : v.adicCompletion K) = v.valuation K k := by
952+
rw [← adicCompletion.valued_toCompletion]
953+
exact Valued.valuedCompletion_apply _
741954

742955
variable {R K} in
743956
open scoped algebraMap in -- to make the coercion from `R` fire

Mathlib/RingTheory/DedekindDomain/FiniteAdeleRing.lean

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -115,12 +115,12 @@ all but finitely many places, which is `IsDedekindDomain.HeightOneSpectrum.Suppo
115115
protected def algebraMap : K →+* FiniteAdeleRing R K where
116116
toFun k := ⟨fun i ↦ k, by
117117
simp only [Filter.eventually_cofinite, SetLike.mem_coe, mem_adicCompletionIntegers R K,
118-
adicCompletion, Valued.valuedCompletion_apply, not_le]
118+
valuedAdicCompletion_eq_valuation', not_le]
119119
exact HeightOneSpectrum.Support.finite R k⟩
120-
map_one' := rfl
121-
map_mul' x y := Subtype.ext <| funext fun _ ↦ UniformSpace.Completion.coe_mul _ _
122-
map_zero' := rfl
123-
map_add' x y := Subtype.ext <| funext fun _ ↦ UniformSpace.Completion.coe_add _ _
120+
map_one' := Subtype.ext <| funext fun _ ↦ adicCompletion.coe_one ..
121+
map_mul' x y := Subtype.ext <| funext fun _ ↦ adicCompletion.coe_mul ..
122+
map_zero' := Subtype.ext <| funext fun _ ↦ adicCompletion.coe_zero ..
123+
map_add' x y := Subtype.ext <| funext fun _ ↦ adicCompletion.coe_add ..
124124

125125
instance : Algebra K (FiniteAdeleRing R K) := (FiniteAdeleRing.algebraMap R K).toAlgebra
126126

0 commit comments

Comments
 (0)