Module Plonk.Identities

module SMap = Kzg.SMap
module Evaluations : sig ... end
module Identities : sig ... end
include module type of struct include Identities end
type prover_identities = Evaluations.t SMap.t -> Evaluations.t SMap.t

The type for prover identities: functions from a (string) map of polynomials in FFT evaluations form to a (string) map of evaluated identities (also polynomials in FFT evaluations form).

The type for verifier identities: functions which map an evaluation point ξ an a PC.answer into a (string) map of evaluated identities.

type eval_point = Identities.eval_point =
  1. | X
  2. | GX
  3. | Custom of string * Kzg.Bls.Scalar.t

The type for evaluation points. Either X, GX, or a custom point, which must be specified by an evaluation point name paired with a scalar that will multiply ξ. For example:

  • X could be implemented as Custom ("x", Scalar.one)
  • GX could be implemented as Custom ("gx", generator).
val eval_point_t : eval_point Repr.t
val string_of_eval_point : eval_point -> string
val convert_eval_points : generator:Kzg.Bls.Scalar.t -> x:Kzg.Bls.Scalar.t -> eval_point list -> Kzg.Bls.Scalar.t SMap.t

convert_eval_points gen x points maps the polynomial protocol points : eval_point list into scalars, by evaluating the underlying "composition" polynomial at x. The generator gen is used in case the eval_point equals GX, in which case the resulting scalar is x * gen.

val get_answer : Kzg.Bls.Scalar.t SMap.t SMap.t -> eval_point -> string -> Kzg.Bls.Scalar.t

get_answer answers p name extracts the evaluation of polynomial name at point p from the given answers.

val merge_prover_identities : prover_identities list -> prover_identities

A function to merge a list of prover identities into one.

val merge_verifier_identities : verifier_identities list -> verifier_identities

A function to merge a list of verifier identities into one.