Allow onSuccess to fail. This is necessary to prevent soundness issues.
The synthesizer used to generate wrong programs by generating inductive programs with an impossible base-case. onSuccess on inductive rules now prevents this by checking that sufficiently many cases have precondition == true. Otherwise, onSuccess fails. This last-moment failure is now handled correctly. Strenghten precondition
Showing
- src/main/scala/leon/synthesis/Heuristics.scala 2 additions, 2 deletionssrc/main/scala/leon/synthesis/Heuristics.scala
- src/main/scala/leon/synthesis/Rules.scala 9 additions, 7 deletionssrc/main/scala/leon/synthesis/Rules.scala
- src/main/scala/leon/synthesis/Solution.scala 0 additions, 5 deletionssrc/main/scala/leon/synthesis/Solution.scala
- src/main/scala/leon/synthesis/heuristics/ADTInduction.scala 17 additions, 7 deletionssrc/main/scala/leon/synthesis/heuristics/ADTInduction.scala
- src/main/scala/leon/synthesis/heuristics/IntInduction.scala 23 additions, 17 deletionssrc/main/scala/leon/synthesis/heuristics/IntInduction.scala
- src/main/scala/leon/synthesis/rules/ADTSplit.scala 2 additions, 2 deletionssrc/main/scala/leon/synthesis/rules/ADTSplit.scala
- src/main/scala/leon/synthesis/rules/Assert.scala 2 additions, 2 deletionssrc/main/scala/leon/synthesis/rules/Assert.scala
- src/main/scala/leon/synthesis/rules/CaseSplit.scala 3 additions, 3 deletionssrc/main/scala/leon/synthesis/rules/CaseSplit.scala
- src/main/scala/leon/synthesis/rules/EqualitySplit.scala 3 additions, 3 deletionssrc/main/scala/leon/synthesis/rules/EqualitySplit.scala
- src/main/scala/leon/synthesis/rules/IntegerEquation.scala 10 additions, 8 deletionssrc/main/scala/leon/synthesis/rules/IntegerEquation.scala
- src/main/scala/leon/synthesis/rules/IntegerInequalities.scala 6 additions, 5 deletions...main/scala/leon/synthesis/rules/IntegerInequalities.scala
- src/main/scala/leon/synthesis/rules/OnePoint.scala 6 additions, 4 deletionssrc/main/scala/leon/synthesis/rules/OnePoint.scala
- src/main/scala/leon/synthesis/rules/UnconstrainedOutput.scala 3 additions, 3 deletions...main/scala/leon/synthesis/rules/UnconstrainedOutput.scala
- src/main/scala/leon/synthesis/search/AndOrGraph.scala 11 additions, 3 deletionssrc/main/scala/leon/synthesis/search/AndOrGraph.scala
Loading
Please register or sign in to comment