Skip to content

Commit 334ff7e

Browse files
committed
Refactor Simplification Passes
1 parent f4250de commit 334ff7e

1 file changed

Lines changed: 12 additions & 12 deletions

File tree

liquidjava-verifier/src/main/java/liquidjava/rj_language/opt/VCSimplification.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
11
package liquidjava.rj_language.opt;
22

3+
import java.util.List;
4+
import java.util.function.UnaryOperator;
5+
36
import liquidjava.processor.VCImplication;
47

58
/**
69
* Simplifies VCImplication chains by applying various simplification steps
710
*/
811
public class VCSimplification {
912

13+
private static final List<UnaryOperator<VCImplication>> PASSES = List.of(VCSubstitution::apply, VCFolding::apply,
14+
VCArithmeticSimplification::apply);
15+
1016
/**
1117
* Applies all available simplification steps to a VC chain until a fixed point is reached
1218
*/
@@ -31,17 +37,11 @@ public static VCImplication simplifyOnce(VCImplication implication) {
3137
if (implication == null)
3238
return null;
3339

34-
// substitution
35-
VCImplication substituted = VCSubstitution.apply(implication);
36-
if (!implication.equals(substituted))
37-
return substituted;
38-
39-
// folding
40-
VCImplication folded = VCFolding.apply(implication);
41-
if (!implication.equals(folded))
42-
return folded;
43-
44-
// arithmetic simplification
45-
return VCArithmeticSimplification.apply(implication);
40+
for (UnaryOperator<VCImplication> pass : PASSES) {
41+
VCImplication simplified = pass.apply(implication);
42+
if (!implication.equals(simplified))
43+
return simplified;
44+
}
45+
return implication;
4646
}
4747
}

0 commit comments

Comments
 (0)