blob: 95f1276674ce32db61fed06cb030ee13cbcec433 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
module test
import While
from StdMisc import abort
from StdOverloaded import class +++(..), class toString(..)
from StdString import instance +++ {#Char},
instance toString Char, instance toString Int
import _SystemArray
// From http://www.cs.ru.nl/~hubbers/courses/sc/leertaak/04.html
// The rounded down square root function:
// { x=n /\ n >= 0 } sqrt { z^2 <= n /\ (z+1)^2 > n }
sqrt :: Stm
sqrt = 'z' := 0 :.
'o' := 1 :.
's' := 1 :.
While ('s' <= 'x')
( 'z' := 'z' + 1 :.
'o' := 'o' + 2 :.
's' := 's' + 'o' )
Start = toString (tree sqrt st)
where
st :: Var -> Int
st 'x' = 16
|