B-smoothness is decidable: it reduces to deciding membership of n in the
finite-indexed set Nat.smoothNumbers (B + 1).
The count Ψ(x, y): the number of ⌊y⌋-smooth positive integers up to ⌊x⌋.
Instances For
Canfield–Erdős–Pomerance theorem: in the range u < (1 - ε) log x / log log x,
log(Ψ(x, x^{1/u}) / x) + u log u = o(u log u), i.e. the density of smooth
numbers is governed by Dickman's function.
Membership in the factor base: q ∈ factorBase B iff q ≤ B and q is prime.
The discrete logarithm of β ∈ G to base g (where g generates the cyclic
group of order n), valued in ZMod n. Built by transporting through the
isomorphism G ≃ Multiplicative (ZMod n) induced by the generator.
Instances For
Index-calculus relation: if g^e · b⁻¹ = ∏ f(q)^{exps q} over a factor base,
then in ZMod n (n = |G|) the discrete logs satisfy
∑ exps q · dlog(f q) + dlog b = e. This is the linear equation collected
during the index-calculus discrete log algorithm.
A single relation collected during index calculus with smoothness bound B:
records the exponent on the generator and the exponent vector over the factor
base (supported within factorBase B).
- exponent : ℤ
- support_subset (q : ℕ) : self.factorExponents q ≠ 0 → q ∈ factorBase B
Instances For
The factor base associated with an index-calculus configuration.
Instances For
Size of the factor base in the configuration.
Instances For
Number of relations needed to solve the linear system in index calculus: factor-base size plus one.
Instances For
Validity of a recorded relation in a group G with generator g and
factor-base lift f: the equation g^{exponent} · b⁻¹ = ∏ f(q)^{factorExponents q}
holds.
Instances For
The largest prime factor of n, taken to be 0 if n has no prime factors.
Instances For
Pollard p−1 factoring step: computes gcd(a^m - 1, N) for the smooth
exponent m = smoothExponent N B. Returns a nontrivial factor of N if one
is found by either gcd(a, N) or gcd(a^m - 1, N).
Instances For
The initial accumulator is bounded by any List.foldl max outcome.
For nonzero n, n is automatically largestPrimeFactor n-smooth.
If the initial accumulator and all list elements are ≤ B, then so is
List.foldl max init l.
The smooth exponent smoothExponent N B is positive.
A prime q > B does not divide smoothExponent N B, since the smooth
exponent only uses primes ℓ ≤ B.
Key divisibility lemma for Pollard p−1: any B-smooth n < N divides
smoothExponent N B.
If p ∣ N, q ∣ N, p prime, p ∣ n, but q ∤ n, and N > 1, then
gcd(n, N) is a proper nontrivial divisor of N. This is the abstract
correctness of "gcd reveals a factor" used at the end of Pollard p−1 / ECM.
Monotonicity of smoothExponent in the smoothness bound: if B₁ ≤ B₂
then smoothExponent N B₁ ∣ smoothExponent N B₂.
For any list l, l.foldl max init is either an element of l or equals
the initial value init.
If largestPrimeFactor n is actually prime, then it appears in n's
prime-factors list.
If largestPrimeFactor n is prime and n ≠ 0, then it actually divides n.
Cardinality bound used in Pollard p−1 second-stage analysis: for prime q
with ℓ = largestPrimeFactor (q − 1) prime and ℓ ∤ m, we have
|ker(x ↦ x^m : (ZMod q)ˣ)| · ℓ ≤ q − 1.
If largestPrimeFactor n > 0, it is actually a prime.
The standard Weierstrass discriminant Δ of shortWeierstrass a b equals
-16 (4 a³ + 27 b²) = -16 · ecmDiscriminant a b.
The elliptic curve over ℤ associated to ECM parameters.
Instances For
ECM discriminant of the chosen curve.
Instances For
By construction of b, the prescribed base point (x₀, y₀) satisfies the
Weierstrass equation.
The ECM curve reduced modulo a prime p, viewed as an affine
Weierstrass curve over ZMod p.
Instances For
Per-prime exponent used in ECM: ⌊log_ℓ ((√M + 1)²)⌋ + 1, large enough
to cover any prime-power up to (√M + 1)² as a factor of the multiplier.
Instances For
Upper bound: (√M + 1)² < ℓ^{ecmSmoothExponent ℓ M}, used to show the
exponent is large enough.
Positivity of the ECM smooth scalar.
The ECM smooth scalar is itself a B-smooth number.
Key divisibility for ECM: any nonzero B-smooth n ≤ (√M + 1)² divides
the ECM smooth scalar ecmSmoothScalar B M.
ECM algebraic step: in the situation P₁ on the reduction mod p₁,
where the order of P₁ is B-smooth and bounded, while the order of P₂ is
not B-smooth, multiplying by the ECM smooth scalar kills P₁ but not
P₂. This separation is what allows ECM to find a factor.
Quadratic-character lemma over a finite field: if a, b, c are all nonzero
and a · b is not a square, then at least one of a · c or b · c is a
square.
Montgomery torsion existence (Theorem 10.14 of Sutherland's notes): over a
finite field k of characteristic ≠ 2, a Montgomery curve B y² = x³ + A x² + x
(with B ≠ 0, A² ≠ 4) always has either two distinct rational points of
order 2 coming from a factorization (x - r)(x - s) of x² + A x + 1, or a
rational point of order 4 (a y with B y² = A ± 2).
A point (x, y) of order 4 on the Montgomery curve: a curve point with
y ≠ 0 and x = ±1.
Instances For
The Montgomery curve has an order-4 rational subgroup if it has either two distinct order-2 points or an order-4 point.
Instances For
"Squareness" step in Theorem 10.15 of Sutherland: if (u, v) is a point on
the short Weierstrass curve and 2 · (u, v) = (x₀, 0), then (u - x₀)² = 3 x₀² + a and 3 x₀² + a ≠ 0. This is the key squareness that allows
converting to Montgomery form.
The forward direction of the Theorem 10.15 isomorphism: the substitution
(x, y) ↦ (B (x - x₀), B y) sends short Weierstrass points
y² = x³ + a x + b to Montgomery-form points B Y² = X³ + A X² + X for
A = 3 x₀ B and B² (3 x₀² + a) = 1.
The inverse direction of the Theorem 10.15 isomorphism: the substitution
(X, Y) ↦ (X / B + x₀, Y / B) sends Montgomery-form points back to short
Weierstrass points.
The two substitutions of Theorem 10.15 are inverse to each other on coordinates, in both directions.
Theorem 10.15 of Sutherland (Montgomery model from order-4 point): if
E : y² = x³ + a x + b has a point P = (u, v) whose double is the
2-torsion point (x₀, 0), then 3 x₀² + a is a square in k, and E can be
put in Montgomery form E'' : B y² = x³ + A x² + x with B = 1/√(3 x₀² + a)
and A = 3 x₀ B; the map (x, y) ↦ (B (x - x₀), B y) gives a bijective
isomorphism E ≃ E''.