summaryrefslogtreecommitdiff
path: root/Source/Dafny/Translator.cs
Commit message (Collapse)AuthorAge
* Fix issue 143. The list that stores the function fuel constants was declared asGravatar qunyanm2016-03-31
| | | | static field and not initialized correctly. Make it an instance field instead.
* Fix issue 75. Adjust the fuel for existentials to use more fuel in an assumeGravatar qunyanm2016-03-31
| | | | context and less in an assert.
* Fix issue 93. Add per-function fuel setting that can be adjusted locally basedGravatar qunyanm2016-03-18
| | | | on context.
* Revised the $Is and $IsAlloc axioms for arrow terms. It is now possible toGravatar Rustan Leino2016-03-01
| | | | | derived these predicates. More things can now be verified (including the problem reported in Issue #49).
* Added a return-value contractGravatar Rustan Leino2016-02-29
|
* MergeGravatar Rustan Leino2016-02-26
|\
* | Changes to CanCall assumptions:Gravatar Rustan Leino2016-02-26
| | | | | | | | | | | | - various peephole optimizations of formulas, to generate fewer tautologies - removed unused bound variables in CanCall quantifications (this addresses Issue #135) - added type- and precondition-antecedent in quantified CanCall assumption for lambda expressions, thus fixing an unsoundness
| * Fix issue 136. Less aggressive Lit wrap for assert/assume.Gravatar qunyanm2016-02-26
|/
* Fix issue 132. The formal argument can't be assume to be allocated when aGravatar qunyanm2016-02-12
| | | | function is invoked inside an "Old" expression.
* Fix issue 133. The return type for some compare operators was wrongly typedGravatar qunyanm2016-02-11
| | | | as int instead of bool.
* Fix issue 120. Need to wrap operations that are "lit lifted" and turned intoGravatar qunyanm2016-02-08
| | | | boogie function calls with "Lit" function.
* Fix issue 128. Change the translation of CanCallAssumption for let-such-thatGravatar qunyanm2016-02-04
| | | | | | | | | | | | | expression from // CanCall[[ var b :| RHS(b,g); Body(b,g,h) ]] = // (forall b0,b1 :: typeAntecedent ==> // CanCall[[ RHS(b,g) ]] && // (RHS(b,g) ==> CanCall[[ Body(b,g,h) ]]) && // $let$canCall(b,g)) to // CanCall[[ var b0,b1 :| RHS(b0,b1,g); Body(b0,b1,g,h) ]] = // $let$canCall(g) && // CanCall[[ Body($let$b0(g), $let$b1(g), h) ]]
* MergeGravatar leino2015-11-27
|\
* | Make cached results dependent on if a function is ghost or notGravatar leino2015-11-27
| |
| * Fix issue 103. Emit the quantifiers for ForallStmt before AutoTrigger so thatGravatar qunyanm2015-11-25
|/ | | | the auto-triggers can be computed for ForallStmt.
* Add code that uses Z3's optimization features (currently disabled by default).Gravatar wuestholz2015-11-19
|
* Fix issue 100. Add an axiom for functionHandle to trigger off of the origialGravatar qunyanm2015-11-17
| | | | function and connect with Apply1 of the function.
* Fix issue 94. Allow tuple-based assignment in statement contexts.Gravatar qunyanm2015-11-14
|
* Fixed location of blue dots to appear after semi-colons, not just before them.Gravatar leino2015-10-26
|
* In method and iterator specifications, inline top-level predicates (exceptGravatar leino2015-10-24
| | | | protected predicated in cross-module calls) like in other places.
* Fixed bug introduced in changeset 7ebdf9cd4154Gravatar leino2015-10-22
|
* Implemented resolution, verification, and (poorly performing) compilation of ↵Gravatar leino2015-10-05
| | | | | | | existential if guards. Fixed bugs in ghost checks involving comprehensions and attributes. Added SubstituteBoundedPool method.
* Parsing and pretty printing of the new "existential guards" of the two kinds ↵Gravatar leino2015-10-03
| | | | of "if" statements.
* merged IronDafny updates. two unit tests related to traits do not pass if ↵Gravatar Michael Lowell Roberts2015-09-21
| | | | ENABLE_IRONDAFNY is defined but this isn't critical and will be addressed shortly.
* Fix: multi-dimensional OOB errors were sometimes reported on incorrect ↵Gravatar Clément Pit--Claudel2015-08-23
| | | | locations.
* Adjust WF checks to use unsplit quantifiers.Gravatar Clément Pit--Claudel2015-08-21
| | | | | | | | | | | | | The logic about split quantifiers is that Boogie (and z3) should never realize that there was an unsplit quantifier. The WF check code does not produce a quantifier, at least in it's checking part; thus, it should use original quantifier. This fixes a problem in VerifyThis2015/Problem2.dfy with a null check, and a problem spotted by Chris, made into a test case saved in triggers/wf-checks-use-the-original-quantifier.dfy. The issue boiled down to being able to verify (forall x :: x != null && x.a == 0). Of course, the assumption that WF checks produce for a quantifier is a quantifier, so it uses the split expression.
* Add some diversity to Dafny's alimentationGravatar Clément Pit--Claudel2015-08-21
|
* Merge.Gravatar Clément Pit--Claudel2015-08-20
|\
| * MergeGravatar Rustan Leino2015-08-20
| |\
* | | Mark a few reporting functions as staticGravatar Clément Pit--Claudel2015-08-20
| | |
* | | Add a check for SplitQuantifiers that had been incorrectly left out from the ↵Gravatar Clément Pit--Claudel2015-08-19
| |/ |/| | | | | merge
| * Refactored and improved bounds discoveryGravatar Rustan Leino2015-08-19
| |
* | Merge.Gravatar Clément Pit--Claudel2015-08-19
|\| | | | | | | | | Changes that were needed included preventing the InductionRewriter from iterating on a SplitQuantifier and using the new error reporting engine.
* | Check Reads and Decreases clauses for expressions that could prevent inliningGravatar Clément Pit--Claudel2015-08-18
| |
* | Refactor calls to 'new CallCmd' and clear a few FIXMEsGravatar Clément Pit--Claudel2015-08-18
| |
* | Review preceding commit with RustanGravatar Clément Pit--Claudel2015-08-17
| |
* | Start committing split quantifiersGravatar Clément Pit--Claudel2015-08-14
| | | | | | | | | | | | | | | | | | This requires rewriting the parts of the AST that contain these quantifiers. We unfortunately don't have facilities to do such rewrites at the moment (and there are loops in the AST, so it would be hard to write such a facility). As a workaround, this commit introduces a field in quantifier expressions, SplitQuantifiers. Code that manipulate triggers is expected to look for this field, and ignore the other fields if that one is found.
* | Implement self-loop detectionGravatar Clément Pit--Claudel2015-08-14
| | | | | | | | | | | | | | | | | | | | Implementing loop detection between multiple triggers is much harder, as it seems to require walking an exponentially sized graph. Self-loop detection is still a net gain compared to the current situation: we used to not detect loops in large quantifiers; not we break these apart, suppress the loops where we can in the smaller parts, and report the ones that we can't suppress. It could be that the broken-up quantifiers are mutually recursive, but these cases would have already led to a loop in the past.
* | Draft out a more advanced version of trigger generationGravatar Clément Pit--Claudel2015-08-19
| | | | | | | | This new version will include a cleaner pipeline, and trigger splitting.
* | Refactor the error reporting codeGravatar Clément Pit--Claudel2015-08-18
| | | | | | | | | | The new error reporting system has a simpler interface, isn't tied to the resolver, and contains error source information.
| * Removed the unused type ThisSurrogateGravatar leino2015-08-11
| |
| * Moved discovery of induction variables into a Rewriter.Gravatar leino2015-08-11
|/ | | | | Generate warnings for malformed :induction arguments. Removed the functionality that allowed induction on 'this'.
* MergeGravatar Clément Pit--Claudel2015-07-28
|\
* | Clarify the inlining warning.Gravatar Clément Pit--Claudel2015-07-27
| |
* | Clean up error reporting.Gravatar Clément Pit--Claudel2015-07-27
| | | | | | | | | | There now is one main entry point for reporting errors, warnings, or information. Next step is to make the VS extension use that.
| * Translate triggers with the same ExpressionTranslator as the bodyGravatar Rustan Leino2015-07-24
|/ | | | Signed-off-by: Clement Pit--Claudel <clement.pitclaudel@live.com>
* Fix: Read clauses should be checked before lit liftingGravatar Clément Pit--Claudel2015-07-23
| | | | | | | | | The function IgnoreFuel in UnfoldingPerformance.dfy used to be lit-wrapped. It shouldn't be, because its reads clause is non-empty. This is not a soundness bug, but fixing it improves performance in cases where a function call would be incorrectly unrolled. Test case written by Rustan.
* Improved rank axioms for containersGravatar Rustan Leino2015-07-21
|
* Code reviewed some of the triggers added by changeset 1dacb6d3cc3cGravatar Rustan Leino2015-07-21
|
* Merge my autoTriggers work into the master branchGravatar Clément Pit--Claudel2015-07-17
|\ | | | | | | | | This contains trigger related things under the autoTriggers flag (disabled by default), and some bug-fixes and cleanups that are already enabled.