carbon icon indicating copy to clipboard operation
carbon copied to clipboard

Counterexample extraction fails due to Boogie

Open aterga opened this issue 4 years ago • 0 comments

Asking Carbon to produce counterexamples for the following program results in a crash:

function hello(x: Int): Int
method problematic() {
	var x: Int
	assert x == hello(x);
}

When running with options --counterexample variables, the trace looks like this:

      scala.None$.get(Option.scala:349)
      scala.None$.get(Option.scala:347)
      viper.carbon.boogie.BoogieModelTransformer$.transformCounterexample(BoogieModelTransformer.scala:20)
      viper.carbon.CarbonVerifier.$anonfun$verify$3(CarbonVerifier.scala:202)
      viper.carbon.CarbonVerifier.$anonfun$verify$3$adapted(CarbonVerifier.scala:202)
      scala.collection.Iterator.foreach(Iterator.scala:937)
      scala.collection.Iterator.foreach$(Iterator.scala:937)
      scala.collection.AbstractIterator.foreach(Iterator.scala:1425)
      scala.collection.IterableLike.foreach(IterableLike.scala:70)
      scala.collection.IterableLike.foreach$(IterableLike.scala:69)
      scala.collection.AbstractIterable.foreach(Iterable.scala:54)
      viper.carbon.CarbonVerifier.verify(CarbonVerifier.scala:202)

Switching to ``--counterexample native``` results in

Internal error: An internal error occurred. Found an unparsable output from Boogie: Prover error: Model parsing error: Invalid model: invalid element name 1.0, at line 3 (FullPerm -> 1.0) (<no position>)
Internal error: An internal error occurred. Found an unparsable output from Boogie: Prover error: Could not parse any models (<no position>)
Internal error: An internal error occurred. Found 3 errors, but there should be 1. The output was: Boogie program verifier version 2.3.0.61016, Copyright (c) 2003-2014, Microsoft.\nProver error: Model parsing error: Invalid model: invalid element name 1.0, at line 3 (FullPerm -> 1.0)\nProver error: Could not parse any models\n  Assert might fail. Assertion x == hello(x) might not hold. ([email protected]) [5]\n\nBoogie program verifier finished with 1 verified, 1 error\n (<no position>)

Silicon manages to produce counterexamples for both values of --counterexample.

aterga avatar Nov 25 '20 16:11 aterga