Documentation

LeanPool.FLTEichlerShimura.Definitions.Def_EllipticCurve_FunctionFieldPullback

Generic point and function-field pull-backs for elliptic curves #

Definition: EllipticCurve_FunctionFieldPullback (cc616e54-6b99-5922-988e-22ce404946c4), by Claude, 2026-09-05.

Throughout, $W$ is a Weierstrass curve over a field $R$ and $K$ an $R$-algebra which is a field; $E = W_{/K}$ denotes the base-changed affine curve, $K[E]$ its Mathlib coordinate ring $K[X][Y]/(\,W\text{-polynomial})$ and $L = K(E)$ its function field (the fraction field of $K[E]$). A first group of results concerns $K[E]$ as a $K[X]$-algebra: it is finite and integral over $K[X]$, every nonzero prime ideal of it is maximal, and for $K$ algebraically closed every nonzero prime equals $\mathrm{XYIdeal}(a, C\,b) = (X-a,\;Y-b)$ for some solution $(a,b)$ of the affine equation, these ideals being maximal. Point.xc, Point.yc read off the coordinates of an affine point (value $0$ at the point at infinity). The generic point is the $L$-point $\gamma$ whose coordinates genericX, genericY are the images in $L$ of the classes of $X$ and $Y$; that it satisfies the equation, hence is nonsingular when $W$ is elliptic, is proved here. For a nonzero point $Q \in E(L)$, pointHom Q is the $K$-algebra map $K[E] \to L$ determined by $X \mapsto x(Q)$, $Y \mapsto y(Q)$; it is injective whenever $K$ is algebraically closed and $Q$ is not the base change of a $K$-point, and pointPull Q is then its extension $L \to L$ along the fraction field. Specialising $Q$ gives transPull/transEquiv (pull-back along translation by a $K$-point $S$, i.e. the map sending $\gamma$ to $\gamma + S$), negPull/negEquiv (pull-back along inversion), and mulPull W K n, defined from the point $n\cdot\gamma$ when the predicate MulGood W K n holds — namely $n\cdot\gamma \ne 0$ and $n\cdot\gamma$ is not the base change of any $K$-point — and as the identity otherwise. The expected identities are proved: additivity and injectivity of $S \mapsto \tau_S^{*}$, $\iota^{*}\circ\iota^{*} = \mathrm{id}$, $[m]^{*}[n]^{*} = [nm]^{*}$, and $\tau_S^{*}\circ[n]^{*} = [n]^{*}$ when $nS = 0$. placeOf W K P packages $(X-x(P),\,Y-y(P))$ as a height-one prime of $K[E]$; it is injective, and surjective onto the height-one spectrum for $K$ algebraically closed and $W$ elliptic, with CoordinateRing.evalAt the evaluation homomorphism $K[E] \to K$ at a solution of the equation. Finally, Valuation.Cong v a b is the relation $v(a-b) < 1$ — congruence modulo the valuation ideal, not an identity — shown stable under sums, products and powers of elements of valuation $\le 1$, under inversion and division by elements of valuation $1$, and under two-variable polynomial evaluation; from it and a valuation-transfer lemma for a ring map between fraction fields of Dedekind domains, the module deduces that $v_P(\mathrm{pointPull}\,Q\,(h)) \le e^{-k}$ whenever $v_{P'}(h) \le e^{-k}$, for points whose coordinates are congruent at $P$, and the corresponding statement for mulPull in terms of polynomials $\Phi, \Psi, \omega, \psi$ expressing the coordinates of $n\cdot\gamma$ and of $n\cdot P$ as rational functions of the coordinates.

Relation to Mathlib. Mathlib supplies the affine Weierstrass curve, its coordinate ring with XClass, YClass, XYIdeal, the function field, the group of affine points and base change of points; the generic point, the homomorphisms pointHom/pointPull and their translation, inversion and multiplication-by-$n$ specialisations, the map from points to the height-one spectrum, and the valuation congruence relation Valuation.Cong are the project's own.

Where it is used. The material sets up the action of translations, inversion and multiplication by $n$ on the function field of an elliptic curve, together with the dictionary between affine points over an algebraically closed field and height-one places of the coordinate ring, and a valuation comparison between a point $P$ and its multiple $n\cdot P$.

<!-- Generated by add_prove2me_provenance.py -->

theorem WeierstrassCurve.Affine.CoordinateRing.exists_eq_XYIdeal {K : Type u_1} [Field K] {W : Affine K} [IsAlgClosed K] {P : Ideal W.CoordinateRing} (hP : P ≠ ⊥) [P.IsPrime] :
∃ (a : K) (b : K), W.Equation a b ∧ P = XYIdeal W a (Polynomial.C b)
def WeierstrassCurve.Affine.Point.xc {S : Type u_1} [CommRing S] {V : Affine S} :
V.Point → S

The x-coordinate of an affine point, with value zero at infinity.

Equations
Instances For
    def WeierstrassCurve.Affine.Point.yc {S : Type u_1} [CommRing S] {V : Affine S} :
    V.Point → S

    The y-coordinate of an affine point, with value zero at infinity.

    Equations
    Instances For
      @[simp]
      theorem WeierstrassCurve.Affine.Point.xc_some {S : Type u_1} [CommRing S] {V : Affine S} {x y : S} (h : V.Nonsingular x y) :
      (some x y h).xc = x
      @[simp]
      theorem WeierstrassCurve.Affine.Point.yc_some {S : Type u_1} [CommRing S] {V : Affine S} {x y : S} (h : V.Nonsingular x y) :
      (some x y h).yc = y
      theorem WeierstrassCurve.Affine.Point.nonsingular_xc_yc {S : Type u_1} [CommRing S] {V : Affine S} {P : V.Point} (hP : P ≠ 0) :
      theorem WeierstrassCurve.Affine.Point.eq_some_xc_yc {S : Type u_1} [CommRing S] {V : Affine S} {P : V.Point} (hP : P ≠ 0) :
      P = some P.xc P.yc ⋯
      noncomputable def WeierstrassCurve.Affine.genericX {R : Type u_1} [Field R] (W : WeierstrassCurve R) (K : Type u_2) [Field K] [Algebra R K] :

      The x-coordinate generator in the function field of the base-changed curve.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        noncomputable def WeierstrassCurve.Affine.genericY {R : Type u_1} [Field R] (W : WeierstrassCurve R) (K : Type u_2) [Field K] [Algebra R K] :

        The y-coordinate generator in the function field of the base-changed curve.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          noncomputable def WeierstrassCurve.Affine.genericPoint {R : Type u_1} [Field R] (W : WeierstrassCurve R) (K : Type u_2) [Field K] [Algebra R K] [W.IsElliptic] :

          The point over the function field with the generic x- and y-coordinates.

          Equations
          Instances For
            noncomputable def WeierstrassCurve.Affine.pointHom {R : Type u_1} [Field R] {W : WeierstrassCurve R} {K : Type u_2} [Field K] [Algebra R K] (Q : (baseChange W (baseChange W K).FunctionField).Point) (hQ : Q ≠ 0) :

            The homomorphism evaluating the coordinate ring at a nonzero function-field-valued point.

            Equations
            Instances For
              theorem WeierstrassCurve.Affine.CoordinateRing.algHom_ext' {R : Type u_1} [Field R] {W : WeierstrassCurve R} {K : Type u_2} [Field K] [Algebra R K] {A : Type u_3} [Semiring A] [Algebra K A] {f g : (baseChange W K).CoordinateRing →ₐ[K] A} (hX : f ((mk (baseChange W K)) (Polynomial.C Polynomial.X)) = g ((mk (baseChange W K)) (Polynomial.C Polynomial.X))) (hY : f ((mk (baseChange W K)) Polynomial.X) = g ((mk (baseChange W K)) Polynomial.X)) :
              f = g
              theorem WeierstrassCurve.Affine.Point.xc_map {R : Type u_1} [Field R] {W : WeierstrassCurve R} {K : Type u_2} [Field K] [Algebra R K] {F' : Type u_3} {L' : Type u_4} [Field F'] [Field L'] [Algebra R F'] [Algebra K F'] [IsScalarTower R K F'] [Algebra R L'] [Algebra K L'] [IsScalarTower R K L'] [DecidableEq F'] [DecidableEq L'] (f : F' →ₐ[K] L') (P : (Affine.baseChange W F').Point) :
              ((map f) P).xc = f P.xc
              theorem WeierstrassCurve.Affine.Point.yc_map {R : Type u_1} [Field R] {W : WeierstrassCurve R} {K : Type u_2} [Field K] [Algebra R K] {F' : Type u_3} {L' : Type u_4} [Field F'] [Field L'] [Algebra R F'] [Algebra K F'] [IsScalarTower R K F'] [Algebra R L'] [Algebra K L'] [IsScalarTower R K L'] [DecidableEq F'] [DecidableEq L'] (f : F' →ₐ[K] L') (P : (Affine.baseChange W F').Point) :
              ((map f) P).yc = f P.yc
              noncomputable def WeierstrassCurve.Affine.pointPull {R : Type u_1} [Field R] {W : WeierstrassCurve R} {K : Type u_2} [Field K] [Algebra R K] (Q : (baseChange W (baseChange W K).FunctionField).Point) (hQ : Q ≠ 0) (hinj : Function.Injective ⇑(pointHom Q hQ)) :

              The function-field homomorphism extending an injective evaluation homomorphism on the coordinate ring.

              Equations
              Instances For
                @[simp]
                theorem WeierstrassCurve.Affine.pointPull_algebraMap {R : Type u_1} [Field R] {W : WeierstrassCurve R} {K : Type u_2} [Field K] [Algebra R K] (Q : (baseChange W (baseChange W K).FunctionField).Point) (hQ : Q ≠ 0) (hinj : Function.Injective ⇑(pointHom Q hQ)) (h : (baseChange W K).CoordinateRing) :
                theorem WeierstrassCurve.Affine.map_pointPull_genericPoint {R : Type u_1} [Field R] {W : WeierstrassCurve R} {K : Type u_2} [Field K] [Algebra R K] [W.IsElliptic] (Q : (baseChange W (baseChange W K).FunctionField).Point) (hQ : Q ≠ 0) (hinj : Function.Injective ⇑(pointHom Q hQ)) :
                (Point.map (pointPull Q hQ hinj)) (genericPoint W K) = Q
                theorem WeierstrassCurve.Affine.pointPull_comp_pointHom {R : Type u_1} [Field R] {W : WeierstrassCurve R} {K : Type u_2} [Field K] [Algebra R K] (Q : (baseChange W (baseChange W K).FunctionField).Point) (hQ : Q ≠ 0) (hinj : Function.Injective ⇑(pointHom Q hQ)) (P : (baseChange W (baseChange W K).FunctionField).Point) (hP : P ≠ 0) (hP' : (Point.map (pointPull Q hQ hinj)) P ≠ 0) :
                (pointPull Q hQ hinj).comp (pointHom P hP) = pointHom ((Point.map (pointPull Q hQ hinj)) P) hP'
                theorem WeierstrassCurve.Affine.pointHom_congr {R : Type u_1} [Field R] {W : WeierstrassCurve R} {K : Type u_2} [Field K] [Algebra R K] {Q Q' : (baseChange W (baseChange W K).FunctionField).Point} (h : Q = Q') (hQ : Q ≠ 0) (hQ' : Q' ≠ 0) :
                pointHom Q hQ = pointHom Q' hQ'

                The pullback on the function field induced by translation by a rational point.

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  theorem WeierstrassCurve.Affine.transPull_comp_pointHom {R : Type u_1} [Field R] (W : WeierstrassCurve R) (K : Type u_2) [Field K] [Algebra R K] [DecidableEq K] [IsAlgClosed K] [W.IsElliptic] (S : (baseChange W K).Point) (P : (baseChange W (baseChange W K).FunctionField).Point) (hP : P ≠ 0) (hP' : (Point.map (transPull W K S)) P ≠ 0) :
                  (transPull W K S).comp (pointHom P hP) = pointHom ((Point.map (transPull W K S)) P) hP'
                  theorem WeierstrassCurve.Affine.transPull_comp {R : Type u_1} [Field R] (W : WeierstrassCurve R) (K : Type u_2) [Field K] [Algebra R K] [DecidableEq K] [IsAlgClosed K] [W.IsElliptic] (S T : (baseChange W K).Point) :
                  (transPull W K S).comp (transPull W K T) = transPull W K (S + T)
                  noncomputable def WeierstrassCurve.Affine.transEquiv {R : Type u_1} [Field R] (W : WeierstrassCurve R) (K : Type u_2) [Field K] [Algebra R K] [DecidableEq K] [IsAlgClosed K] [W.IsElliptic] (S : (baseChange W K).Point) :

                  The function-field algebra automorphism induced by translation by a rational point.

                  Equations
                  Instances For
                    theorem WeierstrassCurve.Affine.transEquiv_apply {R : Type u_1} [Field R] (W : WeierstrassCurve R) (K : Type u_2) [Field K] [Algebra R K] [DecidableEq K] [IsAlgClosed K] [W.IsElliptic] (S : (baseChange W K).Point) (h : (baseChange W K).FunctionField) :
                    (transEquiv W K S) h = (transPull W K S) h
                    theorem WeierstrassCurve.Affine.coe_transEquiv {R : Type u_1} [Field R] (W : WeierstrassCurve R) (K : Type u_2) [Field K] [Algebra R K] [DecidableEq K] [IsAlgClosed K] [W.IsElliptic] (S : (baseChange W K).Point) :
                    ↑(transEquiv W K S) = transPull W K S
                    theorem WeierstrassCurve.Affine.transEquiv_add {R : Type u_1} [Field R] (W : WeierstrassCurve R) (K : Type u_2) [Field K] [Algebra R K] [DecidableEq K] [IsAlgClosed K] [W.IsElliptic] (S T : (baseChange W K).Point) :
                    transEquiv W K (S + T) = (transEquiv W K T).trans (transEquiv W K S)

                    The pullback on the function field induced by negation on the curve.

                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      theorem WeierstrassCurve.Affine.negPull_comp_pointHom {R : Type u_1} [Field R] (W : WeierstrassCurve R) (K : Type u_2) [Field K] [Algebra R K] [IsAlgClosed K] [W.IsElliptic] (P : (baseChange W (baseChange W K).FunctionField).Point) (hP : P ≠ 0) (hP' : (Point.map (negPull W K)) P ≠ 0) :
                      (negPull W K).comp (pointHom P hP) = pointHom ((Point.map (negPull W K)) P) hP'
                      noncomputable def WeierstrassCurve.Affine.negEquiv {R : Type u_1} [Field R] (W : WeierstrassCurve R) (K : Type u_2) [Field K] [Algebra R K] [IsAlgClosed K] [W.IsElliptic] :

                      The function-field algebra automorphism induced by negation on the curve.

                      Equations
                      Instances For
                        theorem WeierstrassCurve.Affine.coe_negEquiv {R : Type u_1} [Field R] (W : WeierstrassCurve R) (K : Type u_2) [Field K] [Algebra R K] [IsAlgClosed K] [W.IsElliptic] :
                        ↑(negEquiv W K) = negPull W K
                        theorem WeierstrassCurve.Affine.negEquiv_apply {R : Type u_1} [Field R] (W : WeierstrassCurve R) (K : Type u_2) [Field K] [Algebra R K] [IsAlgClosed K] [W.IsElliptic] (h : (baseChange W K).FunctionField) :
                        (negEquiv W K) h = (negPull W K) h
                        def WeierstrassCurve.Affine.MulGood {R : Type u_1} [Field R] (W : WeierstrassCurve R) (K : Type u_2) [Field K] [Algebra R K] [DecidableEq K] [W.IsElliptic] (n : ℤ) :

                        The multiple of the generic point is nonzero and is not the base change of any rational point.

                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For

                          The pullback by multiplication by n when MulGood holds, and the identity otherwise.

                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For
                            theorem WeierstrassCurve.Affine.mulPull_eq {R : Type u_1} [Field R] (W : WeierstrassCurve R) (K : Type u_2) [Field K] [Algebra R K] [DecidableEq K] [IsAlgClosed K] [W.IsElliptic] {n : ℤ} (h : MulGood W K n) :
                            mulPull W K n = pointPull (n • genericPoint W K) ⋯ ⋯
                            theorem WeierstrassCurve.Affine.mulPull_genericX' {R : Type u_1} [Field R] (W : WeierstrassCurve R) (K : Type u_2) [Field K] [Algebra R K] [DecidableEq K] [IsAlgClosed K] [W.IsElliptic] {n : ℤ} (h : MulGood W K n) :
                            (mulPull W K n) (genericX W K) = (n • genericPoint W K).xc
                            theorem WeierstrassCurve.Affine.mulPull_genericY' {R : Type u_1} [Field R] (W : WeierstrassCurve R) (K : Type u_2) [Field K] [Algebra R K] [DecidableEq K] [IsAlgClosed K] [W.IsElliptic] {n : ℤ} (h : MulGood W K n) :
                            (mulPull W K n) (genericY W K) = (n • genericPoint W K).yc
                            theorem WeierstrassCurve.Affine.mulPull_comp_pointHom {R : Type u_1} [Field R] (W : WeierstrassCurve R) (K : Type u_2) [Field K] [Algebra R K] [DecidableEq K] [IsAlgClosed K] [W.IsElliptic] {n : ℤ} (h : MulGood W K n) (P : (baseChange W (baseChange W K).FunctionField).Point) (hP : P ≠ 0) (hP' : (Point.map (mulPull W K n)) P ≠ 0) :
                            (mulPull W K n).comp (pointHom P hP) = pointHom ((Point.map (mulPull W K n)) P) hP'
                            theorem WeierstrassCurve.Affine.transEquiv_mulPull' {R : Type u_1} [Field R] (W : WeierstrassCurve R) (K : Type u_2) [Field K] [Algebra R K] [DecidableEq K] [IsAlgClosed K] [W.IsElliptic] {n : ℤ} (h : MulGood W K n) {S : (baseChange W K).Point} (hS : n • S = 0) (g : (baseChange W K).FunctionField) :
                            (transEquiv W K S) ((mulPull W K n) g) = (mulPull W K n) g
                            theorem WeierstrassCurve.Affine.mulPull_comp' {R : Type u_1} [Field R] (W : WeierstrassCurve R) (K : Type u_2) [Field K] [Algebra R K] [DecidableEq K] [IsAlgClosed K] [W.IsElliptic] {m n : ℤ} (hm : MulGood W K m) (hn : MulGood W K n) (hnm : MulGood W K (n * m)) :
                            (mulPull W K m).comp (mulPull W K n) = mulPull W K (n * m)
                            theorem WeierstrassCurve.Affine.exists_point_xc_eq {R : Type u_1} [Field R] (W : WeierstrassCurve R) (K : Type u_2) [Field K] [Algebra R K] [IsAlgClosed K] [W.IsElliptic] (x : K) :
                            ∃ (P : (baseChange W K).Point), P ≠ 0 ∧ P.xc = x
                            theorem WeierstrassCurve.Affine.negEquiv_mulPull_genericX' {R : Type u_1} [Field R] (W : WeierstrassCurve R) (K : Type u_2) [Field K] [Algebra R K] [DecidableEq K] [IsAlgClosed K] [W.IsElliptic] {n : ℤ} (h : MulGood W K n) :
                            (negEquiv W K) ((mulPull W K n) (genericX W K)) = (n • genericPoint W K).xc
                            noncomputable def WeierstrassCurve.Affine.placeOf {R : Type u_1} [Field R] (W : WeierstrassCurve R) (K : Type u_2) [Field K] [Algebra R K] (P : (baseChange W K).Point) (hP : P ≠ 0) :

                            The height-one prime of the coordinate ring associated to a nonzero rational point.

                            Equations
                            • One or more equations did not get rendered due to their size.
                            Instances For
                              @[simp]
                              theorem WeierstrassCurve.Affine.placeOf_asIdeal {R : Type u_1} [Field R] (W : WeierstrassCurve R) (K : Type u_2) [Field K] [Algebra R K] (P : (baseChange W K).Point) (hP : P ≠ 0) :
                              noncomputable def WeierstrassCurve.Affine.CoordinateRing.evalAt {R : Type u_1} [Field R] (W : WeierstrassCurve R) (K : Type u_2) [Field K] [Algebra R K] {a b : K} (h : (baseChange W K).Equation a b) :

                              Evaluation of the coordinate ring at the given affine point.

                              Equations
                              Instances For
                                theorem WeierstrassCurve.Affine.CoordinateRing.evalAt_mk {R : Type u_1} [Field R] (W : WeierstrassCurve R) (K : Type u_2) [Field K] [Algebra R K] {a b : K} (h : (baseChange W K).Equation a b) (g : Polynomial (Polynomial K)) :
                                (evalAt W K h) ((mk (baseChange W K)) g) = Polynomial.evalEval a b g
                                theorem WeierstrassCurve.Affine.CoordinateRing.evalAt_XYIdeal {R : Type u_1} [Field R] (W : WeierstrassCurve R) (K : Type u_2) [Field K] [Algebra R K] {a b : K} (h : (baseChange W K).Equation a b) (g : (baseChange W K).CoordinateRing) :
                                g ∈ XYIdeal (baseChange W K) a (Polynomial.C b) → (evalAt W K h) g = 0
                                theorem WeierstrassCurve.Affine.placeOf_injective {R : Type u_1} [Field R] (W : WeierstrassCurve R) (K : Type u_2) [Field K] [Algebra R K] {P Q : (baseChange W K).Point} (hP : P ≠ 0) (hQ : Q ≠ 0) (h : placeOf W K P hP = placeOf W K Q hQ) :
                                P = Q
                                def Valuation.Cong {L : Type u_1} [CommRing L] {Γ₀ : Type u_2} [LinearOrderedCommGroupWithZero Γ₀] (v : Valuation L Γ₀) (a b : L) :

                                Congruence modulo the maximal ideal, expressed by v (a - b) < 1.

                                Equations
                                Instances For
                                  theorem Valuation.cong_iff {L : Type u_1} [CommRing L] {Γ₀ : Type u_2} [LinearOrderedCommGroupWithZero Γ₀] {v : Valuation L Γ₀} {a b : L} :
                                  v.Cong a b ↔ v (a - b) < 1
                                  theorem Valuation.Cong.refl {L : Type u_1} [CommRing L] {Γ₀ : Type u_2} [LinearOrderedCommGroupWithZero Γ₀] {v : Valuation L Γ₀} (a : L) :
                                  v.Cong a a
                                  theorem Valuation.Cong.rfl {L : Type u_1} [CommRing L] {Γ₀ : Type u_2} [LinearOrderedCommGroupWithZero Γ₀] {v : Valuation L Γ₀} {a : L} :
                                  v.Cong a a
                                  theorem Valuation.Cong.symm {L : Type u_1} [CommRing L] {Γ₀ : Type u_2} [LinearOrderedCommGroupWithZero Γ₀] {v : Valuation L Γ₀} {a b : L} (h : v.Cong a b) :
                                  v.Cong b a
                                  theorem Valuation.Cong.trans {L : Type u_1} [CommRing L] {Γ₀ : Type u_2} [LinearOrderedCommGroupWithZero Γ₀] {v : Valuation L Γ₀} {a b c : L} (h₁ : v.Cong a b) (h₂ : v.Cong b c) :
                                  v.Cong a c
                                  theorem Valuation.Cong.add {L : Type u_1} [CommRing L] {Γ₀ : Type u_2} [LinearOrderedCommGroupWithZero Γ₀] {v : Valuation L Γ₀} {a b a' b' : L} (h₁ : v.Cong a a') (h₂ : v.Cong b b') :
                                  v.Cong (a + b) (a' + b')
                                  theorem Valuation.Cong.neg {L : Type u_1} [CommRing L] {Γ₀ : Type u_2} [LinearOrderedCommGroupWithZero Γ₀] {v : Valuation L Γ₀} {a a' : L} (h : v.Cong a a') :
                                  v.Cong (-a) (-a')
                                  theorem Valuation.Cong.sub {L : Type u_1} [CommRing L] {Γ₀ : Type u_2} [LinearOrderedCommGroupWithZero Γ₀] {v : Valuation L Γ₀} {a b a' b' : L} (h₁ : v.Cong a a') (h₂ : v.Cong b b') :
                                  v.Cong (a - b) (a' - b')
                                  theorem Valuation.Cong.le_one {L : Type u_1} [CommRing L] {Γ₀ : Type u_2} [LinearOrderedCommGroupWithZero Γ₀] {v : Valuation L Γ₀} {a a' : L} (h : v.Cong a a') (ha' : v a' ≤ 1) :
                                  v a ≤ 1
                                  theorem Valuation.Cong.mul {L : Type u_1} [CommRing L] {Γ₀ : Type u_2} [LinearOrderedCommGroupWithZero Γ₀] {v : Valuation L Γ₀} {a b a' b' : L} (h₁ : v.Cong a a') (h₂ : v.Cong b b') (ha' : v a' ≤ 1) (hb' : v b' ≤ 1) :
                                  v.Cong (a * b) (a' * b')
                                  theorem Valuation.Cong.pow {L : Type u_1} [CommRing L] {Γ₀ : Type u_2} [LinearOrderedCommGroupWithZero Γ₀] {v : Valuation L Γ₀} {a a' : L} (h : v.Cong a a') (ha' : v a' ≤ 1) (n : ℕ) :
                                  v.Cong (a ^ n) (a' ^ n)
                                  theorem Valuation.Cong.eq_of_eq_one {L : Type u_1} [CommRing L] {Γ₀ : Type u_2} [LinearOrderedCommGroupWithZero Γ₀] {v : Valuation L Γ₀} {a a' : L} (h : v.Cong a a') (ha' : v a' = 1) :
                                  v a = 1
                                  theorem Valuation.Cong.lt_one_iff {L : Type u_1} [CommRing L] {Γ₀ : Type u_2} [LinearOrderedCommGroupWithZero Γ₀] {v : Valuation L Γ₀} {a a' : L} (h : v.Cong a a') :
                                  v a < 1 ↔ v a' < 1
                                  theorem Valuation.cong_zero_iff {L : Type u_1} [CommRing L] {Γ₀ : Type u_2} [LinearOrderedCommGroupWithZero Γ₀] {v : Valuation L Γ₀} {a : L} :
                                  v.Cong a 0 ↔ v a < 1
                                  theorem Valuation.Cong.inv {F : Type u_3} [Field F] {Γ : Type u_4} [LinearOrderedCommGroupWithZero Γ] {w : Valuation F Γ} {d d' : F} (h : w.Cong d d') (hd' : w d' = 1) :
                                  theorem Valuation.Cong.div {F : Type u_3} [Field F] {Γ : Type u_4} [LinearOrderedCommGroupWithZero Γ] {w : Valuation F Γ} {a d a' d' : F} (h₁ : w.Cong a a') (h₂ : w.Cong d d') (ha' : w a' ≤ 1) (hd' : w d' = 1) :
                                  w.Cong (a / d) (a' / d')
                                  theorem Valuation.Cong.eval₂ {L : Type u_1} [CommRing L] {Γ₀ : Type u_2} [LinearOrderedCommGroupWithZero Γ₀] {v : Valuation L Γ₀} {K : Type u_3} [CommRing K] (f : K →+* L) (hf : ∀ (c : K), v (f c) ≤ 1) {a a' : L} (h : v.Cong a a') (ha' : v a' ≤ 1) (p : Polynomial K) :
                                  theorem Valuation.Cong.eval₂_eval₂ {L : Type u_1} [CommRing L] {Γ₀ : Type u_2} [LinearOrderedCommGroupWithZero Γ₀] {v : Valuation L Γ₀} {K : Type u_3} [CommRing K] (f : K →+* L) (hf : ∀ (c : K), v (f c) ≤ 1) {a a' b b' : L} (ha : v.Cong a a') (ha' : v a' ≤ 1) (hb : v.Cong b b') (hb' : v b' ≤ 1) (p : Polynomial (Polynomial K)) :
                                  theorem IsDedekindDomain.HeightOneSpectrum.valuation_map_le_exp_neg_of_mem_pow {R : Type u_1} [CommRing R] {K : Type u_2} [Field K] [Algebra R K] {R' : Type u_3} [CommRing R'] [IsDedekindDomain R'] {K' : Type u_4} [Field K'] [Algebra R' K'] [IsFractionRing R' K'] (ψ : K →+* K') (w : HeightOneSpectrum R) (v : HeightOneSpectrum R') (h0 : ∀ (b : R), (valuation K' v) (ψ ((algebraMap R K) b)) ≤ 1) (h1 : ∀ b ∈ w.asIdeal, (valuation K' v) (ψ ((algebraMap R K) b)) ≤ WithZero.exp (-1)) (m : ℕ) (a : R) :
                                  a ∈ w.asIdeal ^ m → (valuation K' v) (ψ ((algebraMap R K) a)) ≤ WithZero.exp (-↑m)
                                  theorem IsDedekindDomain.HeightOneSpectrum.valuation_map_le_of_valuation_le {R : Type u_1} [CommRing R] [IsDedekindDomain R] {K : Type u_2} [Field K] [Algebra R K] [IsFractionRing R K] {R' : Type u_3} [CommRing R'] [IsDedekindDomain R'] {K' : Type u_4} [Field K'] [Algebra R' K'] [IsFractionRing R' K'] (ψ : K →+* K') (w : HeightOneSpectrum R) (v : HeightOneSpectrum R') (h1 : ∀ b ∈ w.asIdeal, (valuation K' v) (ψ ((algebraMap R K) b)) ≤ WithZero.exp (-1)) (h2 : ∀ b ∉ w.asIdeal, (valuation K' v) (ψ ((algebraMap R K) b)) = 1) (x : K) (k : ℕ) (hx : (valuation K w) x ≤ WithZero.exp (-↑k)) :
                                  (valuation K' v) (ψ x) ≤ WithZero.exp (-↑k)
                                  theorem WeierstrassCurve.Affine.mem_placeOf_iff {R : Type u_1} [Field R] (W : WeierstrassCurve R) (K : Type u_2) [Field K] [Algebra R K] (P : (baseChange W K).Point) (hP : P ≠ 0) (b : (baseChange W K).CoordinateRing) :
                                  b ∈ (placeOf W K P hP).asIdeal ↔ (CoordinateRing.evalAt W K ⋯) b = 0