Project

General

Profile

types
SmallInt = int [0..3];
Stack = autocons system
|[
var
my_stack : list [10] of SmallInt = [0]
actions
obs top (a : SmallInt) = requires (a = hd my_stack) :
skip
end ;
obs pop = requires (len my_stack > 0) :
my_stack := tl my_stack
end;
obs push (a : SmallInt) = requires len my_stack < 10 :
my_stack := [a] ^ my_stack
end

do
var A : SmallInt : push(A) [] pop() [] var B : SmallInt : top(B)
od
]|
system
Stack

(7-7/9)