summaryrefslogtreecommitdiff
path: root/Source/Dafny/Translator.cs
Commit message (Collapse)AuthorAge
* Snapshot, to be continuedGravatar leino2014-12-02
|
* Fixed bug where resolution was overly restrictive with ghost variables ↵Gravatar leino2014-11-19
| | | | | | appearing in reads clauses. Fixed bug in the checking of reads subset for field frame targets ("back ticks")
* Now the parser parses "Type" rather than "IToken" for a traitGravatar Reza Ahmadi2014-11-05
|
* Extracted a separate class to generate fresh variable names.Gravatar wuestholz2014-11-06
|
* MergeGravatar Rustan Leino2014-11-05
|\
* \ MergeGravatar leino2014-11-05
|\ \
| * | Refactored the generation of unique IDs for temporary variable names.Gravatar wuestholz2014-11-05
| | |
| * | Did some refactoring.Gravatar wuestholz2014-11-05
| | |
| | * MergeGravatar Rustan Leino2014-11-03
| | |\ | | |/ | |/|
| | * Updated a test case for new syntax and convensionsGravatar Rustan Leino2014-11-03
| | |
* | | MergeGravatar leino2014-11-01
|\| |
* | | Various DafnyPrelude.bpl cleanup.Gravatar leino2014-11-01
| | | | | | | | | | | | Removed unused cases from axioms where Seq#Take and Seq#Drop take out-of-range arguments
| * | Added initial support for dirty while statements.Gravatar chmaria2014-11-01
|/ /
* / Allow assignment LHSs in a forall statement to be the same, so long as the ↵Gravatar leino2014-10-30
|/ | | | | | they are assigned the same RHS value. Don't include havoc assignments in LHS-duplicate checks.
* Fix bug in translation of 'new' for arraysGravatar Rustan Leino2014-10-29
|
* Fixed a bug in the Substituter for datatype update expressions.Gravatar leino2014-10-28
|
* Add a DafnyCC option that disables some of Dafny's cleverness to better ↵Gravatar Bryan Parno2014-10-27
| | | | match DafnyCC's capabilities
* Push the translation of user-supplied triggers deeperGravatar Bryan Parno2014-10-27
|
* Add an option to use reduce Z3's knowledge of non-linear arithmetic.Gravatar Bryan Parno2014-10-24
| | | | Results in more manual work, but it also produces more predictable behavior.
* When guessing decreases clauses for loops, convert numeric values to their ↵Gravatar leino2014-10-21
| | | | ultimate base type (int or real) before subtracting
* Comparisons and well-founded order of charGravatar leino2014-10-21
|
* Add char literals.Gravatar leino2014-10-20
| | | | Disallow backslash from being part of identifier names.
* Added types "char" and "string" (the latter being a synonym for "seq<char>").Gravatar leino2014-10-20
| | | | | | Added string literals with various escapes--a subset of those supported in C# and similar languages, including the C# verbatim strings. Previously, the "print" statement and custom attributes could support expression-or-string arguments; there is no longer a need to special-case these, so these arguments are now just expressions. Fixed lack of operator resolution in custom attributes.
* Stricter rules about that types need to be completely resolved.Gravatar leino2014-10-08
| | | | | | Renamed "default constructor" to "anonymous constructor" (since there's really nothing "default" about it). If the type of literal "null" is unresolved, make the type "object". The need to translate unresolved proxies is now assumed to be gone.
* Did more refactoring.Gravatar wuestholz2014-09-23
|
* Did some refactoring.Gravatar wuestholz2014-09-23
|
* Disallow parentheses-less declarations of predicates and co-predicates, ↵Gravatar leino2014-08-27
| | | | along with a backward-compatibility warning message if such declarations are attempted
* Merge, and refactored bit in Cloner into class ClonerButDropMethodBodies.Gravatar leino2014-08-27
|\
* | Refactored ArrowType's to be resolved with other types. ArrowTypeDecl's are ↵Gravatar leino2014-08-27
| | | | | | | | now created by the parser into the system module.
* | Various resolution fixes and improvementsGravatar leino2014-08-26
| | | | | | | | | | Added IsGoodHeap antecedent in (exists heap ...) in newtype Is axioms. Added IDE tool tips in newtype constraints.
* | Refactoring: renamed DerivedTypeDecl to NewtypeDeclGravatar leino2014-08-26
| |
* | Implemented arbitrary numeric conversions (but name resolution still needs ↵Gravatar leino2014-08-25
| | | | | | | | work when module names are involved)
* | Fixed bugs in previous check-inGravatar leino2014-08-25
| | | | | | | | Made up for inadequacy in reasoning machinery (supplying Int(Real(i)) == i axiom)
* | Check that result of newtype operations satisfy the newtype constraintGravatar leino2014-08-25
| |
* | Allow $Heap to occur in constraints (even though it isn't actually used)Gravatar leino2014-08-25
| |
| * changed $implements function argument type to ClassNameType (from Ty)Gravatar Reza Ahmadi2014-08-24
| |
* | Define $Is and $IsAlloc predicates for newtypes.Gravatar leino2014-08-24
| |
| * - generating TraitParent axiomsGravatar Reza Ahmadi2014-08-24
| | | | | | | | - $Is and $IsAlloc is no longer generated for a trait
* | Cycle detection among newtypes. Start of well-formedness check for newtypes.Gravatar leino2014-08-24
|/
* Added .Trunc field to real-based typesGravatar leino2014-08-21
| | | | Changed semantics of real-to-int conversions--these now have a precondition that the number converted is already an integer
* Support for non-constrained derived types ("new types").Gravatar leino2014-08-21
| | | | | Arbitrary conversion from int/real to derived types not yet supported. Changed rules about numeric type conversions to allow conversions from any numeric type.
* MergeGravatar leino2014-08-20
|\
* | Start of derived types (aka "new types")Gravatar leino2014-08-20
| | | | | | | | Fixed bug in type checking for integer division.
| * 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).
* Consider lambdas literals + create literal axioms when an argument is a functionGravatar Dan Rosén2014-08-18
|
* Fix a performance issue regarding requires for top level function handlesGravatar Dan Rosén2014-08-14
|
* Optimise ApplyExpr to FunctionCallExpr when possible in translatorGravatar Dan Rosén2014-08-14
|
* Generate function handle requires for functions without a bodyGravatar Dan Rosén2014-08-14
|
* Allow reads to take fields of type A -> set<object>Gravatar Dan Rosén2014-08-14
|
* Refactor: Change ApplyExpr's Receiver to FunctionGravatar Dan Rosén2014-08-14
|