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:hoare_logic [2009/02/25 14:35]
vkuncak
sav08:hoare_logic [2009/03/04 11:03]
vkuncak
Line 2: Line 2:
  
 Hoare logic is a way of inserting annotations into code to make proofs about program behavior simpler. Hoare logic is a way of inserting annotations into code to make proofs about program behavior simpler.
 +
  
 ===== Example Proof ===== ===== Example Proof =====
  
-<​code>​ +<​code ​java
-{0 <= y}+//{0 <= y}
 i = y; i = y;
-{0 <= y & i = y}+//{0 <= y & i = y}
 r = 0; r = 0;
-{0 <= y & i = y & r = 0} +//{0 <= y & i = y & r = 0} 
-while {r = (y-i)*x & 0 <= i}+while //{r = (y-i)*x & 0 <= i}
  (i > 0) (  (i > 0) (
-  {r = (y-i)*x & 0 < i}+  ​//{r = (y-i)*x & 0 < i}
   r = r + x;   r = r + x;
-  {r = (y-i+1)*x & 0 < i}+  ​//{r = (y-i+1)*x & 0 < i}
   i = i - 1   i = i - 1
-  {r = (y-i)*x & 0 <= i}+  ​//{r = (y-i)*x & 0 <= i}
 ) )
-{r = x * y}+//{r = x * y}
 </​code>​ </​code>​
  
Line 37: Line 38:
  
 Note: weakest conditions (predicates) correspond to largest sets; strongest conditions (predicates) correspond to smallest sets that satisfy a given property (Graphically,​ a stronger condition $x > 0 \land y > 0$ denotes one quadrant in plane, whereas a weaker condition $x > 0$ denotes the entire half-plane.) Note: weakest conditions (predicates) correspond to largest sets; strongest conditions (predicates) correspond to smallest sets that satisfy a given property (Graphically,​ a stronger condition $x > 0 \land y > 0$ denotes one quadrant in plane, whereas a weaker condition $x > 0$ denotes the entire half-plane.)
 +
 +
 +
  
  
Line 47: Line 51:
 \] \]
  
-Note the similarity with relation composition.+This is simply [[Sets and relations#​Relation Image]] of a set.
  
 {{sav08:​sp.png?​400x250|}} {{sav08:​sp.png?​400x250|}}