Group machines.

This commit is contained in:
chriseth
2023-03-28 17:10:26 +02:00
parent f769f2a865
commit c1fab9603e
7 changed files with 39 additions and 34 deletions

View File

@@ -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};

View File

@@ -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

View File

@@ -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.

View File

@@ -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

View File

@@ -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 {

View File

@@ -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.

View File

@@ -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(