Documentation

LeanPool.EcTateLean.Algebra.EllipticCurve.Kronecker

LeanPool.EcTateLean.Algebra.EllipticCurve.Kronecker #

Imported Lean Pool material for LeanPool.EcTateLean.Algebra.EllipticCurve.Kronecker.

theorem div_succ_le_succ_div (m n : ) :
m.succ / n.succ (m / n.succ).succ
theorem Int.div2_lt_self {x : } (h : 0 < x) :
x / 2 < x
@[irreducible]

The 2-adic valuation and odd part of a natural number: valBinNat x = (v, r) where x = 2 ^ v * r with r odd (and (0, 0) for x = 0).

Equations
Instances For
    theorem Int.valBinNat_even {x : } (h : 0 < x x % 2 = 0) :
    valBinNat x = ((valBinNat (x / 2)).1 + 1, (valBinNat (x / 2)).2)
    def Int.valBin (x : ) :

    The 2-adic valuation and signed odd part of an integer: valBin x = (v, r) where x = 2 ^ v * r with |r| odd.

    Equations
    Instances For
      theorem Int.odd_part_nat_pos (x : ) :
      x 00 < (valBinNat x).2

      The Kronecker symbol (x / 2), which depends only on x mod 8.

      Equations
      Instances For
        @[irreducible]
        def Int.kroneckerOdd (k : ) (a b : ) :

        Auxiliary recursion computing the Kronecker symbol (a / b) for odd b, carrying an accumulated sign k; it strips powers of two from a via quadratic reciprocity until a is reduced.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          def Int.kronecker (a b : ) :

          The Kronecker symbol (a / b) for integers a and b.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            def Int.exRootQuad (a b c p : ) :

            Decides, via the Kronecker symbol, whether the quadratic a x ^ 2 + b x + c has a root modulo p. This naive version fails for p = 2.

            Equations
            Instances For
              def Int.quadRootInZpZ (a b c : ) (p : ) :

              Decides whether the quadratic a x ^ 2 + b x + c has a root in ℤ / p ℤ, assuming p > 1 and p ∤ a.

              Equations
              • One or more equations did not get rendered due to their size.
              • a.quadRootInZpZ b c 0 = panicWithPosWithDecl "LeanPool.EcTateLean.Algebra.EllipticCurve.Kronecker" "Int.quadRootInZpZ" 177 9 "unreachable code has been reached"
              • a.quadRootInZpZ b c 1 = panicWithPosWithDecl "LeanPool.EcTateLean.Algebra.EllipticCurve.Kronecker" "Int.quadRootInZpZ" 178 9 "unreachable code has been reached"
              Instances For