Skip to content
Snippets Groups Projects
Commit 77a19904 authored by Etienne Kneuss's avatar Etienne Kneuss
Browse files

It might be that the counter example does not specify some input variables if...

It might be that the counter example does not specify some input variables if they are not used in the formula.
parent b1029dcc
No related branches found
No related tags found
No related merge requests found
......@@ -191,7 +191,9 @@ case object CEGIS extends Rule("CEGIS", 150) {
//println("#"*80)
val invalidModel = solver2.getModel
val fixedAss = And(ass.map(a => Equals(Variable(a), invalidModel(a))).toSeq)
val fixedAss = And(ass.collect {
case a if invalidModel contains a => Equals(Variable(a), invalidModel(a))
}.toSeq)
solver1.push()
solver1.assertCnstr(fixedAss)
......@@ -222,7 +224,10 @@ case object CEGIS extends Rule("CEGIS", 150) {
} else {
val freshCss = unrolling.css.map(c => c -> Variable(FreshIdentifier(c.name, true).setType(c.getType))).toMap
val ceIn = ass.map(id => id -> invalidModel(id))
val ceIn = ass.collect {
case id if invalidModel contains id => id -> invalidModel(id)
}
val counterexemple = substAll(freshCss ++ ceIn, And(Seq(unrolling.program, unrolling.phi)))
solver1.assertCnstr(counterexemple)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment