Cq.Internal
module PC = Kzg.Polynomial_commitment
module ISet : sig ... end
module IMap : sig ... end
type prover_public_parameters = {
n : int;
domain_k : Kzg.Bls.Domain.t;
domain_2k : Kzg.Bls.Domain.t;
table : ISet.t Kzg.Bls.Scalar_map.t list;
cms_lagrange : Kzg.Bls.G1.t array;
cms_lagrange_0 : Kzg.Bls.G1.t array;
q : Kzg.Bls.G1.t array list;
pc : PC.Public_parameters.prover;
}
type verifier_public_parameters = {
n : int;
k : int;
srs2_0 : Kzg.Bls.G2.t;
srs2_1 : Kzg.Bls.G2.t;
srs2_N_1_k_2 : Kzg.Bls.G2.t;
cm_table : Kzg.Bls.G2.t list;
cm_zv : Kzg.Bls.G2.t;
pc : PC.Public_parameters.verifier;
}
type proof = {
cm_f : PC.Commitment.t;
cm_f_agg : PC.Commitment.t;
cm_a : PC.Commitment.t;
cm_b0 : PC.Commitment.t;
cm_qa : PC.Commitment.t;
cm_m : PC.Commitment.t;
cm_p : Degree_check.Proof.t;
cm_b0_qb_f : PC.Commitment.t;
a0 : Kzg.Bls.Scalar.t list;
b0y : Kzg.Bls.Scalar.t Plonk.Identities.SMap.t;
fy : Kzg.Bls.Scalar.t Plonk.Identities.SMap.t;
fy_agg : Kzg.Bls.Scalar.t Plonk.Identities.SMap.t;
pc : PC.proof;
cm_a0 : Kzg.Bls.G1.t;
}
val aggregate_cm :
Kzg.Bls.G1.t Plonk.Identities.SMap.t ->
Kzg.Bls.G1.Scalar.t array ->
Kzg.Bls.G1.t
val get_pc_query :
Kzg.Bls.Scalar.t ->
Kzg.Bls.Scalar.t Plonk.Identities.SMap.t list
val commit1 :
PC.Public_parameters.prover ->
Kzg.Bls.Poly.t ->
Kzg.Bls.G1.Srs.elt
val open_at_0 : Kzg.Bls.Poly.t -> Kzg.Bls.Poly.t
val compute_and_commit :
('a -> Kzg.Bls.G1.Scalar.t * Kzg.Bls.G1.t) ->
'a list ->
Kzg.Bls.G1.Scalar.t array * Kzg.Bls.G1.t
val setup_prover :
(int * Identities.Evaluations.domain) ->
int ->
(Kzg.Bls.Poly.scalar array list * Kzg.Bls.Poly.t list) ->
PC.Public_parameters.prover ->
prover_public_parameters
val setup_verifier :
('a * Kzg.Bls.Srs_g2.t) ->
int ->
int ->
Kzg.Bls.Poly.t list ->
PC.Public_parameters.verifier ->
verifier_public_parameters
val setup :
srs:Mavkit_bls12_381_polynomial.Srs.t ->
wire_size:int ->
table:Kzg.Bls.Poly.scalar array list ->
prover_public_parameters * verifier_public_parameters
val compute_m_and_t_sparse :
prover_public_parameters ->
Kzg.Bls.Scalar_map.key array Plonk.Identities.SMap.t ->
'a array ->
(IMap.key * Kzg.Bls.Scalar.t * 'b) list * Kzg.Bls.G1.t
val compute_a :
prover_public_parameters ->
Kzg.Bls.Scalar.t ->
(int * Kzg.Bls.Scalar.t * Kzg.Bls.Scalar.t) list ->
(int * Kzg.Bls.G1.Scalar.t) list * Kzg.Bls.G1.t
val compute_cm_qa :
Kzg.Bls.G1.Scalar.t array ->
prover_public_parameters ->
(int * Kzg.Bls.G1.Scalar.t) list ->
Kzg.Bls.G1.t
val compute_b :
Kzg.Bls.Scalar.t ->
int ->
Identities.Evaluations.domain ->
Kzg.Bls.Scalar.t array ->
Identities.Evaluations.polynomial
val compute_qb :
prover_public_parameters ->
Identities.Evaluations.scalar ->
int ->
Identities.Evaluations.polynomial ->
Identities.Evaluations.polynomial ->
Kzg.Bls.Poly.t
val compute_p :
prover_public_parameters ->
Kzg.Utils.Transcript.t ->
int ->
Kzg.Bls.G1.t Kzg.SMap.t ->
Kzg.Bls.Poly.t Kzg.SMap.t ->
Kzg.Bls.G1.Srs.elt * Kzg__Utils.Transcript.t
val compute_a0 : int -> ('a * Kzg.Bls.Scalar.t) list -> Kzg.Bls.Scalar.t
val compute_cm_a0 :
prover_public_parameters ->
Kzg.Bls.Scalar.t array ->
(IMap.key * Kzg.Bls.Scalar.t) list list ->
Kzg.Bls.G1.t
val kzg_prove :
prover_public_parameters ->
Kzg.Utils.Transcript.t ->
int ->
((Kzg.Bls.G1.Srs.elt Kzg.SMap.t * unit)
* (Kzg.Bls.G1.Srs.elt Kzg.SMap.t * unit)) ->
(Kzg.Bls.Poly.t Plonk.Identities.SMap.t
* Kzg.Bls.Poly.t Plonk.Identities.SMap.t
* Kzg.Bls.Poly.t Plonk.Identities.SMap.t
* Kzg.Bls.Poly.t list) ->
Kzg.Bls.Poly.scalar Plonk.Identities.SMap.t
* Kzg.Bls.Poly.scalar Plonk.Identities.SMap.t
* Kzg.Bls.Poly.scalar Plonk.Identities.SMap.t
* Kzg.Bls.G1.Srs.elt Kzg.SMap.t
* Kzg.Bls.G1.Srs.elt Kzg.SMap.t
* Kzg.Bls.G1.Srs.elt Kzg.SMap.t
* Kzg.Utils.Transcript.t
val kzg_verify :
verifier_public_parameters ->
Kzg.Utils.Transcript.t ->
proof ->
int ->
Kzg.Bls.Scalar.t ->
bool * Kzg.Utils.Transcript.t
val verify_f_agg : Kzg.Bls.Scalar.t array -> proof -> bool
val prove :
prover_public_parameters ->
Kzg.Utils.Transcript.t ->
Identities.Evaluations.scalar array Plonk.Identities.SMap.t List.t ->
proof * Kzg__Utils.Transcript.t
val verify :
verifier_public_parameters ->
Kzg.Utils.Transcript.t ->
proof ->
bool * Kzg__Utils.Transcript.t