summaryrefslogtreecommitdiff
path: root/Source/Core/AbsyExpr.cs
Commit message (Collapse)AuthorAge
* fixed various CodeContracts issues.Gravatar qadeer2014-09-18
|
* Added missing Expr.Neg() static method.Gravatar Dan Liew2014-08-15
|
* Minor refactoringGravatar wuestholz2014-08-03
|
* MergeGravatar Dan Rosén2014-08-01
|\
* | Add alpha equivalence check for Expr, and use it when lambda liftingGravatar Dan Rosén2014-08-01
| |
| * Fix bug in NAryExpr where is was possible for A.Equals(B) to returnGravatar Dan Liew2014-07-29
| | | | | | | | | | | | | | | | | | | | | | true but A.GetHashCode() == B.GetHashCode() return false. The case of the bug was that Args.GetHashCode() was being used which uses Object.GetHashCode() which uses references to compute GetHashCode(). This is wrong because we want hash codes to equal for structural equality. To fix this I've implemented a really simple hashing method. I have not tested how resilient this is to collisions.
| * Fix bug in NAryExpr where Equals() override was not correctly implemented.Gravatar Dan Liew2014-07-28
|/ | | | | | | | The previous implementation which called object.Equals(this.Args, other.Args) would in turn call ``this.Args.Equals(others.Args)`` which for List<> is reference equality. Equals() is purposely overloaded on Expr classes in Boogie to provide structural equality so this has been fixed so a comparision of elements in the list is performed.
* Fix nasty bug introduced by commit 61a94f409975.Gravatar Dan Liew2014-07-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There were many calls in the code to ``` new TokenTextWriter("<buffer>", buffer, false) ``` Prior to 61a94f409975 this was a call to the following constructor ``` TokenTextWriter(string filename, TextWriter writer, bool setTokens) ``` After that commit these then became calls to ``` TokenTextWriter(string filename, TextWriter writer, bool pretty) ``` An example of where this would cause issues was if ToString() was called on an AbsyCmd then the its token would be modified because the setTokens parameter was effectively set to True when the original intention was for it to be set to false! To fix this I've * Removed the default parameter value for pretty and fixed all uses so that we pass false where it was implicitly being set before * Where the intention was to set setTokens to false this has been fixed so it is actually set to false! Unfortunately I couldn't find a way of observing this bug from the Boogie executable so I couldn't create a test case. I could only observe it when I was using Boogie's APIs.
* Refactored how checksums are computed.Gravatar wuestholz2014-07-13
|
* Did some refactoring, fixed minor issues, and made it apply the more ↵Gravatar wuestholz2014-07-06
| | | | advanced verification result caching even for implementations with errors.
* Add some pretty-printing, on by default. Turn off with the flag "/pretty:0"Gravatar Dan Rosén2014-06-24
| | | | | | When running boogie form the command line, this should be on by default. On the other hand, the TokenTextWriter constructors and PrintBplFile now have an argument for this, but by default it is off.
* Add isBvConst and asBvConst accessors to LiteralExpr to match theGravatar Dan Liew2014-05-28
| | | | others already present for bool, BigNum and BigDec.
* Recursive walking of Exprs doesn't play nice when the depth of the AST is high.Gravatar akashlal2014-01-07
| | | | | Reduce depth of AST whenever possible (e.g., use a binary tree instead of a linear list of terms)
* Resolved some issues with data races.Gravatar wuestholz2013-07-23
|
* All ...Seq classes now goneGravatar Ally Donaldson2013-07-22
|
* ExprSeq: farewellGravatar Ally Donaldson2013-07-22
|
* Started to remove ...Seq classesGravatar Ally Donaldson2013-07-22
|
* More refactoringGravatar Ally Donaldson2013-07-22
|
* More refactoring: PureCollections.Sequence not used anymore.Gravatar Ally Donaldson2013-07-22
|
* More refactoring towards replacing PureCollections.Sequence with ListGravatar Ally Donaldson2013-07-22
|
* Refactoring of VariableSeq and TypeSeqGravatar Ally Donaldson2013-07-22
|
* Allow attributes on procedure formals, function formals, and bound variablesGravatar Unknown2013-01-07
|
* Removed old comments about "BASEMOVE" and other constructor calls, where the ↵Gravatar Unknown2013-01-07
| | | | conversion from Spec# into C# moved a constructor call
* Minor refactorings for integrating corralGravatar Unknown2012-11-18
|
* Fixed the build.Gravatar wuestholz2012-09-28
|
* Boogie: added type 'real' with overloaded arithmetic operations plus real ↵Gravatar boehmes2012-09-27
| | | | | | | | | division '/' and (uninterpreted) real exponentiation '**', real literals and coercion functions 'int' and 'real'; Integer operations 'div' and 'mod' are now mapped to corresponding SMT-LIB operations instead of treating them uninterpreted; Made unary minus valid Boogie syntax again (the expression '- e' used to be rewritten by the parser to '0 - e', now this is done when generating VCs); Extended the BigDec class with additional functionality; Added test cases for SMT-LIB prover backend (the Z3 API interface has been adapted accordingly, but is untested)
* Boogie: new syntax for integer division and modulus: use div and mod instead ↵Gravatar boehmes2012-09-27
| | | | of / and %
* Removed AIFramework from Boogie -- use native trivial or native ↵Gravatar boehmes2012-09-27
| | | | | | | interval-based abstract interpretation instead. Command-line option '/infer' now accepts only arguments 't' and 'j' where the latter is the default now for Boogie. Command-line option '/logInfer' has been dropped.
* Boogie: Changed Expr.Not to keep swap arguments rather change direction of ↵Gravatar Rustan Leino2011-12-12
| | | | operator when negating <, <=, >=, or >
* MergeGravatar Rustan Leino2011-12-07
|\
| * Fix atg file and add comment about Set/*Variable*/Gravatar Michal Moskal2011-12-07
| |
| * Make set iteration order deterministicGravatar Michal Moskal2011-12-07
| | | | | | | | Make the set class generic
* | Boogie: Added new abstract interpretation harness, which uses native Boogie ↵Gravatar Rustan Leino2011-12-05
|/ | | | | | | | Expr's, not the more abstract AIExpr's. Boogie: Added Trivial Domain (/infer:t), which just detects assume/assert false. Boogie: Added new Interval Domain (/infer:j), which is stronger than the /infer:i intervals (because the also include preconditions, booleans, and more constraints) and may also be more efficient than previous intervals Boogie: Mark all inferred conditions with attribute {:inferred}
* Boogie: Eliminated the /bv option. Only native bitvectors are supported now. ↵Gravatar Rustan Leino2011-10-27
| | | | The :forceBvZ3Native, :forceBvInt, and :bvint attributes were also eliminated.
* Fix contracts so runtime checking can be turned on.Gravatar mikebarnett2011-03-07
|
* Boogie: Fixed problem with binding power of .[.] versus type coercions in ↵Gravatar rustanleino2011-02-17
| | | | pretty printing
* Added a new method StratifiedVC for refinement.Gravatar akashlal2011-02-08
| | | | Added a method to copy a FunctionCall.
* Boogie: Commented out all occurences of repeated inherited contracts - makes ↵Gravatar tabarbe2010-08-27
| | | | fewer error messages when compiling with runtime checking on.
* Boogie: Committing changed source filesGravatar tabarbe2010-08-20
|
* Boogie: Renaming core sources in preparation for port commitGravatar tabarbe2010-08-20