Module LibCircuit.Input

Module for describing inputs to Plompiler circuits.

type 'a input

Input of type 'a to a Plompiler program. These hold a value of type 'a with some additional structure used for constructing the circuit. Often, after implementing a Plompiler program, one is left with a function of the shape:

val prog : 'a input -> 'b input -> unit repr t.

If the user only wants to execute the program in order to compute the corresponding circuit, but without producing a proof, then the inputs can be set to dummy values, as they will be ignored. That is, only the structure of the input is used for building the circuit.

val scalar : Csir.Scalar.t -> scalar input

scalar s describes a scalar input holding the value s.

val to_scalar : scalar input -> Csir.Scalar.t

to_scalar i retrieves the value from a scalar input.

val bool : bool -> bool input

bool b describes a boolean input holding the value b.

val to_bool : bool input -> bool

to_bool i retrieves the value from a boolean input.

val unit : unit input

unit describes a unit input.

val pair : 'a input -> 'b input -> ('a * 'b) input

pair a b describes the input tuple (a, b) made out of inputs a and b.

val to_pair : ('a * 'b) input -> 'a input * 'b input

to_pair p retrieves the inputs (a, b) that make up the input tuple p.

val list : 'a input list -> 'a list input

list l turns a list of inputs l into an list input.

val to_list : 'a list input -> 'a input list

to_list li turns a list input li into a list of inputs.

val with_implicit_bool_check : ('a repr -> bool repr t) -> 'a input -> 'a input

with_implicit_bool_check bc i attaches an implicit bool check bc to the input i.

val with_assertion : ('a repr -> unit repr t) -> 'a input -> 'a input

with_assertion assrtn i attaches an assertion assrtn to the input i.

type 'a t = 'a input