summaryrefslogtreecommitdiff
path: root/Source/Core
Commit message (Collapse)AuthorAge
* Add '/traceCaching' flag.Gravatar wuestholz2014-10-13
|
* Implement ToString() override for TransferCmds. It is overriden forGravatar Dan Liew2014-10-13
| | | | | Cmd classes but for some reason it wasn't implemented for TransferCmds which seems a little inconsistent.
* Fix bug in the Duplicator.Gravatar Dan Liew2014-10-08
| | | | | Previously after duplication of an entire program CallCmd.Proc would point to procedures in the old program.
* Fix typos in the name of a property and method used for handlingGravatar Dan Liew2014-10-08
| | | | | | Absy metadata. This feature is very new so it is unlikely any out of tree code (apart from my own) is using it so this change shouldn't be disruptive.
* Fix bug in Duplicator. Previously when cloning an entire ProgramGravatar Dan Liew2014-10-06
| | | | | | | | | | | | | | a cloned Implementation.Proc would not be the same Procedure in the TopLevelDeclarations. The reason for this is that Procedure would be cloned twice, once when visiting it from the TopLevelDeclarations and once when visiting each Implementation of that Procedure's Implementation.Proc. To fix this a Procedure is only duplicated once by caching it based on reference value (this assumes the original Program has Procedure and Implementation.Proc correctly resolved). This also assumes that Procedure.Equals() and Procedure.GetHashCode() have not been overidden.
* Improved on my fix to the Duplicator bug fixed in ca82591ab1f8.Gravatar Dan Liew2014-10-06
| | | | | Instead of the Duplicator maintaining state the VisitImplementation() method computes the mapping between old and new Blocks.
* Fix bug in Duplicator where GotoCmd's LabelTargets and LabelNamesGravatar Dan Liew2014-10-05
| | | | | | | | | | | where not updated during duplication to point to duplicated BasicBlocks. Because the lists weren't being duplicated and resolved to the new basic blocks a duplicated Implementation pointed into Blocks in the old implementation via GotoCmds. This is bad and is not the expected behaviour. Now if VisitImplementation() is called during duplication GotoCmds will be resolved to point to duplicated Blocks.
* MergeGravatar akashlal2014-09-27
|\
* | Better fix for the duplicator, thanks to wuestholzGravatar akashlal2014-09-27
| |
| * Fixed issue reported by Akash Lal.Gravatar wuestholz2014-09-26
|/
* Fix for the duplicator; can't use CloneGravatar akashlal2014-09-26
|
* The setter is better this wayGravatar akashlal2014-09-25
|
* Lets have a setter for TopLevelDeclarations as wellGravatar akashlal2014-09-25
|
* Simple VC generation for SIGravatar akashlal2014-09-24
|
* Did more refactoring and addressed several todos.Gravatar wuestholz2014-09-23
|
* Did more refactoring.Gravatar wuestholz2014-09-23
|
* Did some refactoring.Gravatar wuestholz2014-09-23
|
* Fixed an issue in the verification result caching (recycled errors).Gravatar wuestholz2014-09-22
|
* a small fix to prefix calculationGravatar qadeer2014-09-19
|
* a bug fix in Houdini (also AbsHoudini)Gravatar qadeer2014-09-19
|
* InlineAssume attribute for ensures clauses; if present, the ensures ↵Gravatar qadeer2014-09-18
| | | | condition is assumed while inlining.
* fixed various CodeContracts issues.Gravatar qadeer2014-09-18
|
* added a commentGravatar qadeer2014-09-17
|
* fixed a bug in inliningGravatar qadeer2014-09-17
| | | | changed the attribute on callee ensures to "HoudiniAssume" rather than "assume"
* Added the ability to attach arbitary objects to Absy nodes using anGravatar Dan Liew2014-09-03
| | | | | | | | | | | | | | | | | | | | | | integer as a key. This allows any arbitrary "metadata" to be attached at runtime. The implementation is lazy so the container is only created if the SetMetadata<T>() method is called which should keep the memory overhead very minimal. Example usage: var TheAssert = new AssertCmd(...); ... TheAssert.SetMetadata(0, new List<Expr>()); TheAssert.GetMetadata<List<Expr>>(0); foreach (var keyValue in TheAssert.NumberedMetaData) { // do something } Debug.Assert(TheAssert.NumberedMetaDataCount == 1);
* 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
| |
| * removed /doNotUseParallelismGravatar qadeer2014-07-30
| |
| * Fix bug in BinderExpr where is was possible for A.Equals(B) to returnGravatar Dan Liew2014-07-29
| | | | | | | | true but A.GetHashCode() == B.GetHashCode() return false.
| * 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 BinderExpr where Equals() was not corrected implemented.Gravatar Dan Liew2014-07-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | BinderExpr was doing: object.Equals(this.TypeParameters, other.TypeParameters) && object.Equals(this.Dummies, other.Dummies) Both of these are wrong because these are of type List<> and so - object.Equals(this.TypeParamters, other.TypeParameters) will call this.TypeParameters.Equals(other.TypeParamters) (assuming they aren't references to the same list) - object.Equals(this.Dummies, other.TypeParameters) will call this.TypeParameters.Equals(other.Dummies) (assuming they aren't references to the same list) so this is becomes a reference comparision on Lists<>. This is wrong because Equals() has been overloaded to implement structural equality. This affects the classes ForallExpr, LambdaExpr and ExistsExpr.
| * MergeGravatar akashlal2014-07-28
| |\
| * | 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.
| | * Helper proceduresGravatar akashlal2014-07-28
| |/
| * Fix bug where Visitors could not visit Requires or Ensures becauseGravatar Dan Liew2014-07-27
|/ | | | the StdDispatch method was missing on both Classes.
* 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
|
* Worked on the more advanced verification result caching (ignore comments for ↵Gravatar wuestholz2014-07-10
| | | | computing statement checksums).
* Worked on the more advanced verification result caching.Gravatar wuestholz2014-07-10
|
* Worked on the more advanced verification result caching.Gravatar wuestholz2014-07-09
|
* Worked on adding support for "canned errors".Gravatar wuestholz2014-07-07
|
* Worked on adding support for "canned errors".Gravatar wuestholz2014-07-06
|
* 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.
* Implemented an optimization for assignments to assumption variables that are ↵Gravatar wuestholz2014-07-04
| | | | injected by the verification result caching for calls within loops.
* Made it not include free preconditions when producing partially verified ↵Gravatar wuestholz2014-07-03
| | | | preconditions.
* Fixed issue involving axioms in the dependency analysis used for ↵Gravatar wuestholz2014-07-03
| | | | verification result caching.
* Fixed issue in verification result caching.Gravatar wuestholz2014-06-26
|
* 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.