Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
sav08:homework02 [2008/03/04 17:05] vkuncak |
sav08:homework02 [2008/03/05 16:05] vkuncak |
||
---|---|---|---|
Line 56: | Line 56: | ||
case class WhileLoop( cond: BoolExpr, val com: Command) extends Command | case class WhileLoop( cond: BoolExpr, val com: Command) extends Command | ||
</code> | </code> | ||
+ | |||
===== Problem 4 ===== | ===== Problem 4 ===== | ||
Line 79: | Line 80: | ||
the resulting symbolic state is | the resulting symbolic state is | ||
map: {"x"->Plus(Var("x0"),Var("y0")), "y"->Plus(Plus(Var("x0"),Var("y0")),Constant(1))} | map: {"x"->Plus(Var("x0"),Var("y0")), "y"->Plus(Plus(Var("x0"),Var("y0")),Constant(1))} | ||
- | constraint: GreaterThan(Plus(Var("x0"),Var("y0"),Constant(0)) | + | constraint: GreaterThan(Plus(Var("x0"),Var("y0")),Constant(0)) |
Write a program that executes a givn loop-free command (containing sequential composition ";", if-then-else, assume, and assignments ":="). The program should start from the initial symbolic state and prints the resulting final symbolic state. Given a command "c" with two variables x,y, if the final symbolic state is | Write a program that executes a givn loop-free command (containing sequential composition ";", if-then-else, assume, and assignments ":="). The program should start from the initial symbolic state and prints the resulting final symbolic state. Given a command "c" with two variables x,y, if the final symbolic state is | ||
Line 91: | Line 92: | ||
===== Problem 5 (optional alternative to Problem 4) ===== | ===== Problem 5 (optional alternative to Problem 4) ===== | ||
+ | |||
+ | (See also [[homework03]].) | ||
Extend the interpreter of Problem 3 with a verification-condition generator based on symbolic execution. Verification condition generator should produce verification conditions where 'assume' becomes an assumption and where 'assert' becomes an assertion to be checked. It should emit one verification condition for each 'assert'. It should also check that all loop invariants are preserved. To prove the verification conditions, your verification-condition generator can feed them into the formDecider.opt prover from the [[:Jahob system]]. | Extend the interpreter of Problem 3 with a verification-condition generator based on symbolic execution. Verification condition generator should produce verification conditions where 'assume' becomes an assumption and where 'assert' becomes an assertion to be checked. It should emit one verification condition for each 'assert'. It should also check that all loop invariants are preserved. To prove the verification conditions, your verification-condition generator can feed them into the formDecider.opt prover from the [[:Jahob system]]. |