Skip to content

Commit 5617e52

Browse files
committed
Simplified path condition form for nested-if statements.
1 parent bcbbfb3 commit 5617e52

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

shared/src/main/scala/org/sireum/logika/Logika.scala

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ object Logika {
4646

4747
type Bindings = Map[String, (State.Value.Sym, AST.Typed, Position)]
4848

49-
type LeafClaims = ISZ[(State.Claim, ISZ[(State.Status.Type, ISZ[State.Claim])])]
49+
type LeafClaims = ISZ[(State.Claim.And, ISZ[(State.Status.Type, ISZ[State.Claim])])]
5050

5151
type Assignment = ISZ[B]
5252

@@ -4326,7 +4326,7 @@ import Util._
43264326

43274327
def evalBranch(isMatch: B, split: Split.Type, smt2: Smt2, cache: Logika.Cache, rtCheck: B, s0: State,
43284328
lcontext: ISZ[String], branches: ISZ[Branch], i: Z, rOpt: Option[State.Value.Sym],
4329-
reporter: Reporter): (Z, Option[(State.Claim, ISZ[(State.Status.Type, ISZ[State.Claim])])]) = {
4329+
reporter: Reporter): (Z, Option[(State.Claim.And, ISZ[(State.Status.Type, ISZ[State.Claim])])]) = {
43304330
val shouldSplit: B = split match {
43314331
case Split.Default => config.splitAll || (isMatch && config.splitMatch)
43324332
case Split.Enabled => T
@@ -4339,7 +4339,7 @@ import Util._
43394339
State.Claim.Prop(T, sym))
43404340
val pos = sym.pos
43414341
val posOpt: Option[Position] = Some(pos)
4342-
val s1 = s0.addClaim(cond)
4342+
val s1 = s0.addClaims(cond.claims)
43434343
if (s1.ok) {
43444344
if (smt2.sat(context.methodName, config, cache, T,
43454345
s"$title at [${pos.beginLine}, ${pos.beginColumn}]", pos, s1.claims, reporter)) {
@@ -4378,7 +4378,7 @@ import Util._
43784378
(allReturns && config.branchPar == Config.BranchPar.OnlyAllReturns))) {
43794379
val inputs: ISZ[Z] = branches.indices
43804380

4381-
def computeBranch(i: Z): (Option[(State.Claim, ISZ[(State.Status.Type, ISZ[State.Claim])])], Z, Smt2) = {
4381+
def computeBranch(i: Z): (Option[(State.Claim.And, ISZ[(State.Status.Type, ISZ[State.Claim])])], Z, Smt2) = {
43824382
val rep = reporter.empty
43834383
val lsmt2 = smt2
43844384
val (nextFresh, lcsOpt) = evalBranch(isMatch, split, lsmt2, cache, rtCheck, s0, lcontext, branches, i, rOpt, rep)
@@ -4409,7 +4409,7 @@ import Util._
44094409
assert(gap >= 0)
44104410
if ((!allReturns || config.interp || context.hasInline) && gap > 0) {
44114411
val rw = Util.SymAddRewriter(s0.nextFresh, nextFreshGap, jescmPlugins._4)
4412-
val newCond = rw.transformStateClaim(cond).getOrElseEager(cond)
4412+
val newCond = rw.transformStateClaim(cond).getOrElseEager(cond).asInstanceOf[State.Claim.And]
44134413
var newClaimss = ISZ[(State.Status.Type, ISZ[State.Claim])]()
44144414
for (statusClaims <- claimss) {
44154415
newClaimss = newClaimss :+ ((statusClaims._1, for (claim <- statusClaims._2) yield
@@ -4458,7 +4458,7 @@ import Util._
44584458
newScss = newScss :+ (scs :+ ((cond, claims)))
44594459
} else {
44604460
r = r :+ s0(status = status, claims = (ops.ISZOps(claims).slice(0, s0.claims.size) :+ cond) ++
4461-
ops.ISZOps(claims).slice(s0.claims.size + 1, claims.size))
4461+
ops.ISZOps(claims).slice(s0.claims.size + cond.claims.size, claims.size))
44624462
}
44634463
}
44644464
}

0 commit comments

Comments
 (0)