summaryrefslogtreecommitdiff
path: root/Chalice/src/Translator.scala
Commit message (Collapse)AuthorAge
* Chalice:Gravatar kyessenov2010-08-19
| | | | | * support multi-step refinement (convert refinement blocks into normal sequences of statements) * added tests
* Chalice:Gravatar kyessenov2010-08-19
| | | | | | * 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)
* Chalice: turn asserts into assumes for method refinements (use -noFreeAssume ↵Gravatar kyessenov2010-08-19
| | | | to disable)
* Chalice:Gravatar kyessenov2010-08-18
| | | | | | * transforms are now callable * resolve transform specs * implement translation for refinement blocks (correct for manipulating locals, not globals)
* Chalice: refactored AST code for class hierarchy (no need for caches since ↵Gravatar kyessenov2010-08-17
| | | | Scala uses structural equality for case classes); landed first piece of refinement code
* Chalice: bug fixes -- "check termination" flag was not properly preserved ↵Gravatar kyessenov2010-08-16
| | | | (i.e. if function app was inside old, the flag was ignored); != was not properly translated for sequences
* Chalice: add pre-conditions to specification statements; semantically spec ↵Gravatar kyessenov2010-08-13
| | | | statement is just like a call statement now
* Chalice: add specification statement ( ghost? (const|var) (x (:T)?)+ [P(x)] )Gravatar kyessenov2010-08-13
|
* Chalice: accept many input files at once; read from stdin if no input file ↵Gravatar kyessenov2010-08-12
| | | | specified
* Chalice: put classes and objects into package "chalice"Gravatar kyessenov2010-08-11
|
* Chalice: added uninterpreted functions; attempting to re-verify Celebrity in ↵Gravatar kyessenov2010-08-10
| | | | Chalice
* Chalice: still cannot verify refinement of List.get (Z3 goes out of memory); ↵Gravatar kyessenov2010-08-06
| | | | added classic sqrt refinement; assertions on acc(s[*].f) have now positions attached
* Chalice:Gravatar kyessenov2010-08-02
| | | | | | | * 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)
* Chalice:Gravatar kyessenov2010-08-02
| | | | | | * 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
* Chalice:Gravatar kyessenov2010-07-30
| | | | | | | * 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)
* Chalice: pretty printer now prints element type for sequences; fixed a bug ↵Gravatar kyessenov2010-07-27
| | | | in copying resolved member in sequence accesses; added graph closure (DSW) verification example
* Chalice: bug -- permissions were implicity converted to Booge expressions ↵Gravatar kyessenov2010-07-22
| | | | (due to "implicit def")
* Chalice: bug -- expression substitution should preserve typingGravatar kyessenov2010-07-22
|
* Chalice: sequence access wildcards a[*].* and a[*].f have been implemented ↵Gravatar kyessenov2010-07-22
| | | | (sans checking for epsilon going beyond infinity and rd(...,*) permissions)
* Chalice: introduced proper AST nodes for permission expressions and ↵Gravatar kyessenov2010-07-21
| | | | permissions. This gets of redundancy in treating acc and rd in many places and should hopefully make permissions code more comprehensible
* Chalice: fixed typos in strings; trying out committing with TFSGravatar kyessenov2010-07-21
|
* Chalice: added surface syntax for acc(s[*].*) and acc(s[*].f); extended AST, ↵Gravatar kyessenov2010-07-20
| | | | resolver, printer; translation is not yet done
* Chalice: fixed a bug with permission operations treating AccessAll not as a ↵Gravatar kyessenov2010-07-20
| | | | permission expression; refactored Translator my moving prelude/implicits into TranslatorHelper for consistency
* Chalice: added type information for sequences ("where" clauses in local ↵Gravatar kyessenov2010-07-20
| | | | variable declarations and method/function formals); the clause says that every element in a sequence is either null or its dtype is the element type
* Chalice: adding support for sequence local variables; removed ClassType from ↵Gravatar kyessenov2010-07-20
| | | | Boogie since it was maskng bad job done by Translator; fixing warnings in case we ever decide to switch to newer Scala compiler
* Chalice: extended substitutor to handle "exists" quantifier and sequence ↵Gravatar kyessenov2010-07-20
| | | | containment; refactoring and preparing to extend wild card permissions to sequences
* Chalice: added sequence containment surface syntax ("in" comparison ↵Gravatar kyessenov2010-07-19
| | | | operator); cleaned up some deprecation warnings; resolved ambiguity with "unfolding ... in" expression
* Chalice: added "exists" quantifier; changed surface syntax for quantifier ↵Gravatar kyessenov2010-07-19
| | | | expressions
* Chalice: Re-designed lockchange on methods and loops. The lockchange clause ↵Gravatar mueller2010-07-18
| | | | is now required to list all objects whose held or rdheld field has changed since the _method_ prestate. It seems desirable to exclude objects that were not allocated in the prestate, but this feature is not implemented yet.
* Chalice: No longer use Mask for "held" field; instead, only use the value ↵Gravatar rustanleino2010-07-14
| | | | of the "held" field in the heap
* Chalice: Changed definition of waitlevel to take into account rdlock. ↵Gravatar mueller2010-07-03
| | | | Adapted definition of IsGoodInhaleState and an axiom.
* Chalice:Gravatar rustanleino2010-06-25
| | | | | * renamed keyword "maxlock" to "waitlevel" * added -vs switch, for I/O suitable for VS integration
* Chalice: Applied patch #6192Gravatar mueller2010-06-25
| | | | Patches the translation of "assert" statements, so that the meaning of "old" is preserved when the temporary copy of the heap is made for the exhale.
* Chalice: fixed bug in the exhale of permissions (to handle negative epsilons)Gravatar mueller2010-06-09
|
* Implicitly declare as local variables undeclared variables occurring as ↵Gravatar rustanleino2009-10-16
| | | | LHS's of CALL and RECEIVE statements (as was already done for FORK statements).
* - where clauses are now properly type-checkedGravatar jansmans2009-10-02
| | | | - all credits must be consumed on entry to a loop by the invariant (to avoid getting the wrong maxlock)
* Implemented -noDeadlockChecks mode. With this mode, it is possible to give ↵Gravatar rustanleino2009-10-01
| | | | some demos that use locks before explaining the global order on locks.
* * Implemented channelsGravatar rustanleino2009-08-16
| | | | | | | | | | | | | | | | - channel declarations - send and receive statements - bounds clause for new, to accommodate channels - Added ProdConsChannel.chalice test case - Resolve and Translate (but no Compile yet) - Added Credits to global state in encoding (this caused changes to lots of source lines) * Simplified meaning of maxlock==E * Various parser improvements * Added alternative syntax for eval statements * Some renamings in error messages (e.g., install -> reorder) * Added preliminary parsing for condition variables and their wait and signal operations * Added new keywords to Chalice emacs mode
* Parse channels and condition variables.Gravatar rustanleino2009-08-05
|
* Initial set of files.Gravatar mikebarnett2009-07-15