pub struct ConstraintSystem<F: Field> { /* private fields */ }
Expand description
This is a description of the circuit environment, such as the gate, column and permutation arrangements.
Implementations§
Source§impl<F: Field> ConstraintSystem<F>
impl<F: Field> ConstraintSystem<F>
Sourcepub fn pinned(&self) -> PinnedConstraintSystem<'_, F>
pub fn pinned(&self) -> PinnedConstraintSystem<'_, F>
Obtain a pinned version of this constraint system; a structure with the minimal parameters needed to determine the rest of the constraint system.
Sourcepub fn enable_constant(&mut self, column: Column<Fixed>)
pub fn enable_constant(&mut self, column: Column<Fixed>)
Enables this fixed column to be used for global constant assignments.
§Side-effects
The column will be equality-enabled.
Sourcepub fn enable_equality<C: Into<Column<Any>>>(&mut self, column: C)
pub fn enable_equality<C: Into<Column<Any>>>(&mut self, column: C)
Enable the ability to enforce equality over cells in this column
Sourcepub fn lookup(
&mut self,
table_map: impl FnOnce(&mut VirtualCells<'_, F>) -> Vec<(Expression<F>, TableColumn)>,
) -> usize
pub fn lookup( &mut self, table_map: impl FnOnce(&mut VirtualCells<'_, F>) -> Vec<(Expression<F>, TableColumn)>, ) -> usize
Add a lookup argument for some input expressions and table columns.
table_map
returns a map between input expressions and the table columns
they need to match.
Sourcepub fn set_minimum_degree(&mut self, degree: usize)
pub fn set_minimum_degree(&mut self, degree: usize)
Sets the minimum degree required by the circuit, which can be set to a larger amount than actually needed. This can be used, for example, to force the permutation argument to involve more columns in the same set.
Sourcepub fn create_gate<C: Into<Constraint<F>>, Iter: IntoIterator<Item = C>>(
&mut self,
name: &'static str,
constraints: impl FnOnce(&mut VirtualCells<'_, F>) -> Iter,
)
pub fn create_gate<C: Into<Constraint<F>>, Iter: IntoIterator<Item = C>>( &mut self, name: &'static str, constraints: impl FnOnce(&mut VirtualCells<'_, F>) -> Iter, )
Creates a new gate.
§Panics
A gate is required to contain polynomial constraints. This method will panic if
constraints
returns an empty iterator.
Sourcepub fn selector(&mut self) -> Selector
pub fn selector(&mut self) -> Selector
Allocate a new (simple) selector. Simple selectors cannot be added to expressions nor multiplied by other expressions containing simple selectors. Also, simple selectors may not appear in lookup argument inputs.
Sourcepub fn complex_selector(&mut self) -> Selector
pub fn complex_selector(&mut self) -> Selector
Allocate a new complex selector that can appear anywhere within expressions.
Sourcepub fn lookup_table_column(&mut self) -> TableColumn
pub fn lookup_table_column(&mut self) -> TableColumn
Allocates a new fixed column that can be used in a lookup table.
Sourcepub fn fixed_column(&mut self) -> Column<Fixed>
pub fn fixed_column(&mut self) -> Column<Fixed>
Allocate a new fixed column
Sourcepub fn advice_column(&mut self) -> Column<Advice>
pub fn advice_column(&mut self) -> Column<Advice>
Allocate a new advice column
Sourcepub fn instance_column(&mut self) -> Column<Instance>
pub fn instance_column(&mut self) -> Column<Instance>
Allocate a new instance column
Sourcepub fn degree(&self) -> usize
pub fn degree(&self) -> usize
Compute the degree of the constraint system (the maximum degree of all constraints).
Sourcepub fn blinding_factors(&self) -> usize
pub fn blinding_factors(&self) -> usize
Compute the number of blinding factors necessary to perfectly blind each of the prover’s witness polynomials.
Sourcepub fn minimum_rows(&self) -> usize
pub fn minimum_rows(&self) -> usize
Returns the minimum necessary rows that need to exist in order to account for e.g. blinding factors.
Trait Implementations§
Source§impl<F: Clone + Field> Clone for ConstraintSystem<F>
impl<F: Clone + Field> Clone for ConstraintSystem<F>
Source§fn clone(&self) -> ConstraintSystem<F>
fn clone(&self) -> ConstraintSystem<F>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl<F: Field> Default for ConstraintSystem<F>
impl<F: Field> Default for ConstraintSystem<F>
Source§fn default() -> ConstraintSystem<F>
fn default() -> ConstraintSystem<F>
Auto Trait Implementations§
impl<F> Freeze for ConstraintSystem<F>
impl<F> RefUnwindSafe for ConstraintSystem<F>where
F: RefUnwindSafe,
impl<F> Send for ConstraintSystem<F>
impl<F> Sync for ConstraintSystem<F>
impl<F> Unpin for ConstraintSystem<F>where
F: Unpin,
impl<F> UnwindSafe for ConstraintSystem<F>where
F: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.