mirror of
https://github.com/powdr-labs/powdr.git
synced 2026-05-13 03:00:26 -04:00
Group machines.
This commit is contained in:
@@ -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};
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
@@ -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
|
||||
@@ -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 {
|
||||
@@ -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.
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user