summaryrefslogtreecommitdiff
path: root/Source/Dafny/Triggers/QuantifierSplitter.cs
Commit message (Collapse)AuthorAge
* Fix issue 121. Don't split QuantifierExpr that are empty.Gravatar qunyanm2016-01-25
|
* Removed Contract.Requires from method overrides (preconditions of overrides ↵Gravatar Rustan Leino2016-01-06
| | | | | | | | are inherited from the overridden method and Code Contracts will copy those preconditions to make sure the right run-time checking happens; when Code Contracts finds preconditions on overrides, it emits warnings).
* Fix issue 103. Emit the quantifiers for ForallStmt before AutoTrigger so thatGravatar qunyanm2015-11-25
| | | | the auto-triggers can be computed for ForallStmt.
* Make quantifier splitting a two step processGravatar Clément Pit--Claudel2015-08-23
| | | | This fixes a bug that affected Monad.dfy
* Shallow-copy quantifier attributes when splittingGravatar Clément Pit--Claudel2015-08-23
|
* Improve error reporting for split quantifiersGravatar Clément Pit--Claudel2015-08-23
|
* Allow users to disable quantifier splitting by with a {:split false} attributeGravatar Clément Pit--Claudel2015-08-20
|
* Use nested tokens in the quantifier splitterGravatar Clément Pit--Claudel2015-08-18
| | | | | This allows it to report the source of the error, giving better feedback to the user about which precondition to a function failed to hold, for example.
* 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.