stack Module Interface Specification

(0) CHARACTERISTICS

-type specified: stack

-features: deterministic, non-parameterized

-foreign types:

(1) SYNTAX

ACCESS-PROGRAMS

Program Name
Arg#1Arg#2Result Type
PUSHstack:VOint:V 
POPstack:VO   
TOPstack:V  int

(2) CANONICAL TRACES

canonical(T) n:<int>; x[1]..x[n]:<int> [T = [PUSH(*, x[i])]i=1..n ]

(3) SEMANTICS

ACCESS-PROGRAMS

Legality(PUSH((n, T), a)) = %legal%

PUSH((n, T) , a) = T.PUSH(*, a)

Legality(POP((n, T))) =

ConditionValue
T = _ %empty%
T _%legal%

POP((n, T) ) = T1 where T1:<stack>; a:<int> [T = T1.PUSH(*, a) ]

Legality(TOP(T)) =

ConditionValue
T = _ %empty%
T _%legal%

TOP(T) = a where T1:<stack>; a:<int> [T = T1.PUSH(*, a) ]