summaryrefslogtreecommitdiff
path: root/Source/Core/Duplicator.cs
Commit message (Collapse)AuthorAge
* Normalise line endings using a .gitattributes file. UnfortunatelyGravatar Dan Liew2015-06-28
| | | | | | this required that this commit globally modify most files. If you want to use git blame to see the real author of a line use the ``-w`` flag so that whitespace changes are ignored.
* Make caching of verification results more fine-grained for changes that ↵Gravatar Valentin Wüstholz2015-05-17
| | | | affect preconditions.
* Added a setter for CommandLineOptions.ProverOptions and fixed several contracts.Gravatar wuestholz2015-02-18
|
* Protect the Args field of NAryExpr when it is immutable.Gravatar Dan Liew2015-02-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Made changing the reference throw an exception if the NAryExpr was constructed as immutable * Changed the type of NAryExpr.Args to be IList<Expr> rather than List<Expr> so that when the NAryExpr is immutable I can return ``_Args.AsReadOnly()`` (instead of ``_Args``) which returns a read only wrapper around the List<Expr> so that clients cannot change the list. I came across two problems * Making this change required changing types all over the place (from List<Expr> to IList<Expr>). I feel that changes are extensive enough that there's a good chance that out of tree clients using Boogie's libraries might break. I've waited for a code review but this didn't happen so I'm committing anyway. * I came across something that looks like bad design of the IAppliable interface which potentially breaks immutability enforcement. I've left this as a "FIXME" in this. Here's the problematic method. ``` Type Typecheck(ref List<Expr>/*!*/ args, out TypeParamInstantiation/*!*/ tpInstantiation, TypecheckingContext/*!*/ tc); ``` It potentially allows the instance of the args to be changed which seems very suspect.
* Change the return type of StandardVisitor.VisitLiteralExpr() fromGravatar Dan Liew2015-01-25
| | | | | | | | | | | | | LiteralExpr to Expr. Enforcing the return type be LiteralExpr is too restrictive. There is precedence for this. For example VisitNAryExpr() returns an Expr not an NAryExpr. Unfortunately this a breaking API change so anyone who subclasses the StandardVisitor (or one of its sub classes) and overrides this method will get compilation errors until they change the return type. a visitor that does constant folding of an Expr tree
* Change the return type of StandardVisitor.VisitExistsExpr() fromGravatar Dan Liew2015-01-25
| | | | | | | | | | | | | | ExistsExpr to Expr. Enforcing the return type be ExistsExpr is too restrictive. For example it prevents anyone from implementing a visitor that does constant folding of an Expr tree. There is precedence for this. For example VisitNAryExpr() returns an Expr not an NAryExpr. Unfortunately this a breaking API change so anyone who subclasses the StandardVisitor (or one of its sub classes) and overrides this method will get compilation errors until they change the return type. a visitor that does constant folding of an Expr tree
* Change the return type of StandardVisitor.VisitForAllExpr() fromGravatar Dan Liew2015-01-25
| | | | | | | | | | | | | | ForAllExpr to Expr. Enforcing the return type be ForAllExpr is too restrictive. For example it prevents anyone from implementing a visitor that does constant folding of an Expr tree. There is precedence for this. For example VisitNAryExpr() returns an Expr not an NAryExpr. Unfortunately this a breaking API change so anyone who subclasses the StandardVisitor (or one of its sub classes) and overrides this method will get compilation errors until they change the return type. a visitor that does constant folding of an Expr tree
* Change the return type of StandardVisitor.VisitBvExtractExpr() fromGravatar Dan Liew2015-01-25
| | | | | | | | | | | | | | BvExtractExpr to Expr. Enforcing the return type be BvExtractExpr is too restrictive. For example it prevents anyone from implementing a visitor that does constant folding of an Expr tree. There is precedence for this. For example VisitNAryExpr() returns an Expr not an NAryExpr. Unfortunately this a breaking API change so anyone who subclasses the StandardVisitor (or one of its sub classes) and overrides this method will get compilation errors until they change the return type. a visitor that does constant folding of an Expr tree
* Change the return type of StandardVisitor.VisitBvConcatExpr() fromGravatar Dan Liew2015-01-25
| | | | | | | | | | | | | BvConcatExpr to Expr. Enforcing the return type be BvConcatExpr is too restrictive. For example it prevents anyone from implementing a visitor that does constant folding of an Expr tree. There is precedence for this. For example VisitNAryExpr() returns an Expr not an NAryExpr. Unfortunately this a breaking API change so anyone who subclasses the StandardVisitor (or one of its sub classes) and overrides this method will get compilation errors until they change the return type.
* Fixed an issue (reported by Akash Lal).Gravatar wuestholz2014-10-30
|
* Worked on the verification result caching.Gravatar wuestholz2014-10-17
|
* 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 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.
* Better fix for the duplicator, thanks to wuestholzGravatar akashlal2014-09-27
|
* Fix for the duplicator; can't use CloneGravatar akashlal2014-09-26
|
* Did more refactoring and addressed several todos.Gravatar wuestholz2014-09-23
|
* Did some refactoring.Gravatar wuestholz2014-09-23
|
* Worked on an extension of the existing verification result caching.Gravatar wuestholz2014-06-23
|
* Fix duplicator so that BVConcatExpr and BVExtractExpr are handled. Patch by ↵Gravatar Ally Donaldson2014-03-12
| | | | Daniel Liew.
* Changed all lambda-expression rewriting to be done as a pre-processing step ↵Gravatar Rustan Leino2014-02-28
| | | | | | before real verification. Fixed treatment of lambda-expression attributes.
* Fixed errors in the use of Code ContractsGravatar Rustan Leino2014-02-10
|
* extended NormalSubstituter so that it can take in a forold substitutionGravatar qadeer2014-01-10
| | | | optimized the FailurePreservationChecker to eliminate some quantifiers
* bug fixes in Duplicate.cs and parsing of invariant attributesGravatar qadeer2013-12-22
| | | | other bug fixes in QED stuff
* various updates and tighter integration of QED stuff into mainlineGravatar qadeer2013-12-19
|
* added syntax for par call and ParCallCmdGravatar qadeer2013-12-16
|
* a minor refactoring + implemented mover checkingGravatar qadeer2013-10-25
|
* Fix for the Duplicator.Gravatar akashlal2013-10-15
|
* ExprSeq: farewellGravatar Ally Donaldson2013-07-22
|
* RESeq: farewellGravatar Ally Donaldson2013-07-22
|
* BlockSeq: farewellGravatar Ally Donaldson2013-07-22
|
* CmdSeq: farewellGravatar Ally Donaldson2013-07-22
|
* Started to remove ...Seq classesGravatar Ally Donaldson2013-07-22
|
* Fixed bugs arising from differences between hashtables and dictionariesGravatar Ally Donaldson2013-07-22
|
* Large refactoring of Hashtable to Dictionary.Gravatar Ally Donaldson2013-07-22
|
* removed call forall and * args to callsGravatar Unknown2013-02-23
|
* Removed old comments about "BASEMOVE" and other constructor calls, where the ↵Gravatar Unknown2013-01-07
| | | | conversion from Spec# into C# moved a constructor call
* Boogie: Committing changed source filesGravatar tabarbe2010-08-20
|
* Boogie: Renaming core sources in preparation for port commitGravatar tabarbe2010-08-20