Skip to content
Snippets Groups Projects
  1. Jan 14, 2013
  2. Jan 12, 2013
    • Philippe Suter's avatar
      Termination checker. · 47f8001c
      Philippe Suter authored
      This commit introduces a termination checker. Needless to say, it is
      rather primitive. The goal is rather to set up the interfaces, and to
      have something that can immediately prove the most obvious cases. The
      current `SimpleTerminationChecker` implementation computes
      strongly-connected components, and proves that a function `f` terminates
      for all inputs if and only if:
      
        1. `f` has a body
        2. `f` has no precondition
        3. `f` calls only functions that terminate for all inputs or itself
            and, whenever `f` calls itself, it decreases one of its algebraic
            data type arguments.
      
      The astute reader will note that in particular,
      `SimpleTerminationChecker` cannot prove anything about:
      
        1. functions with a precondition
        2. mutually recursive functions
        3. recursive functions that operate on integers only
      
      I am confident that this simple termination checker will pave the way
      for future implementations, though, and that we will end up re-inventing
      the wheel so many times that we'll be able to equip many trains.
      47f8001c
  3. Jan 11, 2013
    • Viktor Kuncak's avatar
    • Viktor Kuncak's avatar
      Synthesis (and verification) benchmarks: · 31df5929
      Viktor Kuncak authored
        Address book
        Converting trees to lists
        Mikael's new year
      31df5929
    • Philippe Suter's avatar
      Fixed ClassLoader issue and type errors in evaluation. · 198a5489
      Philippe Suter authored
      This fixes the classloader issue that we had, where, in codegen, a
      library class would be loaded twice and be incompatible with itself.
      
      It also fixes an oversight in evaluating expressions, where the returned
      ground term was sometimes untyped (typically: empty sets and the like).
      We now copy the type of the (unevaluated) expression in such situations.
      198a5489
    • Philippe Suter's avatar
      --evalground makes FairZ3 evaluate ground applications · 1a0b9f93
      Philippe Suter authored
      Without the flag, functions applied to ground arguments are treated the
      same way as every other one: by unrolling their body. This is
      suboptimal, as we can instead pass to Z3 the equality f(a0, a1) = v,
      instead of letting it "discover" it by itself.
      
      Note that this hasn't been shown to bring any major performance
      improvement; ground applications hardly show up in verification, for
      instance. But think about it, you'll agree using evaluation there is
      "The right thing to do.™".
      
      Note that testing --evalground currently highlights some bugs.
      1a0b9f93
    • Etienne Kneuss's avatar
      Propagate expected types to onSuccess · e4a278b4
      Etienne Kneuss authored
      This allows CostModels to estimate correctly the minimal cost of a
      applying a rule.
      
      With type information on the expected types of a solution
      reconstruction, the cost model can provide dummy values of the correct
      type, avoiding assertion errors when composing solutions.
      e4a278b4
  4. Jan 10, 2013
  5. Jan 09, 2013
  6. Jan 08, 2013
    • Philippe Suter's avatar
      Sorting testcases. · 2f5c6c88
      Philippe Suter authored
      Includes completely verified implementations of merge sort and insertion
      sort. The synthesis tasks are currently beyond our reach.
      2f5c6c88
    • Etienne Kneuss's avatar
      Allow onSuccess to fail. This is necessary to prevent soundness issues. · 965264c3
      Etienne Kneuss authored
      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
      965264c3
    • Etienne Kneuss's avatar
      Add various benchmarks · abd6a94c
      Etienne Kneuss authored
      New Verification Benchmarks:
          - Addresses
          - AmortizedQueue
          - TreeListSet
      
      New Synthesis Benchmarks:
          - List
          - BinaryTree
          - AVLTree (incomplete)
      abd6a94c
    • Etienne Kneuss's avatar
      Accelerate CEGIS by disabling features we thought would help · 087889d5
      Etienne Kneuss authored
      CEGIS now support internal flags that can enable/disable its features:
      
      1) Injecting Counter-Examples on top of the unsat core to drive the
         search to interesting areas. Does not help => disabled
      
      2) Computing Unsat-Cores to strenghten the search of programs. Help in
         some cases, doesn't hurt much => enabled
      
      3) Checking whether the formula is unsat without blockers, to unrolling
         when there is no chance of finding a solution. Does not help =>
         disable
      
      4) Add support for function calls in CEGIS generators. This is disabled
         by default and can be enabled using --cegis:gencalls.
      
      It seems that doing additional checks in 1) and 3) triggers FairZ3 to
      unroll more, tempering with the performance of the solver.
      
      Also, this implements some improvements in the resulting programs by
      simplifying further expressions.
      087889d5
  7. Jan 07, 2013
  8. Jan 04, 2013
  9. Jan 03, 2013
Loading