summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
...
* Add TravisCI build status icon to README.mdGravatar Dan Liew2015-04-03
|
* Clean up .gitignore fileGravatar Dan Liew2015-04-03
|
* Remove some old mercurial files.Gravatar Dan Liew2015-04-03
|
* Add .travis.yml file for TravisCI builds.Gravatar Dan Liew2015-04-03
|
* Add initial README.mdGravatar Dan Liew2015-04-03
|
* Add LICENSE file.Gravatar Dan Liew2015-04-01
|
* updated the example to include atomic specifications (sent by Suha)Gravatar qadeer2015-03-29
|
* Patch by Jeroen KetemaGravatar Dan Liew2015-03-27
| | | | Expose information about the predicate assigned to the immediate dominator of a CFG node.
* Compute MustReach information lazily, on-demandGravatar akashlal2015-03-16
|
* Added MustReach information to VC genGravatar akashlal2015-03-11
|
* If using -proverLog: make sure we flush after writing every lineGravatar Dan Liew2015-03-10
| | | | | | | | | otherwise if either of the following happens * if the solver hangs and we do CTRL+C * if Boogie crashes then some lines will be missing from the log.
* Work around bug in Z3 4.3.2 and newer (https://z3.codeplex.com/workitem/188)Gravatar Dan Liew2015-03-10
| | | | | | where setting produce-unsat-cores to true has no effect unless the option is set last. This makes the Test/houdini/testUnsatCore.bpl test pass under Linux using Z3 4.3.2
* Fix bug in BigDec.FloorCeiling() which gave the wrong answers forGravatar Dan Liew2015-03-10
| | | | | negative numbers. I have decided that this method will floor towards negative infinity rather than zero to match SMT-LIBv2's to_int function.
* fixed crash reported by Dan.Gravatar qadeer2015-03-02
| | | | DoModSetAnalysis needs to run before the linear and mover type checking.
* Parse Bv valuesGravatar akashlal2015-03-02
|
* Fix using "mkbv" as a variable name in a boogie program. This wasGravatar Dan Liew2015-02-27
| | | | | taken from ``bv_decl_plugin::get_op_names(...)`` in ``src/ast/bv_decl_plugin.cpp`` in the Z3 4.3.2 source code.
* Fix using reserved Z3 keywords for real/int arithmetic operators. These are ↵Gravatar Dan Liew2015-02-27
| | | | | | | taken from `` arith_decl_plugin::get_op_names(...)`` from ``src/ast/arith_decl_plugin.cpp`` in the Z3 4.3.2 source code.
* Fix using reserved Z3 keywords for float operators. These are takenGravatar Dan Liew2015-02-27
| | | | | from ``float_decl_plugin::get_op_names(..)`` in ``src/ast/float_decl_plugin.cpp`` from the Z3 4.3.2 source code.
* fix from Serdar and SuhaGravatar qadeer2015-02-24
|
* Merge.Gravatar Dan Liew2015-02-18
|\
* | Fix bug where some reserved Z3 keywords were not sanitizedGravatar Dan Liew2015-02-18
| | | | | | | | when generating the VC.
| * Eliminated calls to deprecated method.Gravatar wuestholz2015-02-18
| |
| * Added a setter for CommandLineOptions.ProverOptions and fixed several contracts.Gravatar wuestholz2015-02-18
|/
* Protect Bitvector field of BvExtractExpr when it is immutable.Gravatar Dan Liew2015-02-12
|
* Protect E0 and E1 in BvConcatExpr if Expr is immutable.Gravatar Dan Liew2015-02-12
|
* Fix what looked like a serious design issue when Type checkingGravatar Dan Liew2015-02-12
| | | | | | | anything that implements the IAppliable interface. Type checking should never need to change the reference of a list of arguments (hence the removal of the ``ref`` keyword) and we need to use IList<Expr> instead of List<Expr> to allow NAryExpr to do its type checking.
* When an Expr immutable, never change Type reference if it has been set,Gravatar Dan Liew2015-02-12
| | | | even if the types are equivalent.
* 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.
* moved some things aroundGravatar qadeer2015-02-11
|
* Fix performance issue in ComputeHashCode() methods of Expr classes.Gravatar Dan Liew2015-02-02
| | | | | | If constructing immutable Expr bottom up this would be very inefficient because the hashcode would be recomputed unnecessarily. Now just make ComputeHashCode() methods call GetHashCode() on Expr instead.
* Fix typechecking immutable Expr when we haveGravatar Dan Liew2015-01-31
| | | | | | | | | | | | <bool> == <bool> or <bool> != <bool> The type checker tries rewrite the Expr when it gets type checked which breaks immutability so disable doing this if the Expr is immutable.
* Made it produce slightly different passive commands for assignments to ↵Gravatar wuestholz2015-01-30
| | | | assumption variables.
* Minor change to the encoding of partially verified assertions as VCGravatar wuestholz2015-01-30
|
* Backed out changeset ed4196d6fe50Gravatar Dan Liew2015-01-29
| | | | | | Compilation does not depend NUnit.Runners so it should not be a required package. Instead users should install it manually as described in Source/UnitTests/README.md
* Make NUnit.Runners a require NuGet package again. This is anGravatar Dan Liew2015-01-29
| | | | | | attempt to unbreak the Jenkins build. I don't think doing this is ideal. The package isn't required to run tests, it's only required if you want to run them on the command line.
* Tweak the unit test documentation on Visual studio.Gravatar Dan Liew2015-01-29
|
* Try to fix the "out-of-the-box" build of Boogie under Visual Studio. It turnsGravatar Dan Liew2015-01-29
| | | | | | | | | | | | out we had the repository set up in "MSBuild-Integrated package" mode[1] (missing packages won't fetched unless the user explicitly allows it for the solution) but what we want is "Automatic package restore" (provided NuGet is setup correctly automatically fetch the missing packages). I've followed the migration guide [2] and it appears that now Visual Studio will try to automatically fetch after making this change. [1] http://docs.nuget.org/consume/package-restore [2] http://docs.nuget.org/Consume/Package-Restore/Migrating-to-Automatic-Package-Restore
* Improve documentation on testing.Gravatar Dan Liew2015-01-29
|
* Made the trace output for the caching more detailed.Gravatar wuestholz2015-01-29
|
* Add unit tests to check that ComputeHashCode() and GetHashCode() agreeGravatar Dan Liew2015-01-29
| | | | for BvExtractExpr, BvConcatExpr and OldExpr.
* Add unit tests to check that ComputeHashCode() and GetHashCode() agreeGravatar Dan Liew2015-01-29
| | | | for LiteralExpr, IdentifierExpr and NAryExpr.
* Protect the body of ForAllExpr, ExistsExpr and LambdaExpr when theyGravatar Dan Liew2015-01-29
| | | | are immutable. Add unit tests to check this.
* Fix ForAllExpr, ExistsExpr and LambdaExpr constructors so it is possibleGravatar Dan Liew2015-01-29
| | | | to set them as immutable (not currently enforced for these Expr types).
* Protect the NAryExpr.Fun field when the NAryExpr is immutable.Gravatar Dan Liew2015-01-29
| | | | | Add a unit test for this. We need to protect the Args field too but that is going to be much harder to enforce.
* Protect the Expr field of OldExpr if it is immutable. Add unit testGravatar Dan Liew2015-01-29
| | | | to check this is being enforced.
* Add some unit tests to check the enforcement of Expr immutability.Gravatar Dan Liew2015-01-29
| | | | | | | For IdentifierExpr and the Type field of Expr. There are lots of places where it still isn't enforced but hopefully we'll fix those in due time.
* Protect the Type field of an Expr if is Immutable. Note if the ExprGravatar Dan Liew2015-01-29
| | | | | | has never been type checked we allow the Type field to be set but once it has been set it cannot be changed to refer to a different Type.
* Protect the Name and Decl fields of IdentifierExpr when it isGravatar Dan Liew2015-01-29
| | | | | immutable by raising an exception if an attempt is made to modify it after construction.
* Prevent a BvConst being changed once constructed. The motivationGravatar Dan Liew2015-01-29
| | | | | | | for doing this is that we would like a LiteralExpr to be immutable when constructed but because the "Val" field can point to a BvConst which is an object it means that although the Val reference cannot change the BvConst could be changed.
* Add the ability to declare Expr to be immutable at construction time.Gravatar Dan Liew2015-01-29
| | | | | | | | | | | | This is currently not enforced (it really should be). So right now it only amounts to a promise by the client that the Expr will not be modified after it is constructed. We should actually enforce this by protecting various fields of the Expr classes so they can't be changed if an Expr is constructed as Immutable. The motivation for doing this is it allows the value of GetHashCode() to be cached. Expr classes now implement ComputeHashCode() to do the actuall hash code computation.