Skip to content
Open
Show file tree
Hide file tree
Changes from 21 commits
Commits
Show all changes
323 commits
Select commit Hold shift + click to select a range
f37f0e4
Apply split.
chriseth Jul 30, 2025
354aa7c
adjustments
chriseth Jul 30, 2025
5757c59
try to support nonzero constants.
chriseth Jul 30, 2025
29b56d4
Compute unique modular solution.
chriseth Jul 31, 2025
59d036b
more impl
chriseth Jul 31, 2025
964bd4a
Merge remote-tracking branch 'origin/main' into quadratic_equiv_revamped
chriseth Jul 31, 2025
de909cd
fix
chriseth Jul 31, 2025
63e74d3
Add some more tests.
chriseth Jul 31, 2025
42437cc
try something
chriseth Jul 31, 2025
cd1103d
Merge remote-tracking branch 'origin/main' into quadratic_equiv_revamped
chriseth Aug 1, 2025
df0d55b
fix
chriseth Aug 1, 2025
035f464
Merge remote-tracking branch 'origin/main' into quadratic_equiv_revamped
chriseth Aug 1, 2025
2a50fec
comment
chriseth Aug 1, 2025
1c0bcf5
debug info.
chriseth Aug 1, 2025
b524f69
remove debug
chriseth Aug 1, 2025
94182fa
Handle negative offset
chriseth Aug 1, 2025
6af1c34
Add constraints.
chriseth Aug 1, 2025
13a1e5c
Update expectations.
chriseth Aug 1, 2025
fe255d0
Merge remote-tracking branch 'origin/main' into seqz
chriseth Aug 4, 2025
8a2cf42
Update expectations.
chriseth Aug 4, 2025
ca42418
Update constraints.
chriseth Aug 4, 2025
d52a893
Merge remote-tracking branch 'origin/main' into quadratic_equiv_revamped
chriseth Aug 4, 2025
417646d
clippy
chriseth Aug 4, 2025
11de0fb
Add test for sltu_2
chriseth Aug 4, 2025
b562ba2
Fix for negative.
chriseth Aug 4, 2025
d817d9b
Update expectations.
chriseth Aug 5, 2025
8afe6fe
Add test case.
chriseth Aug 11, 2025
cdffdee
Extract negation.
chriseth Aug 11, 2025
550019c
Remove negation.
chriseth Aug 11, 2025
8dcde91
Merge remote-tracking branch 'origin/main' into quadratic_equiv_revamped
chriseth Aug 11, 2025
fd12e5d
update constraints
chriseth Aug 11, 2025
db7cbc4
Update expectations.
chriseth Aug 11, 2025
ca5395f
Merge remote-tracking branch 'origin/main' into quadratic_equiv_revamped
chriseth Aug 11, 2025
1a91941
cleanup
chriseth Aug 11, 2025
a54bd4e
Merge remote-tracking branch 'origin/main' into quadratic_equiv_revamped
chriseth Aug 20, 2025
7504689
Update expectations.
chriseth Aug 20, 2025
cd95a52
Update expectations.
chriseth Aug 20, 2025
eab2e3e
Merge remote-tracking branch 'origin/main' into quadratic_equiv_revamped
chriseth Aug 21, 2025
df866be
Move constraint splitting into the solver.
chriseth Aug 21, 2025
02ca577
refactor
chriseth Aug 21, 2025
aa376e0
more
chriseth Aug 21, 2025
1ad6271
more
chriseth Aug 21, 2025
ce4cb1b
more
chriseth Aug 21, 2025
90ac6d9
refactor
chriseth Aug 21, 2025
2b92494
Merge remote-tracking branch 'origin/main' into quadratic_equiv_revamped
chriseth Aug 22, 2025
f1342a4
Negate constant.
chriseth Aug 22, 2025
eefaa24
Un-scope test.
chriseth Aug 22, 2025
4139c68
cleanup
chriseth Aug 22, 2025
0bd3fda
remove comments.
chriseth Aug 22, 2025
922cef9
simplify
chriseth Aug 22, 2025
d14e6ef
remove todo
chriseth Aug 22, 2025
90c91e2
Apply equivalences.
chriseth Aug 22, 2025
5e629e8
Update expectations.
chriseth Aug 22, 2025
a6becf3
Merge remote-tracking branch 'origin/main' into quadratic_equiv_revamped
chriseth Aug 25, 2025
a2969c2
Update expectations.
chriseth Aug 25, 2025
e5077c4
Merge remote-tracking branch 'origin/main' into quadratic_equiv_revamped
chriseth Aug 25, 2025
30ab418
Update expectations.
chriseth Aug 25, 2025
4bf2df4
Merge remote-tracking branch 'origin/main' into quadratic_equiv_revamped
chriseth Aug 26, 2025
a85ba9d
wip
chriseth Aug 26, 2025
35d1c0d
Use RuntimeConstant instead of FieldElement.
chriseth Aug 26, 2025
84e277a
Merge branch 'use_runtime_constant' into quadratic_equiv_revamped
chriseth Aug 26, 2025
4619d3d
Introduce AlgebraicConstraint.
chriseth Aug 26, 2025
624738f
debug
chriseth Aug 26, 2025
c12a7db
Display for Block.
chriseth Aug 26, 2025
6c35d16
Merge branch 'display_for_block' into quadratic_equiv_revamped
chriseth Aug 26, 2025
01f071d
Add test.
chriseth Aug 26, 2025
f02386c
add test
chriseth Aug 26, 2025
d6b6d4d
test.
chriseth Aug 26, 2025
8d7b5c5
Another test.
chriseth Aug 26, 2025
336a25d
simplify test.
chriseth Aug 26, 2025
6111134
Adjust tests.
chriseth Aug 26, 2025
b91f0e7
More restricted.
chriseth Aug 26, 2025
6d0618e
Potential fix.
chriseth Aug 26, 2025
4f065eb
extend
chriseth Aug 27, 2025
07ed16f
update expectations
chriseth Aug 27, 2025
cce9c66
update expectations
chriseth Aug 27, 2025
c4287c7
Add test file.
chriseth Aug 27, 2025
61f0d65
Improve bounds
chriseth Aug 28, 2025
d084ec4
Add test.
chriseth Aug 28, 2025
b328b02
Merge remote-tracking branch 'origin/main' into quadratic_equiv_revamped
chriseth Sep 1, 2025
9e3cd4a
cleanup
chriseth Sep 1, 2025
25e5c04
Only add new constraints.
chriseth Sep 1, 2025
7dec5f0
cleanup
chriseth Sep 1, 2025
0ad5b4d
Merge remote-tracking branch 'origin/main' into quadratic_equiv_revamped
chriseth Sep 1, 2025
e5028f6
cleanup
chriseth Sep 1, 2025
59840e0
Merge remote-tracking branch 'origin/main' into seqz
chriseth Sep 1, 2025
92e77ac
Merge branch 'quadratic_equiv_revamped' into seqz
chriseth Sep 1, 2025
6433555
Re-add new variable and update expectations.
chriseth Sep 1, 2025
5f4ddec
Remove print statements.
chriseth Sep 1, 2025
ac0490a
No need to constrain result.
chriseth Sep 1, 2025
795aa74
Try to figure out if the constraints to delete are redundant.
chriseth Sep 2, 2025
94fc7b5
Explain grouping.
chriseth Sep 2, 2025
6683be7
Update constraint-solver/src/solver/constraint_splitter.rs
chriseth Sep 2, 2025
0902838
Apply suggestion from @Schaeff
chriseth Sep 2, 2025
bddbd5c
Move comment.
chriseth Sep 2, 2025
19be95b
Clarify comment.
chriseth Sep 2, 2025
2f3c075
document
chriseth Sep 2, 2025
3338a8b
avoid clone.
chriseth Sep 2, 2025
5b2e954
Rename tests.
chriseth Sep 2, 2025
ccf14bc
Add some negative tests.
chriseth Sep 2, 2025
e91c4f6
Merge remote-tracking branch 'origin/main' into quadratic_equiv_revamped
chriseth Sep 3, 2025
5cf2b2f
More details for docstring.
chriseth Sep 3, 2025
b479bc9
Do some early range constraint checks.
chriseth Sep 3, 2025
998d31a
Merge remote-tracking branch 'origin/main' into quadratic_equiv_revamped
chriseth Sep 3, 2025
67ed03d
Improvement on checking redundancy.
chriseth Sep 3, 2025
bb0663c
reduce restrictions
chriseth Sep 4, 2025
f695710
Completed "determine_redundancy"
chriseth Sep 4, 2025
ded6df0
Move reachability.
chriseth Sep 4, 2025
b519bfc
Use RuntimeConstant.
chriseth Sep 4, 2025
49729e1
Use indexed system for reachability search.
chriseth Sep 4, 2025
3a37d82
System splitter.
chriseth Sep 4, 2025
54d0168
Move all bounds to where clause.
chriseth Sep 4, 2025
2d474c3
Also return blocking variables as reachable variables.
chriseth Sep 4, 2025
12e4745
Merge branch 'adjust_reachability' into seqz
chriseth Sep 4, 2025
02ef28f
review
chriseth Sep 5, 2025
87698c6
Merge branch 'move_reachability' into adjust_reachability
chriseth Sep 5, 2025
8eb3efd
Merge branch 'move_reachability' into system_splitter
chriseth Sep 5, 2025
542f0b4
Merge branch 'adjust_reachability' into seqz
chriseth Sep 5, 2025
4614cd2
Merge branch 'system_splitter' into seqz
chriseth Sep 5, 2025
aa019bf
Try split system.
chriseth Sep 5, 2025
7bb4a15
cleanup
chriseth Sep 5, 2025
b9e5928
Update expectations.
chriseth Sep 5, 2025
9f03c65
Merge branch 'move_reachability'
chriseth Sep 5, 2025
7b2d553
Merge branch 'main' into adjust_reachability
chriseth Sep 5, 2025
293a32d
Merge branch 'adjust_reachability' into seqz
chriseth Sep 5, 2025
8371de3
Split the function at a different point.
chriseth Sep 5, 2025
7ca2542
Merge branch 'quadratic_equiv_revamped' into seqz
chriseth Sep 5, 2025
4d73c1f
solve merge conflicts.
chriseth Sep 5, 2025
d0188b1
review
chriseth Sep 5, 2025
db7a187
update comment
chriseth Sep 5, 2025
b04c6d2
Merge remote-tracking branch 'origin/main' into quadratic_equiv_revamped
chriseth Sep 9, 2025
639e43f
Merge branch 'adjust_reachability'
chriseth Sep 9, 2025
902a2c5
Merge branch 'main' into system_splitter
chriseth Sep 9, 2025
6ba0ff2
Merge branch 'system_splitter' into seqz
chriseth Sep 9, 2025
6c46216
Merge branch 'quadratic_equiv_revamped' into seqz
chriseth Sep 9, 2025
625ab8f
cleanup
chriseth Sep 9, 2025
df6a955
Merge remote-tracking branch 'origin/main' into seqz
chriseth Sep 9, 2025
913f7f4
'fix' test
chriseth Sep 9, 2025
47016c1
Merge branch 'quadratic_equiv_revamped'
chriseth Sep 15, 2025
c791393
Merge branch 'main' into seqz
chriseth Sep 15, 2025
ac771e9
Merge remote-tracking branch 'origin/main' into seqz
chriseth Sep 16, 2025
2fb1a0a
Add ability to create new variables.
chriseth Sep 16, 2025
98bf73d
Merge branch 'new_var' into seqz
chriseth Sep 17, 2025
696dfcf
Try to derive computation method.
chriseth Sep 17, 2025
19b9483
clippy
chriseth Sep 17, 2025
892cdd4
Try to match pattern.
chriseth Sep 17, 2025
7aed8d1
Relax bounds for GroupedExpression.
chriseth Sep 17, 2025
0e3eb11
Split into parts and relax bounds.
chriseth Sep 17, 2025
da7b969
Relax mul
chriseth Sep 17, 2025
7920df3
Relax mul.
chriseth Sep 17, 2025
606018e
Merge branch 'relax_bounds' into seqz
chriseth Sep 22, 2025
c9d39e2
Revert "Merge branch 'relax_bounds' into seqz"
chriseth Sep 22, 2025
9eed819
Merge remote-tracking branch 'origin/main' into seqz
chriseth Sep 22, 2025
044ea81
Add derived columns.
chriseth Sep 22, 2025
673b4a7
Update computation methods.
chriseth Sep 22, 2025
b2e9897
We usually always mean unknown variables.
chriseth Sep 22, 2025
8eab301
Remove ReferencedSymbols trait.
chriseth Sep 22, 2025
e5ceff7
Some more derived columns work.
chriseth Sep 22, 2025
db01624
Merge remote-tracking branch 'origin/main' into derived_columns
chriseth Sep 23, 2025
2141640
more stuff
chriseth Sep 23, 2025
5696552
Merge branch 'use_unknown_variables'
chriseth Sep 23, 2025
0498d36
Merge branch 'main' into derived_columns
chriseth Sep 23, 2025
fbf1786
clippy
chriseth Sep 23, 2025
baeffe1
Merge remote-tracking branch 'origin/main' into derived_columns
chriseth Sep 24, 2025
16e55c8
docstrings
chriseth Sep 24, 2025
faa6731
more work on derived columns.
chriseth Sep 24, 2025
3fb138f
substitute.
chriseth Sep 24, 2025
71ecdd4
Merge remote-tracking branch 'origin/main' into derived_columns
chriseth Sep 24, 2025
7b54eb5
Remove derived variables.
chriseth Sep 24, 2025
0576c80
fix
chriseth Sep 24, 2025
33e8e06
update type in machine.
chriseth Sep 24, 2025
38099a2
Update cbor files.
chriseth Sep 24, 2025
f467bc8
clippy
chriseth Sep 24, 2025
fc6ebee
Merge remote-tracking branch 'origin/main' into seqz
chriseth Sep 24, 2025
ce8cb7d
Merge branch 'derived_columns' into seqz
chriseth Sep 24, 2025
91224ad
Add derived variable.
chriseth Sep 24, 2025
ec9b5fa
Use range constraints in exhaustive search.
chriseth Oct 9, 2025
d52abf4
clippy
chriseth Oct 9, 2025
cf4c8f0
Test updates.
chriseth Oct 9, 2025
50ef402
fix
chriseth Oct 10, 2025
e64c8f1
Update expectations.
chriseth Oct 10, 2025
f601bd1
more updates.
chriseth Oct 10, 2025
41bdc7e
Add some early return.
chriseth Oct 10, 2025
3a701a0
Track unsuccessful sets.
chriseth Oct 10, 2025
a716ee6
Merge remote-tracking branch 'origin/main' into seqz
chriseth Oct 14, 2025
1abc438
Fix merge problems.
chriseth Oct 14, 2025
eccbff4
Merge remote-tracking branch 'origin/main' into seqz
chriseth Oct 14, 2025
0d546b8
Apply suggestion from @chriseth
chriseth Oct 14, 2025
b09207e
Undo merge problems.
chriseth Oct 14, 2025
90874bc
Merge remote-tracking branch 'origin/main' into use_range_constraints…
chriseth Oct 20, 2025
bdc21a8
Update docstrings.
chriseth Oct 20, 2025
dd7de27
Rename functions.
chriseth Oct 20, 2025
3aa3e96
Review.
chriseth Oct 20, 2025
08ec4bb
Merge remote-tracking branch 'origin/main' into use_range_constraints…
chriseth Oct 20, 2025
ab2bc32
Merge remote-tracking branch 'origin/main' into seqz
chriseth Oct 21, 2025
f865064
Merge remote-tracking branch 'origin/main' into seqz
chriseth Oct 22, 2025
51ab148
Cleanup
chriseth Oct 22, 2025
7503a44
Re-index before split.
chriseth Oct 22, 2025
d9846ba
Optimize system splitting.
chriseth Oct 22, 2025
b327682
Allow iter over hash.
chriseth Oct 22, 2025
29f6870
Clean up comments.
chriseth Oct 22, 2025
5ff42bf
Cleanup
chriseth Oct 23, 2025
c66e937
cleanup
chriseth Oct 23, 2025
716e493
Merge remote-tracking branch 'origin/main' into seqz
chriseth Oct 23, 2025
cb3c6eb
Improve system splitter speed.
chriseth Oct 24, 2025
392d719
Merge remote-tracking branch 'origin/faster_system_splitter' into seqz
chriseth Oct 24, 2025
a727058
update comment.
chriseth Oct 24, 2025
dd1eed3
Another comment update.
chriseth Oct 24, 2025
5973951
Merge branch 'faster_system_splitter' into seqz
chriseth Oct 24, 2025
4bddb1a
Merge remote-tracking branch 'origin/main' into seqz
chriseth Oct 24, 2025
199f179
Merge remote-tracking branch 'origin/main' into seqz
chriseth Oct 29, 2025
9b14805
Update expectations.
chriseth Oct 29, 2025
f138fb0
Document and tune.
chriseth Oct 29, 2025
3fce698
Update expectations.
chriseth Oct 29, 2025
52f3726
Fix merge conflict.
chriseth Oct 29, 2025
d1731ed
fix
chriseth Oct 29, 2025
7d170ac
Reduce changes to outside code.
chriseth Oct 29, 2025
e9133b6
Use existing column allocator.
chriseth Oct 29, 2025
e41f566
Adjust expectations.
chriseth Oct 29, 2025
b6057d7
Update expectations.
chriseth Oct 29, 2025
3c4fb10
Extend product combination.
chriseth Oct 30, 2025
ea6688c
Merge remote-tracking branch 'origin/main' into seqz
chriseth Oct 30, 2025
968689d
Merge remote-tracking branch 'origin/main' into use_range_constraints…
chriseth Oct 30, 2025
d9127d1
Merge branch 'use_range_constraints_in_exhaustive_search' into seqz
chriseth Oct 30, 2025
5ec7e4e
Undo change to range constraints.
chriseth Oct 30, 2025
064ee28
cleanup
chriseth Oct 31, 2025
a8780b4
cleanup
chriseth Oct 31, 2025
366a325
Fixes.
chriseth Oct 31, 2025
795d3bf
fix
chriseth Oct 31, 2025
2e1684d
Fix?
chriseth Oct 31, 2025
a7cf50c
simplify
chriseth Nov 3, 2025
7139a42
Adjust mask after addition.
chriseth Nov 3, 2025
83e7b2c
cleanup
chriseth Nov 3, 2025
c8881cb
Adjust mask after addition.
chriseth Nov 3, 2025
22bb850
Merge branch 'adjust_mask_after_addition' into seqz
chriseth Nov 3, 2025
ef60ba5
Avoid conjunctions.
chriseth Nov 3, 2025
03dc6ae
cleanup
chriseth Nov 3, 2025
6737ff6
Merge remote-tracking branch 'origin/main' into use_range_constraints…
chriseth Nov 3, 2025
c26f42c
Update expectations.
chriseth Nov 3, 2025
3536d07
Merge remote-tracking branch 'origin/main' into use_range_constraints…
chriseth Nov 4, 2025
0bf6a5d
Merge remote-tracking branch 'origin/main' into use_range_constraints…
chriseth Nov 4, 2025
93edd6f
Merge branch 'use_range_constraints_in_exhaustive_search'
chriseth Nov 5, 2025
add2adb
Merge branch 'main' into seqz
chriseth Nov 5, 2025
25755d6
Fix clippy.
chriseth Nov 5, 2025
a6aa4dd
Update constraint-solver/src/solver/base.rs
chriseth Nov 7, 2025
c97a173
Update autoprecompiles/src/constraint_optimizer/equal_zero_checks.rs
chriseth Nov 7, 2025
f1edea9
Update autoprecompiles/src/constraint_optimizer/equal_zero_checks.rs
chriseth Nov 7, 2025
ccc46b9
Update autoprecompiles/src/constraint_optimizer/equal_zero_checks.rs
chriseth Nov 7, 2025
1e53628
Review comments.
chriseth Nov 7, 2025
80f155a
Merge branch 'seqz' of ssh://github.com/powdr-labs/powdr into seqz
chriseth Nov 7, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
76 changes: 44 additions & 32 deletions autoprecompiles/src/constraint_optimizer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,23 @@ use std::{collections::HashSet, fmt::Display, hash::Hash};
use inliner::DegreeBound;
use num_traits::Zero;
use powdr_constraint_solver::{
constraint_system::BusInteractionHandler, grouped_expression::GroupedExpression, inliner,
journaling_constraint_system::JournalingConstraintSystem, solver::solve_system,
constraint_system::{BusInteractionHandler, ConstraintSystem},
grouped_expression::GroupedExpression,
inliner,
journaling_constraint_system::JournalingConstraintSystem,
solver::solve_system,
};
use powdr_number::FieldElement;

