| Commit message (Collapse) | Author | Age |
| |
|
| |
|
|
|
|
| |
a loop is enabled then so is its parent
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This predication algorithm is intended to reduce the complexity
of predicated verification conditions by reducing the amount of
predicated state and using only boolean algebra, as opposed to the
previous algorithm which also uses integers.
It assigns a unique predicate to every superblock, which is defined
per Agrawal [1] except that superblocks are further partitioned
such that either no element of the same superblock may be contained
within a natural loop or each element of the superblock has the same
innermost natural loop head. Predicates are assigned at the element
of the superblock which dominates all others, and are reset to false
at a loop head and at the start of a procedure in order to ensure
correct execution for future iterations. When exiting a loop, all
predicates corresponding to heads of exited loops are reset to false.
The algorithm requires that every successor at every divergence
point in the CFG contains assumes marked with an attribute (called
':partition') which a frontend uses to certify to the predicator
that for each block, if each successor of that block contains an
assume statement marked with :partition, exactly one of those assume
statement's predicates will hold. The frontend we use for GPUVerify
generates such attributes, and as such the new predicator is only
used there, and the old predicator has been retained for Corral etc.
[1] Hiralal Agrawal. Dominators, super blocks, and program coverage.
In POPL '94, p25-34.
|
| |
|
|
|
|
| |
inlining
|
| |
|
| |
|
| |
|
|\ |
|
|\ \ |
|
| | |
| | |
| | |
| | | |
moved the try-catch for IrreducibleLoopException upstream
|
| | |\
| | |/
| |/| |
|
| | | |
|
| | | |
|
| | | |
|
| |/ |
|
| |\
| |/
|/| |
|
| | |
|
|/ |
|
| |
|
| |
|
|\ |
|
| |
| |
| |
| | |
2. changed the block expression to be the negation of the disjunction of all outgoing edges
|
|/ |
|
| |
|
|
|
|
|
| |
also changing back the output path in BoogieDriver
also disabling z3api for now since it does not build
|
|\ |
|
| |\ |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Should not affect function
of other provers. There is an option added in Check.cs to allow creation
of a Checker with a user-specified ProverContext. Also, some extension of
z3api prover context to support conversion of Z3 formulas back to VCExpr.
Finally, some experimental code, not enabled, to allow conversion of loops to
recursion with "head recursion" rather than "tail recursion" (i.e., recursive
call before loop body rather than after).
|
| | | |
|
|/ / |
|
| |
| |
| |
| |
| | |
cleanup up DefineMacro
Changed SI to use macros for reach info
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| | |
removed the program argument to call to VerifyImplementation in Dafny
|
| |
| |
| |
| |
| |
| | |
the constructor of ConditionGeneration
takes a program reference and stashes it in a field.
|
| | |
|
| | |
|
|\ \ |
|
| | | |
|
| | | |
|
|/ / |
|
| |
| |
| |
| | |
adding extra recursion bound to some procedures.
|
| | |
|
| | |
|