From c1fab9603e12effb147dced3d15cec943b136378 Mon Sep 17 00:00:00 2001 From: chriseth Date: Tue, 28 Mar 2023 17:10:26 +0200 Subject: [PATCH] Group machines. --- src/witness_generator/generator.rs | 2 +- .../double_sorted_witness_machine.rs | 12 ++++++------ .../{ => machines}/fixed_lookup_machine.rs | 17 +++++++++-------- .../{ => machines}/machine_extractor.rs | 6 +++--- .../{machine.rs => machines/mod.rs} | 5 +++++ .../{ => machines}/sorted_witness_machine.rs | 18 +++++++++--------- src/witness_generator/mod.rs | 13 ++++++------- 7 files changed, 39 insertions(+), 34 deletions(-) rename src/witness_generator/{ => machines}/double_sorted_witness_machine.rs (97%) rename src/witness_generator/{ => machines}/fixed_lookup_machine.rs (94%) rename src/witness_generator/{ => machines}/machine_extractor.rs (98%) rename src/witness_generator/{machine.rs => machines/mod.rs} (92%) rename src/witness_generator/{ => machines}/sorted_witness_machine.rs (96%) diff --git a/src/witness_generator/generator.rs b/src/witness_generator/generator.rs index b8549290b..72cc3a038 100644 --- a/src/witness_generator/generator.rs +++ b/src/witness_generator/generator.rs @@ -9,7 +9,7 @@ use super::affine_expression::AffineExpression; use super::bit_constraints::{BitConstraint, BitConstraintSet}; use super::eval_error::EvalError; use super::expression_evaluator::{ExpressionEvaluator, SymbolicVariables}; -use super::machine::Machine; +use super::machines::Machine; use super::util::contains_next_witness_ref; use super::{Constraint, EvalResult, FixedData, WitnessColumn}; diff --git a/src/witness_generator/double_sorted_witness_machine.rs b/src/witness_generator/machines/double_sorted_witness_machine.rs similarity index 97% rename from src/witness_generator/double_sorted_witness_machine.rs rename to src/witness_generator/machines/double_sorted_witness_machine.rs index da95f5ff3..ada46f54d 100644 --- a/src/witness_generator/double_sorted_witness_machine.rs +++ b/src/witness_generator/machines/double_sorted_witness_machine.rs @@ -3,15 +3,15 @@ use std::iter::once; use itertools::{Either, Itertools}; +use super::Machine; use crate::analyzer::PolynomialReference; use crate::analyzer::{Expression, Identity, IdentityKind, SelectedExpressions}; use crate::number::AbstractNumberType; -use crate::witness_generator::eval_error; - -use super::affine_expression::AffineExpression; -use super::eval_error::EvalError; -use super::machine::Machine; -use super::{EvalResult, FixedData}; +use crate::witness_generator::{ + affine_expression::AffineExpression, + eval_error::{self, EvalError}, + EvalResult, FixedData, +}; /// TODO make this generic diff --git a/src/witness_generator/fixed_lookup_machine.rs b/src/witness_generator/machines/fixed_lookup_machine.rs similarity index 94% rename from src/witness_generator/fixed_lookup_machine.rs rename to src/witness_generator/machines/fixed_lookup_machine.rs index 733e7aed8..81834f3bd 100644 --- a/src/witness_generator/fixed_lookup_machine.rs +++ b/src/witness_generator/machines/fixed_lookup_machine.rs @@ -1,16 +1,17 @@ use std::collections::{HashMap, HashSet}; +use super::Machine; use crate::analyzer::{Expression, Identity, IdentityKind, SelectedExpressions}; use crate::number::{AbstractNumberType, DegreeType}; -use crate::witness_generator::eval_error; -use crate::witness_generator::expression_evaluator::ExpressionEvaluator; -use crate::witness_generator::util::contains_witness_ref; -use super::affine_expression::AffineExpression; -use super::eval_error::EvalError; -use super::fixed_evaluator::FixedEvaluator; -use super::machine::Machine; -use super::{EvalResult, FixedData}; +use crate::witness_generator::{ + affine_expression::AffineExpression, + eval_error::{self, EvalError}, + expression_evaluator::ExpressionEvaluator, + fixed_evaluator::FixedEvaluator, + util::contains_witness_ref, + EvalResult, FixedData, +}; /// Machine to perform a lookup in fixed columns only. /// It only supports lookup in the first column of the query and will use the first match. diff --git a/src/witness_generator/machine_extractor.rs b/src/witness_generator/machines/machine_extractor.rs similarity index 98% rename from src/witness_generator/machine_extractor.rs rename to src/witness_generator/machines/machine_extractor.rs index 3c8d185ea..dc61bfc1d 100644 --- a/src/witness_generator/machine_extractor.rs +++ b/src/witness_generator/machines/machine_extractor.rs @@ -4,10 +4,10 @@ use crate::analyzer::{Expression, Identity, SelectedExpressions}; use super::double_sorted_witness_machine::DoubleSortedWitnesses; use super::fixed_lookup_machine::FixedLookup; -use super::machine::Machine; - use super::sorted_witness_machine::SortedWitnesses; -use super::{FixedData, WitnessColumn}; +use super::FixedData; +use super::Machine; +use crate::witness_generator::WitnessColumn; /// Finds machines in the witness columns and identities /// and returns a list of machines and the identities diff --git a/src/witness_generator/machine.rs b/src/witness_generator/machines/mod.rs similarity index 92% rename from src/witness_generator/machine.rs rename to src/witness_generator/machines/mod.rs index ea75941d8..6bc14c330 100644 --- a/src/witness_generator/machine.rs +++ b/src/witness_generator/machines/mod.rs @@ -6,6 +6,11 @@ use crate::number::AbstractNumberType; use super::EvalResult; use super::{affine_expression::AffineExpression, eval_error::EvalError, FixedData}; +mod double_sorted_witness_machine; +mod fixed_lookup_machine; +pub mod machine_extractor; +mod sorted_witness_machine; + /// A machine is a set of witness columns and identities where the columns /// are used on the right-hand-side of lookups. It can process plookups. pub trait Machine { diff --git a/src/witness_generator/sorted_witness_machine.rs b/src/witness_generator/machines/sorted_witness_machine.rs similarity index 96% rename from src/witness_generator/sorted_witness_machine.rs rename to src/witness_generator/machines/sorted_witness_machine.rs index 1415dda7b..be1aabc6d 100644 --- a/src/witness_generator/sorted_witness_machine.rs +++ b/src/witness_generator/machines/sorted_witness_machine.rs @@ -2,17 +2,17 @@ use std::collections::{BTreeMap, HashMap, HashSet}; use itertools::{Either, Itertools}; +use super::super::affine_expression::AffineExpression; +use super::Machine; +use super::{EvalResult, FixedData}; use crate::analyzer::{Expression, Identity, IdentityKind, SelectedExpressions}; use crate::number::AbstractNumberType; -use crate::witness_generator::eval_error; - -use super::affine_expression::AffineExpression; -use super::eval_error::EvalError; -use super::expression_evaluator::ExpressionEvaluator; -use super::fixed_evaluator::FixedEvaluator; -use super::machine::Machine; -use super::symbolic_evaluator::SymbolicEvaluator; -use super::{EvalResult, FixedData}; +use crate::witness_generator::{ + eval_error::{self, EvalError}, + expression_evaluator::ExpressionEvaluator, + fixed_evaluator::FixedEvaluator, + symbolic_evaluator::SymbolicEvaluator, +}; /// A machine that can support a lookup in a set of columns that are sorted /// by one specific column and values in that column have to be unique. diff --git a/src/witness_generator/mod.rs b/src/witness_generator/mod.rs index 1d14af836..e7dd78602 100644 --- a/src/witness_generator/mod.rs +++ b/src/witness_generator/mod.rs @@ -9,15 +9,11 @@ use self::util::WitnessColumnNamer; mod affine_expression; mod bit_constraints; -mod double_sorted_witness_machine; mod eval_error; mod expression_evaluator; pub mod fixed_evaluator; -mod fixed_lookup_machine; mod generator; -mod machine; -mod machine_extractor; -mod sorted_witness_machine; +mod machines; pub mod symbolic_evaluator; mod util; @@ -49,8 +45,11 @@ pub fn generate<'a>( witness_ids: witness_cols.iter().map(|w| (w.name, w.id)).collect(), verbose, }; - let (machines, identities) = - machine_extractor::split_out_machines(&fixed, &analyzed.identities, &witness_cols); + let (machines, identities) = machines::machine_extractor::split_out_machines( + &fixed, + &analyzed.identities, + &witness_cols, + ); let (global_bit_constraints, identities) = bit_constraints::determine_global_constraints(&fixed, identities); let mut generator = generator::Generator::new(