use crate::stats_logger::StatsLogger;
use crate::{
constraint_optimizer::{
equal_zero_checks::replace_equal_zero_checks, reachability::reachable_variables,
},
stats_logger::StatsLogger,
};

mod equal_zero_checks;
mod reachability;

#[derive(Debug)]
pub enum Error {
Expand All @@ -32,6 +43,7 @@ pub fn optimize_constraints<P: FieldElement, V: Ord + Clone + Eq + Hash + Displa
bus_interaction_handler: impl BusInteractionHandler<P> + IsBusStateful<P> + Clone,
degree_bound: DegreeBound,
stats_logger: &mut StatsLogger,
new_var: &mut impl FnMut() -> V,
) -> Result<JournalingConstraintSystem<P, V>, Error> {
let constraint_system =
solver_based_optimization(constraint_system, bus_interaction_handler.clone())?;
Expand All @@ -41,6 +53,9 @@ pub fn optimize_constraints<P: FieldElement, V: Ord + Clone + Eq + Hash + Displa
remove_disconnected_columns(constraint_system, bus_interaction_handler.clone());
stats_logger.log("removing disconnected columns", &constraint_system);

let constraint_system =
replace_equal_zero_checks(constraint_system, bus_interaction_handler.clone(), new_var);

let constraint_system =
inliner::replace_constrained_witness_columns(constraint_system, degree_bound);
stats_logger.log("in-lining witness columns", &constraint_system);
Expand Down Expand Up @@ -84,36 +99,18 @@ fn solver_based_optimization<T: FieldElement, V: Clone + Ord + Hash + Display>(
/// change the statement being proven.
fn remove_disconnected_columns<T: FieldElement, V: Clone + Ord + Hash + Display>(
mut constraint_system: JournalingConstraintSystem<T, V>,
bus_interaction_handler: impl IsBusStateful<T>,
bus_interaction_handler: impl IsBusStateful<T> + Clone,
) -> JournalingConstraintSystem<T, V> {
// Initialize variables_to_keep with any variables that appear in stateful bus interactions.
let mut variables_to_keep = constraint_system
.system()
.bus_interactions
.iter()
.filter(|bus_interaction| {
let bus_id = bus_interaction.bus_id.try_to_number().unwrap();
bus_interaction_handler.is_stateful(bus_id)
})
.flat_map(|bus_interaction| bus_interaction.referenced_variables())
.cloned()
.collect::<HashSet<_>>();

// Any variable that is connected to a variable in variables_to_keep must also be kept.
loop {
let size_before = variables_to_keep.len();
for expr in constraint_system.system().iter() {
if expr
.referenced_variables()
.any(|var| variables_to_keep.contains(var))
{
variables_to_keep.extend(expr.referenced_variables().cloned());
}
}
if variables_to_keep.len() == size_before {
break;
}
}
let initial_variables = variables_in_stateful_bus_interactions(
constraint_system.system(),
bus_interaction_handler.clone(),
)
.cloned();
let variables_to_keep = reachable_variables(
initial_variables,
std::iter::empty(),
constraint_system.system(),
);

constraint_system.retain_algebraic_constraints(|constraint| {
constraint
Expand All @@ -134,6 +131,21 @@ fn remove_disconnected_columns<T: FieldElement, V: Clone + Ord + Hash + Display>
constraint_system
}

/// Returns an iterator over all variables that are referenced in stateful bus interactions.
fn variables_in_stateful_bus_interactions<'a, P: FieldElement, V: Ord + Clone + Eq + Hash>(
constraint_system: &'a ConstraintSystem<P, V>,
bus_interaction_handler: impl IsBusStateful<P> + 'a,
) -> impl Iterator<Item = &'a V> {
constraint_system
.bus_interactions
.iter()
.filter(move |bus_interaction| {
let bus_id = bus_interaction.bus_id.try_to_number().unwrap();
bus_interaction_handler.is_stateful(bus_id)
})
.flat_map(|bus_interaction| bus_interaction.referenced_variables())
}

fn remove_trivial_constraints<P: FieldElement, V: PartialEq + Clone + Hash + Ord>(
mut constraint_system: JournalingConstraintSystem<P, V>,
) -> JournalingConstraintSystem<P, V> {
Expand Down
Loading
Loading