Skip to content

Commit 7278f8a

Browse files
committed
Trust measures
1 parent f79e4ca commit 7278f8a

1 file changed

Lines changed: 6 additions & 9 deletions

File tree

core/src/main/scala/stainless/transformers/PartialEvaluator.scala

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,11 @@ trait PartialEvaluator extends SimplifierWithPC { self =>
3030
case _ => false
3131
} (expr)
3232

33-
def validMeasure: Boolean = {
34-
measureOf(tfd.fullBody) match {
35-
case Some(measure) =>
36-
val nextMeasure = exprOps.replaceFromSymbols(tfd.params.zip(args).toMap, measure)
37-
val query = strictlyPositive(nextMeasure.getType, nextMeasure)
38-
path.implies(query)
39-
40-
case None => false
33+
def validMeasure: Option[Boolean] = {
34+
measureOf(tfd.fullBody) map { measure =>
35+
val nextMeasure = exprOps.replaceFromSymbols(tfd.params.zip(args).toMap, measure)
36+
val query = strictlyPositive(nextMeasure.getType, nextMeasure)
37+
path.implies(query)
4138
}
4239
}
4340

@@ -95,7 +92,7 @@ trait PartialEvaluator extends SimplifierWithPC { self =>
9592

9693
inlined
9794
.filterNot(containsChoose)
98-
.filter(expr => validMeasure || isProductiveUnfolding(expr))
95+
.filter(expr => validMeasure.getOrElse(isProductiveUnfolding(expr)))
9996
.map(unfold)
10097
.getOrElse((
10198
FunctionInvocation(id, tps, rargs).copiedFrom(fi),

0 commit comments

Comments
 (0)