From 77a1990461865ca81ebb0b9748e3b9eeaf7c8271 Mon Sep 17 00:00:00 2001 From: Etienne Kneuss <ekneuss@gmail.com> Date: Sat, 15 Dec 2012 03:01:03 +0100 Subject: [PATCH] It might be that the counter example does not specify some input variables if they are not used in the formula. --- src/main/scala/leon/synthesis/rules/Cegis.scala | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/scala/leon/synthesis/rules/Cegis.scala b/src/main/scala/leon/synthesis/rules/Cegis.scala index 6dd2b83b6..cfa39a2d6 100644 --- a/src/main/scala/leon/synthesis/rules/Cegis.scala +++ b/src/main/scala/leon/synthesis/rules/Cegis.scala @@ -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) -- GitLab