| Commit message (Collapse) | Author | Age |
|
|
|
| |
Codeplex repositories.
|
| |
|
| |
|
|
|
|
| |
permissive.
|
| |
|
| |
|
|
|
|
| |
usage of reals for permissions.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
longer needed (and in fact, results in a Boogie parse error).
|
|
|
|
| |
functions, instead of their "heap fragment" versions from the framing axiom. It's not totally clear why this works better, but it seems to avoid the excessive triggering Yannis' examples showed.
|
| |
|
| |
|
| |
|
|
|
|
| |
predicate permission masks.
|
|
|
|
| |
quantification instead of explicit enumeration of locations.
|
| |
|
|
|
|
| |
triggers to make them more permissive (and for instance fix a recent test failure).
|
|
|
|
| |
cases where different numbers of extra boolean variables are needed to generate different trigger sets. In this case, the resulting quantified assertions are conjoined together in the result.
|
|
|
|
| |
additional boolean variables to replace any sub-expressions that would be problematic in a candidate trigger (logical operators and comparison operators are forbidden). These extra variables are used in the triggers but not in the bnody of the quantifier. However, they need to be quantified over as well, and this creates a problem if different trigger sets employ different sets of extra variables. For the moment, the implementation groups all of the trigger sets by the sets of extra variables they use, and only outputs the first (in practice, often the only) such group. Hopefully this will be improved on soon.
|
|\ |
|
| |
| |
| |
| | |
going to be used (otherwise Nil is passed).
|
| |
| |
| |
| | |
predicate triggers (avoiding matching loops).
|
| |
| |
| |
| | |
specifications in certain well-defined cases.
|
| |
| |
| |
| | |
around a z3 bug that has been fixed).
|
| |
| |
| |
| | |
needed for soundness.
|
| |
| |
| |
| | |
postcondition axiom.
|
| | |
|
|/
|
|
| |
the call graph).
|
| |
|
| |
|
|
|
|
| |
information (with varying verbosity). By default, the overall verification time is output.
|
|
|
|
| |
user-supplied specifications (searching for sets of matching function terms, and taking their "limited" forms).
|
|
|
|
|
|
| |
the function applications with at least one variable in common with a given list. This is a pre-cursor to writing a trigger-generating routine for quantifiers.
Also corrected some copy-paste comments in Translator.scala
|
|
|
|
|
|
| |
At the same time, exhaling an unfolding expression now generates corresponding secondary permission information (this can in principle be useful; with fractional permissions it need not be the case that just because we exhale (part of) a predicate, we don't have any left.
Also added a test case to test the new non-aliasing knowledge the "inside" encoding provides in various situations.
|
|
|
|
| |
statements. So far this does not include exhaling an unfolding expression, or translation of an unfolding expression in e.g., program code (which looks more challenging). Note that secondary permissions do not appear to be generated in these cases either, which may be problematic for certain pathological examples.
|
|
|
|
| |
statements (previously only fold was implemented), and to the translation of unfolding expressions in some cases.
|
|
|
|
| |
occur inside which (for extra non-aliasing information)
|
|
|
|
| |
axiomatised without a receiver. However, calls of such functions still syntactically require a receiver for now (which is ignored).
|
|
|
|
| |
functions (so that the various tricks get applied uniformly, even when Chalice thinks a function is not recursive).
|
|
|
|
| |
2648 (ff8bdaa099cd) Chalice: Allow unfolding expressions in predicates (this fixes workitem 10223).
|
|
|
|
| |
2891 (c73229bf100d) Experimental version with weaker triggering for function definition axiom (should trigger whenever both the function application has occurred somewhere in the code, and a corresponding predicate has been either folded or unfolded).
|
|
|
|
| |
previously done in changeset 2678 (ca2a67918aa7)
|
|
|
|
| |
2669 (bc94e6c85481) Chalice: Remove IsGoodState as it is not needed and causes problems in certain cases.
|
|
|
|
| |
2568 (f1a12d812207) : Chalice: refactor ExhaleHelper to use a local lambda expression for easier parameter management.
|
| |
|
|
|
|
| |
populated. The hope is that, with the improved triggers for function framing, this will be sufficient, even for examples where we "learn later" that a location is inside a predicate instance.
|
|
|
|
|
|
| |
mask starts out as ZeroPMask and is added to during translation. #m mask starts out havoced, and is assumed to be equal to #m_calc as late as possible.
This idea doesn't seem to work out, since the assumes generated come too late in the code for some of the asserts (which depend on framing information) to work. However, given the changes I made to funciton framing recently, I'm wondering if the havoced masks are even necessary any more. Next: try removing them and just using #m_calc for everything..
|