Aggregation.Polynomial_protocolmodule SMap = Kzg.SMapmodule type S = sig ... endmodule Make_impl
  (Super_PC : Polynomial_commitment.S)
  (Answers_commitment : Plonk.Input_commitment.S) : 
  sig ... endmodule Make_aggregation
  (PC : Polynomial_commitment.S)
  (Answers_commitment : Plonk.Input_commitment.S) : 
  S with module Answers_commitment = Answers_commitment with module PC = PCmodule KZG_Answers_commitment : sig ... endinclude sig ... endmodule PC : sig ... endmodule Answers_commitment : sig ... endtype prover_public_parameters = PC.Public_parameters.proverval prover_public_parameters_t : prover_public_parameters Repr.ttype verifier_public_parameters = PC.Public_parameters.verifierval verifier_public_parameters_t : verifier_public_parameters Repr.ttype proof =
  Make_aggregation(Polynomial_commitment)(KZG_Answers_commitment).proof =
  {cm_t : PC.Commitment.t;pc_proof : PC.proof;pc_answers : PC.answer list;}val proof_t : proof Repr.tval setup : 
  setup_params:PC.Public_parameters.setup_params ->
  srs:(Kzg.Bls.Srs.t * Kzg.Bls.Srs.t) ->
  prover_public_parameters
  * verifier_public_parameters
  * Kzg.Utils.Transcript.tval prove : 
  prover_public_parameters ->
  Kzg.Utils.Transcript.t ->
  n:int ->
  generator:Kzg.Bls.Scalar.t ->
  secrets:
    (Kzg.Bls.Poly.t Plonk.Identities.SMap.t * PC.Commitment.prover_aux) list ->
  eval_points:Plonk.Identities.eval_point list list ->
  evaluations:Plonk.Identities.Evaluations.t Plonk.Identities.SMap.t ->
  identities:Plonk.Identities.prover_identities ->
  nb_of_t_chunks:int ->
  proof * Kzg.Utils.Transcript.tval verify : 
  verifier_public_parameters ->
  Kzg.Utils.Transcript.t ->
  n:int ->
  generator:Kzg.Bls.Scalar.t ->
  commitments:PC.Commitment.t list ->
  eval_points:Plonk.Identities.eval_point list list ->
  identities:Plonk.Identities.verifier_identities ->
  proof ->
  bool * Kzg.Utils.Transcript.ttype prover_aux =
  Make_aggregation(Polynomial_commitment)(KZG_Answers_commitment).prover_aux =
  {answers : Kzg.Bls.Scalar.t SMap.t SMap.t list;batch : Kzg.Bls.Scalar.t SMap.t list;alpha : Kzg.Bls.Scalar.t;x : Kzg.Bls.Scalar.t;r : Kzg.Bls.Scalar.t;cms_answers : Answers_commitment.t SMap.t;t_answers : Kzg.Bls.Scalar.t list;}Auxiliary information needed by the prover for the meta-verification in aPlonK
type verifier_aux =
  Make_aggregation(Polynomial_commitment)(KZG_Answers_commitment).verifier_aux =
  {alpha : Kzg.Bls.Scalar.t;x : Kzg.Bls.Scalar.t;r : Kzg.Bls.Scalar.t;}Auxiliary information needed by the verifier for the meta-verification in aPlonK
val update_transcript_with_formatted_answers : 
  Kzg.Utils.Transcript.t ->
  (Kzg.Bls.Scalar.t SMap.t SMap.t list -> Answers_commitment.t) SMap.t ->
  Kzg.Bls.Scalar.t SMap.t SMap.t list ->
  Kzg.Bls.Scalar.t list * Answers_commitment.t SMap.t * Kzg.Utils.Transcript.tval prove_super_aggregation : 
  prover_public_parameters ->
  Kzg.Utils.Transcript.t ->
  commit_to_answers_map:
    (Kzg.Bls.Scalar.t SMap.t SMap.t list -> Answers_commitment.t) SMap.t ->
  n:int ->
  generator:Kzg.Bls.Scalar.t ->
  secrets:(Kzg.Bls.Poly.t SMap.t * PC.Commitment.prover_aux) list ->
  eval_points:Plonk.Identities.eval_point list list ->
  evaluations:Plonk.Identities.Evaluations.t SMap.t ->
  identities:Plonk.Identities.prover_identities ->
  nb_of_t_chunks:int ->
  (proof * prover_aux) * Kzg.Utils.Transcript.tval verify_super_aggregation : 
  verifier_public_parameters ->
  Kzg.Utils.Transcript.t ->
  n:int ->
  generator:Kzg.Bls.Scalar.t ->
  commitments:PC.Commitment.t list ->
  eval_points:Plonk.Identities.eval_point list list ->
  s_list:Kzg.Bls.Scalar.t SMap.t list ->
  cms_answers:Answers_commitment.public SMap.t ->
  t_answers:Kzg.Bls.Scalar.t list ->
  ids_batch:(Kzg.Bls.Scalar.t * int) SMap.t ->
  proof ->
  (bool * verifier_aux) * Kzg.Utils.Transcript.t