summaryrefslogtreecommitdiff
path: root/Source
Commit message (Collapse)AuthorAge
...
* | | Fix broken interaction between triggers and inlining of function callsGravatar Clément Pit--Claudel2015-07-14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The problem was that inlining would replace formals with arguments in triggers as well, causing invalid expressions ("trigger killers") to pop up in triggers after inlining. This fix disables inlining if it can't be determined that it won't lead to an invalid trigger. If that procedure is incomplete, then that's only by a narrow margin, as the checks actually ensure that the formals that are getting trigger killers are indeed used in triggers.
* | | Detect matching loops at the mutli-trigger levelGravatar Clément Pit--Claudel2015-07-13
| | | | | | | | | | | | | | | Stop using HashSet, as we don't currently have a good HashCode implementation. Instead, excplicitly call distinct where needed. Improve reporting a bit.
* | | Start adding missing triggers to the translatorGravatar Clément Pit--Claudel2015-07-13
| | |
* | | Add /printTooltips and /autoTriggers to the CLIGravatar Clément Pit--Claudel2015-07-13
| | |
* | | Register the trigger generator as a a rewriter in the Resolver.Gravatar Clément Pit--Claudel2015-07-13
| | |
* | | Initial import of the TriggerGenerator code.Gravatar Clément Pit--Claudel2015-07-13
| | | | | | | | | | | | | | | Includes trigger generation, basic cycle detection, and basic equality comparison for Dafny expressions.
* | | Make attributes enumerable.Gravatar Clément Pit--Claudel2015-07-13
| | | | | | | | | | | | Use an extension method to properly deal with null attributes
| * | [IronDafny] implemented workaround for "import opened" bug(s).Gravatar Michael Lowell Roberts2015-07-13
| |/
| * Fixed crashes in overrides checking of function decreases clauses, and ↵Gravatar Rustan Leino2015-07-07
| | | | | | | | improved the error message reported to users
| * Report warnings only once. (This is the last step in fixing Issue #86.)Gravatar Rustan Leino2015-07-06
| |
* | Small refactoring of Printer.csGravatar Clément Pit--Claudel2015-07-06
| |
| * MergeGravatar Rustan Leino2015-07-02
| |\
| * | Added command-line option /warnShadowing, which emits warnings if variables ↵Gravatar Rustan Leino2015-07-02
| | | | | | | | | | | | shadow other variables (Issue #86)
| * | Type parameters in method/function signatures are no longer auto-declared. ↵Gravatar Rustan Leino2015-07-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Although convenient and concise, the auto-declare behavior has on many occasions caused confusion when a type name has accidentally been mistyped (and Dafny had then accepted and auto-declared the name). Note, the behavior of filling in missing type parameters is still supported. This mode, although unusual (even original?) in languages, is different from the auto- declare behavior. For auto-declare, identifiers could be used in the program without having a declaration. For fill-in parameters, the implicitly declared type parameters remain anonymous.
| | * multiple changes...Gravatar Michael Lowell Roberts2015-07-02
| |/ | | | | | | | | - fix for requirement inheritance in refinement. - minimimally viable implementation of exclusive refinement feature.
| * MergeGravatar leino2015-07-02
| |\
| | * Fixed a contract error provoked by one of the tests.Gravatar Bryan Parno2015-07-02
| | |
| * | Made code contracts compliantGravatar leino2015-07-01
| | |
| * | MergeGravatar leino2015-07-01
| |\|
| * | Fixed bug in BplImp!Gravatar leino2015-07-01
| | | | | | | | | | | | Improvements in encoding of reads of function values.
| | * Compile function methods into C# in a more efficient manner,Gravatar Bryan Parno2015-07-01
| | | | | | | | | | | | at least for some common expressions.
| | * Add the ability to specify how much "fuel" a function should have,Gravatar Bryan Parno2015-07-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i.e., how many times Z3 is permitted to unfold it's definition. The new {:fuel} annotation can be added to the function itself, it which case it will apply to all uses of that function, or it can overridden within the scope of a module, function, method, iterator, calc, forall, while, assert, or assume. The general format is: {:fuel functionName,lowFuel,highFuel} When applied as an annotation to the function itself, omit functionName. If highFuel is omitted, it defaults to lowFuel + 1. The default fuel setting for recursive functions is 1,2. Setting the fuel higher, say, to 3,4, will give more unfoldings, which may make some proofs go through with less programmer assistance (e.g., with fewer assert statements), but it may also increase verification time, so use it with care. Setting the fuel to 0,0 is similar to making the definition opaque, except when used with all literal arguments.
| | * MergeGravatar Bryan Parno2015-07-01
| | |\
| | * | Add code to calculate various interesting statistics about Dafny files.Gravatar Bryan Parno2015-07-01
| |/ / |/| |
| * | Fixed bugs in encoding of preconditions of function values, Issue #84.Gravatar leino2015-06-30
| |/
| * Fix identifiers in nested match patterns not showing in the IDE bug. RememberGravatar qunyanm2015-06-29
|/ | | | | BoundVars that are combined in rewriting of the nested match patterns so they show up in the IDE correctly.
* MergeGravatar leino2015-06-25
|\
* | 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).
| * Fix issue #85. Only try to interpret an identifier as a datatype constructorGravatar qunyanm2015-06-22
| | | | | | | | when the datetype is not null.
| * Fix various bugs in nested match patterns listed in issue #83Gravatar qunyanm2015-06-19
|/
* Auto-merged heads.Gravatar Michael Lowell Roberts2015-06-16
|\
* | System.Collections.Immutable.dll is now stored in the Binaries directory and ↵Gravatar Michael Lowell Roberts2015-06-16
| | | | | | | | copied to the output directory when the /optimize flag is used.
| * Changed logical order of requires and reads clauses on functions. Reads clausesGravatar Rustan Leino2015-06-15
| | | | | | | | | | can now assume the precondition (as had also been the case back in the days when reads clauses had to be self framing).
| * Do postponsed reads checking also for the body of functions -- see ↵Gravatar Rustan Leino2015-06-15
| | | | | | | | | | | | Test/dafny0/Reads.dfy for benefits. (Unfortunately, this loses track of the "postcondition might not hold on this return path" locations, see Test/dafny0/FunctionSpecifications.dfy.)
| * Postpone reads checks of function preconditions until after the entire ↵Gravatar leino2015-06-15
| | | | | | | | precondition has otherwise been checked for well-formedness
| * Little edits in new CheckWellformedAndAssume codeGravatar leino2015-06-12
| |
| * MergeGravatar leino2015-06-12
| |\
| | * Fix a bug spotted by Chris in my BigInteger patch; thanks!Gravatar Clément Pit--Claudel2015-06-12
| |/ |/| | | | | | | | | | | | | | | | | | | The problem was this: Console.WriteLine(Int64.Parse("08000000000000000", NumberStyles.HexNumber)); // => -9223372036854775808 Console.WriteLine(Int64.Parse("9223372036854775808")); // => Value was either too large or too small for an Int64. In other words, large hex numbers are interpreted as a sequence of bits, not as an actual number.
| * MergeGravatar leino2015-06-12
| |\ | |/ |/|
| * Combined some common routines into CheckWellformedAndAssume, which also ↵Gravatar leino2015-06-12
| | | | | | | | allows an improvement of the generated Boogie (which will be especially good soon, when reads-clause checking may change)
* | added -optimize option to compiler.Gravatar Michael Lowell Roberts2015-06-12
|/
* Add a compatibility layer over BigInteger.ParseGravatar Clément Pit--Claudel2015-06-07
| | | | | | | Mono currently does not implement support for BigInteger.Parse, so use Int64 if possible, and throw the same error as was previously returned otherwise. This is not too much of a problem in practice, because most of the integers that we actually come across in real-life source files seem to fit in an Int64.
* MergeGravatar Clément Pit--Claudel2015-06-08
|\
| * Update the hash code for datatypes to use the djb2 hash algorithm,Gravatar Bryan Parno2015-06-08
| | | | | | | | | | rather than xor. The latter produces pessimal performance if the datatype contains duplicate data.
| * Fix some issues when compiling generic types and generic function method callsGravatar Bryan Parno2015-06-08
| |
* | Fix the UseBaseNameForFileName flag; it shouldn't set the return code to zero.Gravatar Clément Pit--Claudel2015-06-07
|/ | | | | The test suite relies on error codes all being zero (except for preprocessing errors), so add a flag for that (as suggested in a source comment).
* Generate #requires function for OpaqueFunction.Gravatar qunyanm2015-06-04
|
* Added {:auto_generated} trigger, which indicates that a declaration was not ↵Gravatar Rustan Leino2015-06-02
| | | | explicitly mentioned in the input. This lets the Dafny IDE know not to add hovertext for these declarations.
* MergeGravatar leino2015-05-29
|\
| * Add an infinite set collection type.Gravatar qunyanm2015-05-29
| |