| Commit message (Collapse) | Author | Age |
|
|
|
| |
next goal is to make this verify!
|
|
|
|
|
| |
* fix bugs -- translateAssert and etran.fromPreGlobals were referring to globals by name instead of using current globals
* example of finding duplicate elements in a sequence using a bitset
|
|
|
|
| |
translation; tag global coupling assertions (bug fix)
|
|
|
|
| |
"this"
|
|
|
|
|
|
| |
* added celebrity example (theory of sequences is still weak to prove basic things...)
* bug in Chalice: old in while loops is ignored, needs to be fixed if ever want to complete DSW example
* evil input from Z3 makes subsequent refinement proofs unsound; need to debug before building upon DSW.chalice; the error is triggered when adding parent field to Node
|
|
|
|
| |
evil input again...
|
| |
|
| |
|
| |
|
|
|
|
| |
* coupling invariants work (with certain restrictions as described in TODO comments)
|
|
|
|
|
| |
* fix a compilation problem (scalac relied on old binaries)
* combinator parser and state don't work well together -- added higher-order parser for method transform
|
| |
|
| |
|
|
|
|
| |
positions were negative
|
| |
|
| |
|
|
|
|
|
| |
* support multi-step refinement (convert refinement blocks into normal sequences of statements)
* added tests
|
|
|
|
|
|
| |
* added loop transform pattern
* implemented translation of refined loops to Boogie (only assert new loop invariants)
* refactored loop target computation code (async call was not handled as maybe some other statement)
|
|
|
|
| |
to disable)
|
|
|
|
|
|
| |
* transforms are now callable
* resolve transform specs
* implement translation for refinement blocks (correct for manipulating locals, not globals)
|
|
|
|
|
|
|
| |
* print type checked program (use -print -noTypecheck if you want old behavior)
* refactored program context in Resolver ('errors' is kept as a ListBuffer and shared)
* added resolver for refinement blocks (no loops yet)
* pretty printer should work now for transforms
|
| |
|
|
|
|
| |
Scala uses structural equality for case classes); landed first piece of refinement code
|
|
|
|
| |
(i.e. if function app was inside old, the flag was ignored); != was not properly translated for sequences
|
|
|
|
| |
statement is just like a call statement now
|
| |
|
|
|
|
| |
specified
|
|
|
|
| |
revise code comments
|
| |
|
| |
|
| |
|
|
|
|
| |
Chalice
|
| |
|
| |
|
|
|
|
| |
alive though???
|
|
|
|
| |
added classic sqrt refinement; assertions on acc(s[*].f) have now positions attached
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
recursion bits
|
|
|
|
|
|
|
| |
* change syntax for range: [a..b] instead of [a:b]
* add multi-triggers to Boogie bindings
* fix unsoundness in frame axiom for functions -- whenever acc(s[*].f,...) is detected in pre-condition, a different encoding to Boogie is applied
* add limited functions to translator (disabled since Resolver is not ready yet)
|
|
|
|
|
|
| |
* added quantifiers over any type (forall i: int :: i + 1 == i + 1)
* cleaned up AST transformation code; organized one transform operation that should preserve source positions -- it was very annoying to see assertions with lost source positions
* added a desugar method that simplifies Chalice AST by unrolling a few constructs -- maybe useful in the future to quickly add a syntactic sugar
|
|
|
|
|
|
|
| |
* add sequence axiom updates from Dafny
* fix a bug in pretty printer for functions and predicates
* add a command line option for not checking termination; refactor options code to update syntax help string
* relax resolver to allow ghost state in assume statements (we don't know how to compile them in general anyways; assume false is still a special case and is compiled into assert false)
|
|
|
|
| |
in copying resolved member in sequence accesses; added graph closure (DSW) verification example
|
|
|
|
| |
(due to "implicit def")
|
| |
|
|
|
|
| |
(sans checking for epsilon going beyond infinity and rd(...,*) permissions)
|
|
|
|
| |
permissions. This gets of redundancy in treating acc and rd in many places and should hopefully make permissions code more comprehensible
|