summaryrefslogtreecommitdiff
path: root/Test/dafny0/Definedness.dfy
Commit message (Collapse)AuthorAge
* 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
* Set up the same test infrastructure as in Boogie.Gravatar wuestholz2014-05-29
|
* Improve error information by generating "Related location" information that ↵Gravatar Rustan Leino2014-01-14
| | | | traces into preconditions of called functions
* Frame expressions are now checked to be well formed.Gravatar Rustan Leino2013-02-13
| | | | (A nice consequence of this is that the method IsTotal is no longer needed.)
* Dafny: removed Dafny's "foreach" statements (replaced by the new "parallel" ↵Gravatar Rustan Leino2011-10-26
| | | | statement)
* Fixed failing regression tests.Gravatar Jason Koenig2011-07-14
|
* Dafny: allow constructors only inside classes, removed semi-colons at end of ↵Gravatar Rustan Leino2011-07-11
| | | | body-less functions/methods
* Dafny: changed syntax of havoc statements from "havoc X;" to "X := *;"Gravatar Rustan Leino2011-05-28
|
* Dafny: retired "use" statementsGravatar Rustan Leino2011-05-27
|
* Dafny:Gravatar rustanleino2011-02-17
| | | | | | | | | | | | | | | | | | * Big change: Add type and allocatedness information everywhere in the Boogie translation. This not only fixes some potential soundness problems (see Test/dafny1/TypeAntecedents.dfy), but it also gives more information about the program. On the downside, it also requires discharging more antecedents in order to use some axioms. Another downside is that overall performance has gone down (however, this may be just an indirect consequence of the change, as it was in one investigated case). * Increase the applicability of function axioms (extending the coarse-grain function/module height mechanism used as an antecedent of function axioms). (Internally, this uses the new canCall mechanism.) * Extend language with "allocated( Expr )" expressions, which for any type of expression "Expr" says that "Expr" is allocated and has the expected type. * More details error messages about ill-defined expressions (internally, by using CheckWellformedness instead of "assert IsTotal") * Add axioms about idempotence of set union and intersection * The compiler does not support (the experimental feature) coupling invariants, so generate error if the compiler ever gets one * In the implementation, combine common behavior of MatchCaseStmt and MatchCaseExpr into a superclass MatchCase * Fixed error in translation of while(*)
* Dafny: allow self-calls in function postconditions--these simply refer to ↵Gravatar rustanleino2011-02-03
| | | | the result value of the current call
* Dafny: added ensures clauses to functionsGravatar rustanleino2011-02-02
|
* 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-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-03-16
* Beginning of module implementation * Changed "class" modifier (for functions and methods) to "static"