LARA

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

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]].