Skip to content

Commit 4b38080

Browse files
committed
Code Refactoring
1 parent ef89dbf commit 4b38080

2 files changed

Lines changed: 9 additions & 26 deletions

File tree

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

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import liquidjava.processor.VCImplication;
88
import liquidjava.rj_language.Predicate;
99
import liquidjava.rj_language.SimplifiedPredicate;
10+
import liquidjava.rj_language.SimplifiedPredicate.Binder;
1011
import liquidjava.rj_language.ast.BinaryExpression;
1112
import liquidjava.rj_language.ast.Expression;
1213
import liquidjava.rj_language.ast.Var;
@@ -81,7 +82,7 @@ private static VCImplication substitute(VCImplication implication, VCImplication
8182
*/
8283
private static Predicate substituteRefinement(Predicate refinement, VCImplication source, Expression value) {
8384
Expression active = activeExpression(refinement);
84-
SimplifiedPredicate.Binder binder = new SimplifiedPredicate.Binder(source.getName(), source.getType());
85+
Binder binder = new Binder(source.getName(), source.getType());
8586
Expression substituted = active.substitute(new Var(binder.getName()), value.clone());
8687

8788
return new SimplifiedPredicate(new Predicate(substituted), originPredicate(refinement),
@@ -109,7 +110,7 @@ private static Predicate originPredicate(Predicate refinement) {
109110
/**
110111
* Builds the binder metadata after one substitution
111112
*/
112-
private static List<SimplifiedPredicate.Binder> bindersAfterSubstitution(Predicate refinement, Expression active,
113+
private static List<Binder> bindersAfterSubstitution(Predicate refinement, Expression active,
113114
SimplifiedPredicate.Binder binder) {
114115
List<SimplifiedPredicate.Binder> binders = refinement instanceof SimplifiedPredicate previous
115116
? new ArrayList<>(previous.getBinders()) : new ArrayList<>();
@@ -158,14 +159,14 @@ private static Optional<Substitution> getSubstitution(VCImplication implication)
158159
/**
159160
* Checks whether an expression is a variable with a given name
160161
*/
161-
private static boolean isVar(Expression expression, String name) {
162+
public static boolean isVar(Expression expression, String name) {
162163
return expression instanceof Var var && name.equals(var.getName());
163164
}
164165

165166
/**
166167
* Checks whether an expression contains a variable name
167168
*/
168-
private static boolean containsVariable(Expression expression, String name) {
169+
public static boolean containsVariable(Expression expression, String name) {
169170
List<String> names = new ArrayList<>();
170171
expression.getVariableNames(names);
171172
return names.contains(name);
@@ -174,7 +175,7 @@ private static boolean containsVariable(Expression expression, String name) {
174175
/**
175176
* Returns the expression used for matching and substitution
176177
*/
177-
private static Expression activeExpression(Predicate refinement) {
178+
public static Expression activeExpression(Predicate refinement) {
178179
if (refinement instanceof SimplifiedPredicate simplified)
179180
return simplified.getSimplifiedPredicate().getExpression().clone();
180181
return refinement.getExpression().clone();

liquidjava-verifier/src/test/java/liquidjava/rj_language/opt/VCSimplificationPropertyBasedTest.java

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

3-
import static liquidjava.utils.VCTestUtils.vc;
3+
import static liquidjava.rj_language.opt.VCSubstitution.activeExpression;
4+
import static liquidjava.rj_language.opt.VCSubstitution.containsVariable;
5+
import static liquidjava.rj_language.opt.VCSubstitution.isVar;
46
import static org.junit.jupiter.api.Assertions.assertTrue;
57

68
import com.pholser.junit.quickcheck.From;
79
import com.pholser.junit.quickcheck.Property;
810
import com.pholser.junit.quickcheck.runner.JUnitQuickcheck;
9-
import java.util.ArrayList;
10-
import java.util.List;
1111
import liquidjava.processor.VCImplication;
1212
import liquidjava.processor.context.Context;
1313
import liquidjava.rj_language.Predicate;
14-
import liquidjava.rj_language.SimplifiedPredicate;
1514
import liquidjava.rj_language.ast.BinaryExpression;
1615
import liquidjava.rj_language.ast.Expression;
17-
import liquidjava.rj_language.ast.Var;
1816
import liquidjava.smt.SMTEvaluator;
1917
import liquidjava.smt.SMTResult;
2018
import liquidjava.utils.TestUtils;
@@ -108,20 +106,4 @@ private static void assertImplies(Predicate antecedent, Predicate consequent, VC
108106
+ unsimplified + "\nsimplified: " + simplified, e);
109107
}
110108
}
111-
112-
private static boolean isVar(Expression expression, String name) {
113-
return expression instanceof Var var && name.equals(var.getName());
114-
}
115-
116-
private static boolean containsVariable(Expression expression, String name) {
117-
List<String> names = new ArrayList<>();
118-
expression.getVariableNames(names);
119-
return names.contains(name);
120-
}
121-
122-
private static Expression activeExpression(Predicate predicate) {
123-
if (predicate instanceof SimplifiedPredicate simplified)
124-
return simplified.getSimplifiedPredicate().getExpression();
125-
return predicate.getExpression();
126-
}
127109
}

0 commit comments

Comments
 (0)