import Mathlib import Definitions.Def_AlgebraicCurve_DivisorClassGroup set_option autoImplicit false noncomputable section open IsDedekindDomain WithZero namespace AlgebraicCurve namespace RationalFunctionField variable (K : Type*) [Field K] [DecidableEq (RatFunc K)] theorem nontrivial_valueGroup_inftyValuation : Nontrivial (MonoidWithZeroHom.valueGroup (.ofClass (RatFunc.inftyValuation K))) := by rw [Subgroup.nontrivial_iff_exists_ne_one] refine ⟨Units.mk0 (RatFunc.inftyValuation K RatFunc.X) (by rw [RatFunc.inftyValuation.X]; exact exp_ne_zero), ?_, ?_⟩ · exact MonoidWithZeroHom.mem_valueGroup _ ⟨RatFunc.X, rfl⟩ · rw [ne_eq, Units.ext_iff, Units.val_mk0, Units.val_one, RatFunc.inftyValuation.X] simp def placeInfty : Place K (RatFunc K) := haveI := nontrivial_valueGroup_inftyValuation K { toValuationSubring := (RatFunc.inftyValuation K).valuationSubring algebraMap_mem' := fun a => by rw [Valuation.mem_valuationSubring_iff] exact Valuation.IsTrivialOn.valuation_algebraMap_le_one (v := RatFunc.inftyValuation K) a ne_top' := by simp only [ne_eq, Valuation.valuationSubring_eq_top_iff, not_not] infer_instance isPrincipalIdealRing' := (Valuation.valuationSubring_isDiscreteValuationRing (RatFunc.inftyValuation K)).toIsPrincipalIdealRing } @[simp] theorem placeInfty_toValuationSubring : (placeInfty K).toValuationSubring = (RatFunc.inftyValuation K).valuationSubring := rfl end RationalFunctionField end AlgebraicCurve