Main_protocol.Make_implmodule Main_KZG : Plonk.Main_protocol.S with type public_inputs = Kzg.Bls.Scalar.t array listmodule Main_Pack : 
  Aggregation.Main_protocol.S
    with type public_inputs = Kzg.Bls.Scalar.t array list
    with module PP.Answers_commitment = Main_KZG.Input_commitmentmodule PIs : Pi_parameters.Smodule Aggreg_circuit : sig ... endmodule L = Plompiler.LibCircuitmodule Input_commitment = Main_Pack.Input_commitmenttype scalar = Kzg.Bls.Scalar.tval scalar_t : Kzg.Bls.Scalar.t Repr.ttype circuit_map = Main_Pack.circuit_maptype prover_meta_pp = {meta_pp : Main_KZG.prover_public_parameters;meta_solver : Plompiler.Solver.t;public_input_size : int;input_com_sizes : int list;nb_proofs : int;nb_rc_wires : int;}val prover_meta_pp_t : prover_meta_pp Repr.ttype verifier_meta_pp = {meta_pp : Main_KZG.verifier_public_parameters;public_input_size : int;nb_proofs : int;}val verifier_meta_pp_t : verifier_meta_pp Repr.ttype prover_public_parameters = {main_pp : Main_Pack.prover_public_parameters;meta_pps : prover_meta_pp SMap.t;}val prover_public_parameters_t : prover_public_parameters Repr.ttype verifier_public_parameters = {main_pp : Main_Pack.verifier_public_parameters;meta_pps : verifier_meta_pp SMap.t;}val verifier_public_parameters_t : verifier_public_parameters Repr.ttype proof = {main_proof : Main_Pack.proof;meta_proofs : Main_KZG.proof SMap.t;batch : Main_KZG.scalar SMap.t list;batches : (Main_KZG.scalar * int) SMap.t list SMap.t;cms_answers : Main_Pack.PP.Answers_commitment.public SMap.t;cms_pi : Main_Pack.PP.Answers_commitment.public SMap.t;ids_batch : (Main_KZG.scalar * int) SMap.t;t_answers : Main_KZG.scalar list;}val proof_t : proof Repr.ttype circuit_prover_input = Main_Pack.circuit_prover_input = {witness : scalar array;input_commitments : Main_Pack.Input_commitment.t list;}val circuit_prover_input_t : circuit_prover_input Repr.ttype prover_inputs = circuit_prover_input list SMap.tval prover_inputs_t : circuit_prover_input list SMap.t Repr.tytype public_inputs = scalar listval public_inputs_t : Kzg.Bls.Scalar.t list Repr.ttype circuit_verifier_input = {nb_proofs : int;public : public_inputs;commitments : Input_commitment.public list list;}val circuit_verifier_input_t : circuit_verifier_input Repr.ttype verifier_inputs = circuit_verifier_input SMap.tval verifier_inputs_t : circuit_verifier_input SMap.t Repr.tyval to_verifier_inputs : 
  prover_public_parameters ->
  Main_Pack.prover_inputs ->
  circuit_verifier_input SMap.tval update_prover_public_parameters : 
  'a Repr.ty ->
  'b ->
  prover_public_parameters ->
  prover_public_parametersval update_verifier_public_parameters : 
  'a Repr.ty ->
  'b ->
  verifier_public_parameters ->
  verifier_public_parametersval filter_prv_pp_circuits : 
  prover_public_parameters ->
  'a Kzg.SMap.t ->
  prover_public_parametersval filter_vrf_pp_circuits : 
  verifier_public_parameters ->
  'a Kzg.SMap.t ->
  verifier_public_parametersval cs_global : Plompiler.LibCircuit.cs_result SMap.t Stdlib.refval input_commit_funcs : 
  prover_public_parameters ->
  'a list SMap.t ->
  Main_Pack.input_commit_funcs SMap.tval input_commit : 
  ?size:'a ->
  ?shift:'b ->
  prover_public_parameters ->
  'c ->
  'dval meta_setup : 
  zero_knowledge:bool ->
  srs:(Kzg.Bls.Srs.t * Kzg.Bls.Srs.t) ->
  main_prover_pp:Main_Pack.prover_public_parameters ->
  nb_batches:int ->
  SMap.key ->
  (Plonk.Circuit.t * int) ->
  prover_meta_pp * verifier_meta_ppval setup : 
  zero_knowledge:bool ->
  Main_Pack.circuit_map ->
  srs:(Kzg.Bls.Srs.t * Kzg.Bls.Srs.t) ->
  prover_public_parameters * verifier_public_parametersval meta_prove : 
  main_prover_aux:Main_Pack.prover_aux ->
  meta_pps:prover_meta_pp SMap.t ->
  inner_pi_map:Main_Pack.circuit_verifier_input SMap.t ->
  transcript:Kzg.Utils.Transcript.t ->
  (Main_Pack.scalar * 'a) Kzg.SMap.t list SMap.t ->
  SMap.key ->
  'b list ->
  Main_KZG.proofval meta_proof : 
  prover_public_parameters ->
  Main_Pack.prover_inputs ->
  (Main_Pack.proof * Main_Pack.prover_aux) ->
  proofval prove : prover_public_parameters -> inputs:prover_inputs -> proofval meta_verify : 
  transcript:Kzg.Utils.Transcript.t ->
  inputs:circuit_verifier_input SMap.t ->
  proof:proof ->
  (Main_KZG.scalar
   * Main_KZG.scalar
   * Main_KZG.scalar
   * Main_KZG.scalar
   * Main_KZG.scalar
   * Main_KZG.scalar) ->
  SMap.key ->
  verifier_meta_pp ->
  boolval verify : 
  verifier_public_parameters ->
  inputs:verifier_inputs ->
  proof ->
  boolval scalar_encoding : Main_Pack.scalar Data_encoding.tval proof_encoding : proof Data_encoding.encodingval verifier_public_parameters_encoding : 
  verifier_public_parameters Data_encoding.encodingmodule Internal_for_tests : sig ... end