Introduce array access VC in DefaultTactic
Previously, array access were generated via a code transformation in ArrayTransformation in xlang, where Array Select and Update were wrapped in if-then-else with an Error in the else branch. They are now natively supported in VC generation. Some testcases --- that would trigger bugs when --xlang is not used with functional array ---- are included in this commit The commit introduces a new abstraction to traverse Leon trees and collect path conditions. This traverser is used for the implementation of the VC generation for arrays.
Showing
- src/main/scala/leon/purescala/TreeOps.scala 21 additions, 0 deletionssrc/main/scala/leon/purescala/TreeOps.scala
- src/main/scala/leon/verification/DefaultTactic.scala 54 additions, 36 deletionssrc/main/scala/leon/verification/DefaultTactic.scala
- src/main/scala/leon/xlang/ArrayTransformation.scala 1 addition, 30 deletionssrc/main/scala/leon/xlang/ArrayTransformation.scala
- src/test/resources/regression/verification/purescala/invalid/Array1.scala 11 additions, 0 deletions...es/regression/verification/purescala/invalid/Array1.scala
- src/test/resources/regression/verification/purescala/invalid/Array2.scala 12 additions, 0 deletions...es/regression/verification/purescala/invalid/Array2.scala
- src/test/resources/regression/verification/purescala/invalid/Array3.scala 12 additions, 0 deletions...es/regression/verification/purescala/invalid/Array3.scala
- src/test/resources/regression/verification/purescala/invalid/Array4.scala 12 additions, 0 deletions...es/regression/verification/purescala/invalid/Array4.scala
- src/test/resources/regression/verification/xlang/invalid/Array6.scala 13 additions, 0 deletions...ources/regression/verification/xlang/invalid/Array6.scala
Loading
Please register or sign in to comment