@@ -40,6 +40,7 @@ abstract class ProverStdIO(uniqueId: String,
4040 protected var output : PrintWriter = _
4141
4242 var proverPath : Path = _
43+ var lastReasonUnknown : String = _
4344 var lastModel : String = _
4445
4546 def exeEnvironmentalVariable : String
@@ -252,6 +253,7 @@ abstract class ProverStdIO(uniqueId: String,
252253
253254 if (! result) {
254255 retrieveAndSaveModel()
256+ retrieveReasonUnknown()
255257 }
256258
257259 pop()
@@ -285,6 +287,16 @@ abstract class ProverStdIO(uniqueId: String,
285287 }
286288 }
287289
290+ protected def retrieveReasonUnknown (): Unit = {
291+ if (Verifier .config.reportReasonUnknown()) {
292+ writeLine(" (get-info :reason-unknown)" )
293+ var result = readLine()
294+ if (result.startsWith(" (:reason-unknown \" " ))
295+ result = result.substring(18 , result.length - 2 )
296+ lastReasonUnknown = result
297+ }
298+ }
299+
288300 override def hasModel (): Boolean = {
289301 lastModel != null
290302 }
@@ -474,5 +486,10 @@ abstract class ProverStdIO(uniqueId: String,
474486
475487 override def getModel (): Model = Model (lastModel)
476488
477- override def clearLastModel (): Unit = lastModel = null
489+ override def getReasonUnknown (): String = lastReasonUnknown
490+
491+ override def clearLastAssert (): Unit = {
492+ lastReasonUnknown = null
493+ lastModel = null
494+ }
478495}
0 commit comments