| Commit message (Collapse) | Author | Age |
... | |
|
|
|
|
|
| |
custom attribute [Stub], then no procedure declaration is created for it. The user must make sure to provide Boogie with a file containing the procedure declaration.
In addition, if the attribute has a string argument, [Stub("f")], then "f" is used as the nsame of the corresponding procedure instead of the encoded name computed from the method.
|
|
|
|
|
|
| |
* Support for induction over more than 1 variable
* Added many of the Rippling induction benchmarks
* Fixed bug in case handling
|
|
|
|
| |
(which is created by the heap when the initial Heap object is created). When the Sink is asked for a procedure corresponding to a method, if the method's encoded name matches any of the these procedures, then the matching procedure is returned.
|
|
|
|
|
|
|
|
| |
and Expression traversers need to have a mode that controls two things:
1. Parameters occurring in contracts are translated as the corresponding in-parameter of the corresponding procedure. Parameters occurring in method bodies are translated as the corresponding out-parameter of the corresponding procedure.
2. Method calls in method bodies are translated as call commands. Method calls in contracts are translated as function calls.
|
| |
|
| |
|
|
|
|
|
|
| |
* Add support for an {:induction} attribute on universal quantifiers over one bound variable. It causes the universally quantified formulas to be proved by induction.
* For a user-defined function F, introduce not just F and F#limited, but also F#2 (which sits "above" F, just as F sits "above" F#limited)
* In base case of SplitExpr, make use of F#2 functions (unless already inside an inlined predicate)
|
|
|
|
| |
the called ctor.
|
|
|
|
|
|
| |
Added support for string literals.
Translating structs no longer crashes the translator, but on the other hand, they are just skipped and not translated...
Added a helper method to make sure that generated identifiers are Boogie-legal.
|
|
|
|
| |
Fix a problem in two of the heaps where the AST for "type Type;" wasn't getting created.
|
| |
|
|
|
|
|
| |
1. introduced ProcedureInfo for packaging up relevant information about a Procedure
2. removed the call to the code that generates the static class constructor. this is temporarily broken; have to discuss with mike
|
|
|
|
| |
initialized in instance constructors and static fields are initialized in static constructors. Added wrinkle is that compiler generates a static constructor only if it needs to, so if there isn't one, we create one.
|
| |
|
| |
|
|
|
|
|
|
| |
Ctors now initialize all fields to default (null-equivalent) values.
Generate procedures for interface methods.
Translate enums just by ignoring them and using the integers that they really are.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Dafny: Forbid jumps from ghost code.
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
now provides a way to declare a new user-defined type and to represent the expressions "typeof(T)" or "o.Type" in the BPL program using a new function $DynamicType. Added a method to the Sink so that any of the translation visitors can find or declare a new type. When an object is allocated, an assumption is generated that gives its dynamic type.
Fixed the dynamic dispatch inlining so that the $DynamicType of the object is used to decide which override to call.
|
| |
|
|
|
|
|
| |
Suppress source contexts for empty statements.
Added a "whole program" option. When that is specified, then virtual calls are translated into a series of if-statements that test the dynamic type of the receiver and call the appropriate method. This is done only for subtypes that are defined in the CUA (Code Under Analysis -- which currently consists of just the one assembly being translated). [Note: currently the dynamic type is not implemented. That is next.]
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
different syntax in SMT than in Simplify
|
| |
|
|
|
|
| |
thing in Simplify frontend)
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Disable MODEL_PARTIAL in SMTLib
|
|
|
|
| |
Complete ErrorModel tables with the final bogus else clause
|
| |
|