S3_Names_QUEUE Module Interface Specification

(0) CHARACTERISTICS

-type specified: s3_queue

-features: deterministic, non-parameterized

-foreign types:

(1) SYNTAX

ACCESS-PROGRAMS

Program Name
Arg#1Arg#2Result Type
INSERTs3_queue:VOint:V 
REMOVEs3_queue:VO   
FRONTs3_queue:VO  int

(2) CANONICAL TRACES

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

(3) SEMANTICS

ACCESS-PROGRAMS

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

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

Legality(REMOVE((n, T))) =

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

REMOVE((n, T) ) =

ConditionValue
n = 1<-- Different types. T1 where T1:<s3_queue>; a:<int> [T = T1.INSERT(*, a) ]
n 1T1 where T1:<s3_queue>; a:<int> [T = INSERT(*, a).T1 ]

Legality(FRONT((n, T))) =

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

FRONT((n, T) ) = T

FRONT((n, T)) =

ConditionValue
n = 1<-- Different types. a where T1:<s3_queue>; a:<int> [T = T1.INSERT(*, a) ]
n 1a where T1:<s3_queue>; a:<int> [T = INSERT(*, a).T1 ]