Algebraic Support for KZG-Style SRSes #
This file contains the shared powers-of-τ SRS API and reusable prime-order group lemmas used by KZG, t-SDH, and ARSDH reductions.
Notation #
Groups.PowerSrs.toweris a vector of powers of one group element.Groups.PowerSrs.generatebuilds the prover and verifier SRS vectors.
References #
This file contains general algebraic support lemmas and does not cite an external paper directly.
theorem
Groups.PowerSrs.generator_ne_one_of_generate
{p : outParam ℕ}
[Fact (Nat.Prime p)]
{G₁ : Type}
[Group G₁]
[PrimeOrderWith G₁ p]
{g₁ : G₁}
{G₂ : Type}
[Group G₂]
{g₂ : G₂}
{n : ℕ}
{τ : ZMod p}
{srs : Vector G₁ (n + 1) × Vector G₂ 2}
(hsrs : srs = generate n τ)
(hgen : srs.1[0] ≠ 1)
:
If the first prover SRS element generated by generate is nontrivial, then its base
generator is nontrivial.
theorem
Groups.zmod_eq_zero_of_gpow_eq_one
{G : Type}
[Group G]
{p : outParam ℕ}
[Fact (Nat.Prime p)]
[PrimeOrderWith G p]
{g : G}
(hord : orderOf g = p)
{a : ZMod p}
(ha : g ^ a.val = 1)
:
If g ^ a = 1 in a prime-order group generated by a nontrivial element of order p,
then the ZMod p exponent is zero.