Plonk.Circuit
module SMap = Kzg.SMap
val gates_to_string : Plompiler.Csir.Scalar.t list SMap.t -> string
module Circuit : sig ... end
include module type of struct include Circuit end
type t = private Circuit.t = {
wires : int array array;
gates : Plompiler.Csir.Scalar.t array SMap.t;
tables : Plompiler.Csir.Scalar.t array list list;
public_input_size : int;
input_com_sizes : int list;
circuit_size : int;
table_size : int;
nb_lookups : int;
ultra : bool;
range_checks : (int * int) list SMap.t;
}
val make_gates :
?qc:Plompiler.Csir.Scalar.t list ->
?linear:(int * Plompiler.Csir.Scalar.t list) list ->
?linear_g:(int * Plompiler.Csir.Scalar.t list) list ->
?qm:Plompiler.Csir.Scalar.t list ->
?qx2b:Plompiler.Csir.Scalar.t list ->
?qx5a:Plompiler.Csir.Scalar.t list ->
?qx5c:Plompiler.Csir.Scalar.t list ->
?qecc_ws_add:Plompiler.Csir.Scalar.t list ->
?qecc_ed_add:Plompiler.Csir.Scalar.t list ->
?qecc_ed_cond_add:Plompiler.Csir.Scalar.t list ->
?qbool:Plompiler.Csir.Scalar.t list ->
?qcond_swap:Plompiler.Csir.Scalar.t list ->
?q_anemoi:Plompiler.Csir.Scalar.t list ->
?q_mod_add:(string * Plompiler.Csir.Scalar.t list) list ->
?q_mod_mul:(string * Plompiler.Csir.Scalar.t list) list ->
?q_plookup:Plompiler.Csir.Scalar.t list ->
?q_table:Plompiler.Csir.Scalar.t list ->
?precomputed_advice:Plompiler.Csir.Scalar.t list SMap.t ->
unit ->
Plompiler.Csir.Scalar.t list SMap.t
val make :
wires:int list array ->
gates:Plompiler.Csir.Scalar.t list SMap.t ->
?tables:Plompiler.Csir.Scalar.t array list list ->
public_input_size:int ->
?input_com_sizes:int list ->
?range_checks:(int * int) list SMap.t ->
unit ->
t
val get_nb_of_constraints : t -> int
val get_selectors : t -> string list
val sat :
Plompiler.LibCircuit.cs_result ->
Plompiler.Csir.Scalar.t array ->
bool
val to_plonk : Plompiler.LibCircuit.cs_result -> t