# Functions
Compile will generate a R1CS from the given circuit
1.
ParseWitness will returns a map[string]interface{} to be used as input in in R1CS.Solve(), groth16.Prove() or groth16.Verify()
if input is not already a map[string]interface{}, it must implement frontend.Circuit.
# Structs
ConstraintSystem represents a Groth16 like circuit
All the APIs to define a circuit (see Circuit.Define) like Add, Sub, Mul, ..
Variable of a circuit They represent secret or public inputs in a circuit struct{} / definition (see circuit.Define(), type Tag).
# Interfaces
Circuit must be implemented by user-defined circuits.
# Type aliases
Tag is a (optional) struct tag one can add to Variable to specify frontend.Compile() behavior
the tag format is as follow: type MyCircuit struct { Y frontend.Variable `gnark:"name,option"` } if empty, default resolves to variable name (here "Y") and secret visibility similarly to json or xml struct tags, these are valid: `gnark:",public"` or `gnark:"-"` using "-" marks the variable as ignored by the Compile method.