123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162openBlsopenUtilsmoduletypeCommitment=sigtypet[@@derivingrepr]typeprover_aux[@@derivingrepr]typepublic_parameterstypesecret=Poly.tSMap.tvalcommit_single:public_parameters->Poly.t->G1.t(* [all_keys] is an optional argument that should only be used for
partial commitments. It contains all the polynomial names that
make up the full commitment.
For instance, if the full commitment contains polynomials "a", "b", "c" &
"d", then all keys will contain ["a", "b", "c", "d"]
Note that [secret] may only contain a subset of [all_keys] (for instance,
{"a", "b"}).
*)valcommit:?all_keys:stringlist->public_parameters->secret->t*prover_auxvalcardinal:t->intvalrename:(string->string)->t->tvalrecombine:tlist->tvalrecombine_prover_aux:prover_auxlist->prover_auxvalempty:tvalempty_prover_aux:prover_auxvalof_list:public_parameters->name:string->G1.tlist->t*prover_auxvalto_map:t->G1.tSMap.tendmoduletypePublic_parameters=sigtypeprover[@@derivingrepr]typeverifier[@@derivingrepr]typecommitmenttypesetup_params=intvalsetup:setup_params->Srs.t*Srs.t->prover*verifier*Transcript.tvalget_commit_parameters:prover->commitmentendmoduletypePolynomial_commitment=sig(* polynomials to be committed *)typesecret=Poly.tSMap.t(* maps evaluation point names to evaluation point values *)typequery=Scalar.tSMap.t[@@derivingrepr](* maps evaluation point names to (map from polynomial names to evaluations) *)typeanswer=Scalar.tSMap.tSMap.t[@@derivingrepr]typeproof[@@derivingrepr]moduleCommitment:CommitmentmodulePublic_parameters:Public_parameterswithtypecommitment=Commitment.public_parametersvalcommit:?all_keys:stringlist->Public_parameters.prover->secret->Commitment.t*Commitment.prover_auxvalevaluate:secret->query->answervalprove:Public_parameters.prover->Transcript.t->secretlist->Commitment.prover_auxlist->querylist->answerlist->proof*Transcript.tvalverify:Public_parameters.verifier->Transcript.t->Commitment.tlist->querylist->answerlist->proof->bool*Transcript.tendmoduletypeDegreeCheck_proof=sigtypet[@@derivingrepr]valzero:tvalalter_proof:t->tvalencoding:tencodingendmoduletypeCommitment_single=sigexceptionSRS_too_shortofstringtypet[@@derivingrepr]typepublic_parameters=Srs_g1.ttypesecret=Poly.tvalzero:tvalalter_proof:t->tvalencoding:tencodingvalequal:t->t->boolvalcompare:t->t->intvalcommit:public_parameters->secret->tvalsize:intvalcommitment_of_bytes_exn:bytes->tvalto_string:t->stringvalof_string_opt:string->toptionendmoduletypeDegree_check=sigmoduleProof:DegreeCheck_proofmoduleCommitment:Commitment_singletypeprover_public_parameters=Commitment.public_parameterstypeverifier_public_parameters={srs_0:G2.t;srs_n_d:G2.t}typesecret=Commitment.secrettypecommitment=Commitment.tvalprove:max_commit:int->max_degree:int->prover_public_parameters->secret->Proof.tvalverify:verifier_public_parameters->commitment->Proof.t->boolend