summaryrefslogtreecommitdiff
path: root/Test/VSI-Benchmarks
Commit message (Collapse)AuthorAge
* Tried to reduce frame-axiom instantiations by saying the earlier heap must ↵Gravatar leino2015-06-25
| | | | | | be a "heap anchor". Currently, a heap is an anchor if it produced by a havoc (but not a direct update).
* Added lemmas that make verification go through faster and more reliablyGravatar leino2015-01-05
|
* Extracted a separate class to generate fresh variable names.Gravatar wuestholz2014-11-06
|
* Change behavior of 'decreases *', which can be applied to loops and methods. ↵Gravatar Rustan Leino2014-08-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now, loops that may possibly do an infinite number of iterations (that is, loops marked with 'decreases *') and calls to methods marked with 'decreases *' are allowed only in methods that themselves are marked with 'decreases *'. As before, ghost loops and ghost methods are not allowed to be marked with 'decreases *'. Previously, 'decreases *' was allowed on a method only if the method was tail recursive; this is no longer so. Note, however, that if the method is not tail recursive and engages in infinite recursion, then it will eventually run out of stack space. Previously, a 'decreases *' was not inherited in a refining module; this is no longer so. That is, 'decreases *' is now inherited. To refine a possibly non-terminating method or loop, the refining version simply provides a decreases clause that does not mention '*'. Note that if the refined method is not recursive, it still needs to have _some_ decreases clause in order not to inherit the 'decreases *' from the refined method, but the expression stated in the decreases clause can be arbitrary (for example, one can write 'decreases true' or 'decreases 7' or 'decreases x' for some 'x' in scope). Note, in the new design, a method needs to be declared with 'decreases *' if it may recurse forever _or_ if it contains a possibly infinite loop. Note that the absence of 'decreases *' on a loop does not mean the loop will terminate, but it does mean that the loop will iterate a finite number of times (the subtle distinction here is that a loop without a 'decreases *' is allowed to contain a nested loop that has a 'decreases *' -- provided the enclosing method is also declared with 'decreases *', as previously mentioned).
* Add higher-order-functions and some other goodiesGravatar Dan Rosén2014-08-11
| | | | | | | | | | | | | | | | * The reads clause now needs to be self framing. * The requires clause now needs to be framed by the reads clause. * There are one-shot lambdas, with a single arrow, but they will probably be removed. * There is a {:heapQuantifier} attribute to quantifiers, but they will probably be removed. * Add smart handling of type variables * Add < and > for datatype & type parameter
* Removed the old test infrastructure.Gravatar wuestholz2014-07-01
|
* Set up the same test infrastructure as in Boogie.Gravatar wuestholz2014-05-29
|
* Add an assertion to a test case to make it less flaky (hopefully).Gravatar wuestholz2013-12-18
|
* Add support for the /verifySeparately flag in Boogie and change most tests ↵Gravatar wuestholz2013-12-18
| | | | to use it.
* Changed a test to verify within a reasonable time (10 s vs. 300 s).Gravatar wuestholz2013-07-01
|
* Updated a test to verify with Z3 4.3.0.Gravatar wuestholz2013-05-21
|
* Enhanced the VSI-Benchmarks tests:Gravatar Rustan Leino2013-03-26
| | | | | - replaced the sequences used to specify permutations with multisets - used some of the newer syntax in Dafny
* Renamed "parallel" statement to "forall" statement, and made the parentheses ↵Gravatar Rustan Leino2013-03-06
| | | | around the bound variables optional.
* Fixed some goof-ups in the test script editsGravatar Rustan Leino2012-10-04
| | | | Changed the test output to make it easier to spot (in the console output) that everything passed with success or if there were any failures
* Added Test/dafny3 and another test file for iterators (hey, you can even run ↵Gravatar Rustan Leino2012-10-04
| | | | | | Iter.dfy!) Fixed migration issues
* Dafny: Fixed a test that would fail with Z3 4.1.Gravatar wuestholz2012-09-07
|
* Undo bad merge.Gravatar afd2012-06-27
|
* MergeGravatar Unknown2012-06-25
|\
| * Dafny: Since it's no longer true that all types support equality at run-time ↵Gravatar Unknown2012-06-21
| | | | | | | | (in particular, codatatypes), Dafny needs to check this. In these changes, Dafny supports the "(==)" suffix to type parameters, infers that suffix in some cases, and enforces equality support in many places. Refinement and datatypes still need more attention in the Dafny implementation.
* | Merged with default.Gravatar chmaria2012-06-18
|\|
| * Dafny: cleaned up test scripts a littleGravatar Unknown2012-06-14
| |
* | Dafny: Added tests.Gravatar chmaria2012-06-12
| |
* | Dafny: Added compiler tests.Gravatar chmaria2012-06-11
|/
* Dafny: call C# compiler directly from inside Dafny, and optionally produce a ↵Gravatar Rustan Leino2011-11-22
| | | | .cs file with the new /spillTargetCode switch
* Dafny: continued translation of "parallel" statements (Assign and Proof ↵Gravatar Rustan Leino2011-10-24
| | | | | | | forms are mostly there, Call is missing and so is compilation) Dafny: included some test cases for the "parallel" statement Dafny: starting changing old "foreach" statements to the new "parallel" statement
* Dafny: re-ran parser generator to include semicolon-less body-less ↵Gravatar Rustan Leino2011-07-26
| | | | functions/methods, and updated some test files accordingly (compare with changesets 1429 and 1366)
* Fixed regression test failures due to removal of bodiless methods and functions.Gravatar Jason Koenig2011-07-15
|
* Dafny: allow constructors only inside classes, removed semi-colons at end of ↵Gravatar Rustan Leino2011-07-11
| | | | body-less functions/methods
* Dafny: retired the "call" keywordGravatar Rustan Leino2011-05-26
|
* Dafny:Gravatar Rustan Leino2011-05-21
| | | | | | | | | | * started rewriting parsing of qualified identifiers in expressions * annoyingly, had to introduce AST nodes for concrete syntax * previous syntax for invoking datatype constructors: #List.Cons(h, t) new syntax: List.Cons(h, t) or, if only one datatype has a constructor named Cons: Cons(h, t) * Removed type parameters for datatype constructors from the grammar * Helped Test/VSI-Benchmarks/b4.dfy along with a couple of assertions (previously, its proving performance was highly varied)
* Dafny: fixed compilation bugs, added @-signs in front of identifiers to ↵Gravatar Rustan Leino2011-05-11
| | | | avoid clashes with C# keywords, added switch in runtest scripts to turn on compilation
* Dafny: Allow field selections and array-element selection as LHSs of ↵Gravatar Unknown2011-04-05
| | | | assignments where RHS is not just an expression
* Dafny: Added support for an initializing call as part of the new-allocation ↵Gravatar rustanleino2011-03-27
| | | | | | | | | | | syntax. What you previously would have written like: c := new C; call c.Init(x, y); you can now write as: c := new C.Init(x, y);
* Dafny:Gravatar rustanleino2010-09-17
| | | | | | * Added full support for multi-dimensional arrays (except for one issue that still needs to be added in compilation) * Changed syntax of array length from |a| to a.Length (for one-dimensional arrays). The syntax for either dimensions is, for example, b.Length0 and b.Length1 for 2-dimensional arrays. * Internally, this meant adding support for built-in classes and readonly fields
* Added a comment noting that this test fails with Z3 2.4.Gravatar mschwerhoff2010-07-06
|
* Boogie:Gravatar rustanleino2010-06-22
| | | | | | | | | * Set Z3's QI_COST as the sum of "weight" and "generation", not their product. This worked better when setting the :weight of a quantifier (see below). Dafny: * Improved axiomatization of sequences; in particular, use an axiom to generate terms that say what the two pieces of a concatenation are * Two of the (previous) sequence axioms could cause a matching loop, in cases where Z3's arithmetic reasoning does not infer all rational arithmetic equalities during instantiation. The effect of this was apparently not noticed before, perhaps the concatenation/drop properties previously had to be supplied in manual assert statements. But now, with the improved sequence axiomatization (see previous bullet), this effect became remarkably noticeable. To reduce the bad effect of this apparent matching loop, Michal and I added a :weight annotation on two of the axioms, which, along with the Boogie change above, seems to give acceptable results. * Removed several assert lemmas that are no longer needed in Test programs (the test programs now contain only about a handful of such lemmas)
* Dafny:Gravatar rustanleino2010-06-14
| | | | | * changed implementation of Test/VSI-Benchmarks/b4.dfy to be more interesting (and, in particular, different from the specification) * reformatted Test/VSI-Benchmarks/b3.dfy
* Dafny: Added two additional heuristics for guessing missing loop decreases ↵Gravatar rustanleino2010-06-11
| | | | clauses (for loop guard A!=B and for loop guards with multiple conjuncts)
* Dafny:Gravatar rustanleino2010-05-21
| | | | | | | * Added arrays * Beefed up set axiomatization to know more things about set displays * Added a simple heuristic that can infer some simple decreases clauses for loops * Added Dafny solutions to a couple of VACID benchmarks
* Dafny:Gravatar rustanleino2010-05-08
| | | | | Previously, a "use" function was one whose definition was applied only in limited ways, namely when the function was uttered in a program (possibly in a "use" statement). Now, recursive functions are always limited, unless declared with the new modifier "unlimited". Non-recursive functions are always unlimited. Also new is that only function calls within the same SCC of the call graph use the limited form of the callee. The "use" modifier is no longer supported. The "use" statement is still supported, now for both limited and unlimited functions; but it's probably better and easier to just explicitly mention a function in an assertion, if needed.
* Dafny:Gravatar rustanleino2010-05-06
| | | | | * Recoded frame axioms to be more goal directed * Added Main test driver to Test/VSI-Benchmarks/b2.dfy
* Dafny:Gravatar rustanleino2010-05-06
| | | | | | | | * First crack at a compiler (/compile:1 writes out.cs, if Dafny program verifies) * Added "print" statement (to make running compiled programs more interesting) * Changed name of default class from $default to _default Boogie: * Included "lambda" as a keyword in emacs and latex style files
* Dafny:Gravatar rustanleino2010-03-16
| | | | | | | | | | | | | | | | * Added modules with imports. These can be used to deal with termination checks without going into method/function implementations. Imports must be acyclic. * Added a default module. It contains all classes/datatypes defined outside the lexical scope of any other module. * Added a default class. It contains all class members defined outside the lexical scope of any module and class. This means that one can write small Dafny programs without any mention of a "class"! * Revised scheme for termination metrics. Inter-module calls are allowed iff they follow the import relation. Intra-module calls where the callee is in another strongly connected component of the call graph are always allowed. Intra-module calls in the same strongly connected component are verified to terminate via decreases clauses. * Removed previous hack that allowed methods with no decreases clauses not to be subjected to termination checking. * Removed or simplified decreases clauses in test suite, where possible. * Fixed error in Test/VSI-Benchmarks/b1.dfy
* Dafny: Added definedness checks for all statements (previously, some were ↵Gravatar rustanleino2010-03-13
| | | | | | missing) Boogie: Added {:subsumption <n>} attribute to assert statements, which overrides the /subsumption command-line setting
* Added wellformedness checks to method specificationsGravatar rustanleino2010-03-12
|
* Dafny:Gravatar rustanleino2010-03-12
| | | | | * Modifies clause checking is now done with each update, instead of at the end of the method. Not only does this improve error messages, but on some examples, it gives a dramatic speed-up (2x) in proving time. * bugfix: range expressions of foreach statements were previously ignored during Translation
* Dafny:Gravatar rustanleino2010-03-11
| | | | | | * Enforce ghost vs. non-ghost separation * Allow ghost parameters and ghost locals * Functions are ghost, but allow the non-ghost "function method"
* * Added decreases clauses to functionsGravatar rustanleino2009-11-24
| | | | | | | | | | | | | | | | | | | | * If no decreases clause is given, the decreases clause defaults to the set of objects denoted by the reads clause, which was the previous Dafny behavior * Made Dafny check loops for termination by default. Previously, this was done only if the loop had a decreases clause. To indicate that a loop is to be checked only for partial correctness, Dafny now allows "decreases *". * Allow "reads *" to say that the function may read anything at all (sound, but not very useful) * Adjusted frame axioms of functions to speak of allocated objects more liberally; and also added antecedents about the heaps being well-formed and the parameters being allocated * Added some previously omitted well-definedness checks. * Fixed some bugs in the resolver that caused some type errors not to be reported * Added some messages to go with some (previously rather opaquely reported) errors * Fixed some test cases that previously had ordered conjuncts incorrectly to prove termination and reads checks (such checks were previously omitted) * Beefed up Test/dafny0/SchorrWaite.dfy to use datatypes to specify that no garbage gets marked. The full-functional total-correctness verification of this Schorr-Waite method now takes about 3.2 seconds.
* Added a sequence update expression in Dafny.Gravatar rustanleino2009-11-06
|
* Redesigned the encoding of Dafny generics, including the built-in types set ↵Gravatar rustanleino2009-11-06
| | | | | | | | | | | | and seq. Regrettably, these changes--although improvements in Dafny's functionality--have caused Test/dafny0/BinaryTree.bpl and Test/dafny0/SchorrWaite.dfy to be significantly slower (the dafny0 test directory now takes 6:11 whereas it used to take 1:43). Improved some of the VSI-Benchmarks to use generics more fully, where the previous designed had just crashed. Included the previously commented-out loop invariants and assertions in VSI-Benchmarks/b8.dfy. Added a space in the pretty printing of Boogie coercion expressions.