# Functions

NewProver returns a Prover instantiated with the passed arguments.
NewVerifier returns a Verifier instantiated with the passed arguments.

# Structs

Commitments to the randomness used in the one-out-of-many proof.
Proof is a one-out-of-many proof.
Prover produces a one-out-of-many proof A one-out-of-many proof allows a prover who is given a list of commitments (c_1, ..., c_n) to show that they know that there is i \in [N] and r_i \in Z_p such that c_i = Q^r_i (i.e., c_i is commitment to 0).
Values corresponds to r+w*c, where c is the challenge in one-out-of-many proof, r is a random number and w is a secret information known to the prover.
Verifier checks the validity of one-out-of-many proofs.
Witness represents the secret information of one-out-of-many proofs.