Guest User

Untitled

a guest
Mar 21st, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.41 KB | None | 0 0
  1. method sqrt(n : nat) returns (r: int)
  2. // square less than or equal to n
  3. ensures (r * r) <= n
  4. // largest number
  5. ensures forall i :: 0 <= i < r ==> (i * i) < (r * r)
  6. {
  7. var i := 0; // increasing number
  8. r := 0;
  9. while ((i*i) <= n)
  10. invariant (r*r) <= n
  11. invariant forall k :: 0 <= k < r ==> (k*k) < (r*r)
  12. decreases n - i
  13. {
  14. r := i;
  15. i := i + 1;
  16. }
  17.  
  18. return r;
  19. }
Add Comment
Please, Sign In to add comment