1414import liquidjava .processor .context .Context ;
1515import liquidjava .utils .TestUtils ;
1616
17- class VCConstraintEliminationTest {
17+ class VCConstraintSimplificationTest {
1818
19- private final VCConstraintElimination constraintElimination = new VCConstraintElimination ();
19+ private final VCConstraintSimplification simplification = new VCConstraintSimplification ();
2020
2121 @ BeforeEach
2222 void setUpContext () {
@@ -31,42 +31,45 @@ void resetContext() {
3131 }
3232
3333 @ Test
34- void removesConstraintImpliedByLaterAntecedent () {
35- assertSimplificationSteps (constraintElimination ,
34+ void simplifiesConstraintImpliedByLaterAntecedent () {
35+ assertSimplificationSteps (simplification ,
3636 vc ("∀x:int. x > 0" , "∀cond:boolean. x > 1" , "∀y:int. y == x + 1" , "y < 0" ),
37- step ("x > 1" , "y == x + 1" , "y < 0" ));
37+ step ("true" , " x > 1" , "y == x + 1" , "y < 0" ));
3838 }
3939
4040 @ Test
41- void preservesBinderOnStrongerConstraint () {
42- VCImplication simplified = constraintElimination
41+ void preservesBothBindersWhenSimplifyingConstraint () {
42+ VCImplication simplified = simplification
4343 .apply (vc ("∀x:int. x > 0" , "∀cond:boolean. x > 1" , "∀y:int. y == x + 1" , "y < 0" ));
4444
4545 assertTrue (simplified .hasBinder ());
4646 assertEquals ("x" , simplified .getName ());
4747 assertEquals ("int" , simplified .getType ().getQualifiedName ());
48+ assertTrue (simplified .getNext ().hasBinder ());
49+ assertEquals ("cond" , simplified .getNext ().getName ());
50+ assertEquals ("boolean" , simplified .getNext ().getType ().getQualifiedName ());
4851 }
4952
5053 @ Test
5154 void keepsConstraintThatIsNotImpliedByLaterAntecedent () {
52- assertSimplificationSteps (constraintElimination , vc ("∀x:int. x > 1" , "x > 0" , "y > 0" ),
55+ assertSimplificationSteps (simplification , vc ("∀x:int. x > 1" , "x > 0" , "y > 0" ),
5356 step ("x > 1" , "x > 0" , "y > 0" ));
5457 }
5558
5659 @ Test
5760 void ignoresUnrelatedLaterAntecedent () {
58- assertSimplificationSteps (constraintElimination , vc ("∀x:int. x > 0" , "y > 1" , "x + y > 0" ),
61+ assertSimplificationSteps (simplification , vc ("∀x:int. x > 0" , "y > 1" , "x + y > 0" ),
5962 step ("x > 0" , "y > 1" , "x + y > 0" ));
6063 }
6164
6265 @ Test
63- void doesNotUseConclusionToEliminateConstraint () {
64- assertSimplificationSteps (constraintElimination , vc ("∀x:int. x > 0" , "x > 1" ), step ("x > 0" , "x > 1" ));
66+ void doesNotUseConclusionToSimplifyConstraint () {
67+ assertSimplificationSteps (simplification , vc ("∀x:int. x > 0" , "x > 1" ), step ("x > 0" , "x > 1" ));
6568 }
6669
6770 @ Test
68- void removesOnlyFirstImpliedConstraint () {
69- assertSimplificationSteps (constraintElimination , vc ("∀x:int. x > 0" , "x > 1" , "x > 2" , "y > 0" ),
70- step ("x > 1" , "x > 2" , "y > 0" ), step ("x > 2" , "y > 0" ));
71+ void simplifiesOnlyFirstImpliedConstraint () {
72+ assertSimplificationSteps (simplification , vc ("∀x:int. x > 0" , "x > 1" , "x > 2" , "y > 0" ),
73+ step ("true" , " x > 1" , "x > 2" , "y > 0" ), step ("true" , "x > 2" , "y > 0" ));
7174 }
7275}
0 commit comments