Skip to content

Conversation

@Schaeff
Copy link
Collaborator

@Schaeff Schaeff commented Dec 4, 2025

A collection of suggestions on top of #3461

@Schaeff Schaeff changed the base branch from main to collect-empirical-constraints December 4, 2025 16:55
/// (most of the time), but are not guaranteed to hold in all cases.
#[derive(Serialize, Deserialize, Clone, Default, Debug)]
#[derive(Serialize, Default, Debug)]
pub struct EmpiricalConstraints {
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Merge DebugInfo into EmpiricalConstraints to simplify return types

}

#[derive(PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize, Debug, Copy, Clone)]
pub struct BlockCell {
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Introduce type for the equivalence class members, aka cells of a block execution

Comment on lines 110 to 111
/// - It cannot be empty
/// - It cannot hold a single element
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead of filtering out equivalence classes, keep them out by construction

Id: Eq + Hash + Copy + Ord,
{
pub fn intersect_partitions<T: Eq + Hash + Copy + Ord>(
partitions: Vec<EquivalenceClasses<T>>,
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

move

}
let main = proving_context.common_main.as_ref().unwrap();
assert_eq!(main.width, column_names.len());
let (symbolic_machine, _) = airs.machine_by_insertion_idx.get(air_id).unwrap();
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

With this change to the extraction, we can access the instruction machine by air_id, so we can run the analysis on SymbolicMachine which is cleaner than on the column names.

}

impl<'a> ConcreteBlock<'a> {
fn equivalence_classes(&self) -> EquivalenceClasses<BlockCell> {
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Moved out of ConstraintDetector into this implementation

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants