pub trait Environment: 'static + Copy + Clone + Debug + Display + Eq + PartialEq<Self> + Hash {
    type Network: Network
    where
        <Self::Network as Environment>::Affine == Self::Affine,
        <Self::Network as Environment>::Field == Self::BaseField,
        <Self::Network as Environment>::Scalar == Self::ScalarField
; type Affine: AffineCurve
    where
        <Self::Affine as AffineCurve>::BaseField == Self::BaseField,
        <Self::Affine as AffineCurve>::ScalarField == Self::ScalarField,
        <Self::Affine as AffineCurve>::Coordinates == (Self::BaseField, Self::BaseField)
; type BaseField: PrimeField + SquareRootField + Copy; type ScalarField: PrimeField + Copy
    where
        <Self::ScalarField as PrimeField>::BigInteger == <Self::BaseField as PrimeField>::BigInteger
; const EDWARDS_A: Self::BaseField = const EDWARDS_A: Self::BaseField = <Self::Network as console::Environment>::EDWARDS_A;; const EDWARDS_D: Self::BaseField = const EDWARDS_D: Self::BaseField = <Self::Network as console::Environment>::EDWARDS_D;; const MONTGOMERY_A: Self::BaseField = const MONTGOMERY_A: Self::BaseField = <Self::Network as console::Environment>::MONTGOMERY_A;; const MONTGOMERY_B: Self::BaseField = const MONTGOMERY_B: Self::BaseField = <Self::Network as console::Environment>::MONTGOMERY_B;; const MAX_STRING_BYTES: u32 = const MAX_STRING_BYTES: u32 = <Self::Network as console::Environment>::MAX_STRING_BYTES;;
Show 27 methods fn zero() -> LinearCombination<Self::BaseField>; fn one() -> LinearCombination<Self::BaseField>; fn new_variable(
        mode: Mode,
        value: Self::BaseField
    ) -> Variable<Self::BaseField>; fn new_witness<Fn, Output>(mode: Mode, value: Fn) -> Output
    where
        Fn: FnOnce() -> <Output as Inject>::Primitive,
        Output: Inject
; fn scope<S, Fn, Output>(name: S, logic: Fn) -> Output
    where
        S: Into<String>,
        Fn: FnOnce() -> Output
; fn enforce<Fn, A, B, C>(constraint: Fn)
    where
        Fn: FnOnce() -> (A, B, C),
        A: Into<LinearCombination<Self::BaseField>>,
        B: Into<LinearCombination<Self::BaseField>>,
        C: Into<LinearCombination<Self::BaseField>>
; fn is_satisfied() -> bool; fn is_satisfied_in_scope() -> bool; fn num_constants() -> u64; fn num_public() -> u64; fn num_private() -> u64; fn num_constraints() -> u64; fn num_gates() -> u64; fn num_constants_in_scope() -> u64; fn num_public_in_scope() -> u64; fn num_private_in_scope() -> u64; fn num_constraints_in_scope() -> u64; fn num_gates_in_scope() -> u64; fn inject_r1cs(r1cs: R1CS<Self::BaseField>); fn eject_r1cs_and_reset() -> R1CS<Self::BaseField>; fn eject_assignment_and_reset(
    ) -> Assignment<<Self::Network as Environment>::Field>; fn reset(); fn assert<Boolean>(boolean: Boolean)
    where
        Boolean: Into<LinearCombination<Self::BaseField>>
, { ... } fn assert_eq<A, B>(a: A, b: B)
    where
        A: Into<LinearCombination<Self::BaseField>>,
        B: Into<LinearCombination<Self::BaseField>>
, { ... } fn count() -> (u64, u64, u64, u64, u64) { ... } fn count_in_scope() -> (u64, u64, u64, u64, u64) { ... } fn halt<S, T>(message: S) -> T
    where
        S: Into<String>
, { ... }
}

Required Associated Types

Provided Associated Constants

The coefficient A of the twisted Edwards curve.

The coefficient D of the twisted Edwards curve.

The coefficient A of the Montgomery curve.

The coefficient B of the Montgomery curve.

The maximum number of bytes allowed in a string.

Required Methods

Returns the zero constant.

Returns the one constant.

Returns a new variable of the given mode and value.

Returns a new witness of the given mode and value.

Enters a new scope for the environment.

Adds one constraint enforcing that (A * B) == C.

Returns true if all constraints in the environment are satisfied.

Returns true if all constraints in the current scope are satisfied.

Returns the number of constants in the entire environment.

Returns the number of public variables in the entire environment.

Returns the number of private variables in the entire environment.

Returns the number of constraints in the entire environment.

Returns the number of gates in the entire environment.

Returns the number of constants for the current scope.

Returns the number of public variables for the current scope.

Returns the number of private variables for the current scope.

Returns the number of constraints for the current scope.

Returns the number of gates for the current scope.

Returns the R1CS circuit, resetting the circuit.

Returns the R1CS circuit, resetting the circuit.

Returns the R1CS assignment of the circuit, resetting the circuit.

Clears and initializes an empty environment.

Provided Methods

Adds one constraint enforcing that the given boolean is true.

Adds one constraint enforcing that the A == B.

Returns a tuple containing the number of constants, public variables, private variables, constraints, and gates in the entire environment.

Returns a tuple containing the number of constants, public variables, private variables, constraints, and gates for the current scope.

Halts the program from further synthesis, evaluation, and execution in the current environment.

Implementors