Unbounded_Integer_Table_List Module Interface Specification

(0) CHARACTERISTICS

-type specified: tl

-features: deterministic, non-parameterized

-foreign types:

(1) SYNTAX

ACCESS-PROGRAMS

Program Name
Arg#1Arg#2Result Type
INSERTtl:VOint:V 
ALTERtl:VOint:V 
DELETEtl:V   
EXLEFTtl:V  bool
EXRIGHTtl:V  bool
OUTtl:V  bool
GOLEFTtl:VO   
GORIGHTtl:VO   
CURRENTtl:V  int

(2) CANONICAL TRACES

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

(3) SEMANTICS

ACCESS-PROGRAMS

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

INSERT((n, T) , a) =

ConditionValue
T = _ INSERT(*, a)
T _S1.INSERT(*, a).S2.S3 where S1,S2,S3:<tl>; k:<int>; c[1]..c[k]:<int> [T = S1.S2.S3 S2 = [INSERT(*, c[i])]i=1..k S3 = [GOLEFT(*)]i=1..k ]

Legality(ALTER((n, T), b)) =

ConditionValue
count(T, "INSERT") = count(T, "GOLEFT") %nocurrent%
count(T, "INSERT") > count(T, "GOLEFT")%legal%

ALTER((n, T) , b) = S1.INSERT(*, aa).S2.S3 where S,S1,S2,S3:<tl>; aa,k:<int>; a[1]..a[k]:<int> [T = S.S1.S2.S3 S1 = INSERT(*, aa) S2 = [INSERT(*, a[i])]i=1..k S3 = [GOLEFT(*)]i=1..k ]

Legality(DELETE(T)) =

ConditionValue
count(T, "INSERT") = count(T, "GOLEFT") %nocurrent%
count(T, "INSERT") > count(T, "GOLEFT")%legal%

Legality(EXLEFT(T)) = %legal%

EXLEFT(T) = count(T, "INSERT") > count(T, "GOLEFT")

Legality(EXRIGHT(T)) = %legal%

EXRIGHT(T) = count(T, "GOLEFT") > 0

Legality(OUT(T)) = %legal%

OUT(T) = count(T, "INSERT") = count(T, "GOLEFT")

Legality(GOLEFT((n, T))) =

ConditionValue
count(T, "INSERT") = count(T, "GOLEFT") %noleft%
count(T, "INSERT") > count(T, "GOLEFT")%legal%

GOLEFT((n, T) ) = T.GOLEFT(*)

Legality(GORIGHT((n, T))) =

ConditionValue
count(T, "GOLEFT") = 0 %noright%
count(T, "GOLEFT") > 0%legal%

GORIGHT((n, T) ) = T1 where T1:<tl> [T = T1.GOLEFT(*) ]

Legality(CURRENT(T)) =

ConditionValue
count(T, "INSERT") = count(T, "GOLEFT") %nocurrent%
count(T, "INSERT") > count(T, "GOLEFT")%legal%

CURRENT(T) = aa where S,S1,S2,S3:<tl>; aa,k:<int>; a[1]..a[k]:<int> [T = S.S1.S2.S3 S1 = INSERT(*, aa) S2 = [INSERT(*, a[i])]i=1..k S3 = [GOLEFT(*)]i=1..k ]