MACHINE Rename_Vseq(VALUE,maxsize)
SEES Bool_TYPE
VARIABLES Rename_Vseq
INVARIANT
Rename_Vseq: seq(VALUE) &
size(Rename_Vseq)<=maxsize
INITIALISATION Rename_Vseq:=<>
OPERATIONS
bb <-- Rename_FUL_SEQ =
BEGIN
bb:=bool(size(Rename_Vseq)=maxsize)
END;
bb <-- Rename_XST_IDX_SEQ(ii) =
PRE
ii: 1..maxsize
THEN
bb:=bool(ii:1..size(Rename_Vseq))
END;
Rename_STO_SEQ(ii,vv) =
PRE
vv:VALUE &
ii:1..size(Rename_Vseq)
THEN
Rename_Vseq(ii):=vv
END;
Rename_CLR_SEQ =
BEGIN
Rename_Vseq:=<>
END;
Rename_PSH_SEQ(vv) =
PRE
vv: VALUE &
size(Rename_Vseq) < maxsize
THEN
Rename_Vseq:=Rename_Vseq <- vv
END;
Rename_POP_SEQ =
PRE
size(Rename_Vseq)/=0
THEN
Rename_Vseq:= front(Rename_Vseq)
END;
vv <-- Rename_FST_SEQ =
PRE
size(Rename_Vseq)/=0
THEN
vv := Rename_Vseq(1)
END;
vv <-- Rename_LST_SEQ =
PRE
size(Rename_Vseq)/=0
THEN
vv := Rename_Vseq(size(Rename_Vseq))
END;
Rename_TAL_SEQ =
PRE
size(Rename_Vseq)/=0
THEN
Rename_Vseq := tail(Rename_Vseq)
END;
Rename_KEP_SEQ(ii) =
PRE
ii:0..size(Rename_Vseq)
THEN
Rename_Vseq:=Rename_Vseq /|\ ii
END;
Rename_CUT_SEQ(ii) =
PRE
ii:0..size(Rename_Vseq)
THEN
Rename_Vseq:=Rename_Vseq \|/ ii
END;
Rename_SWP_SEQ(ii,jj) =
PRE
ii: 1..size(Rename_Vseq) &
jj: 1..size(Rename_Vseq)
THEN
Rename_Vseq:= (
Rename_Vseq<+{ii |-> Rename_Vseq(jj), jj |-> Rename_Vseq(ii)}
)
END;
vv <-- Rename_VAL_SEQ(ii) =
PRE
ii:1..size(Rename_Vseq)
THEN
vv:=Rename_Vseq(ii)
END;
nn <-- Rename_LEN_SEQ =
BEGIN
nn:=size(Rename_Vseq)
END;
bb <-- Rename_EMP_SEQ =
BEGIN
bb:=bool(Rename_Vseq=<>)
END;
bb <-- Rename_EQL_SEQ(ii,vv) =
PRE
vv:VALUE &
ii:1..size(Rename_Vseq)
THEN
bb:=bool(Rename_Vseq(ii)=vv)
END;
bb <-- Rename_NEQ_SEQ(ii,vv) =
PRE
vv:VALUE &
ii:1..size(Rename_Vseq)
THEN
bb:=bool(Rename_Vseq(ii)/=vv)
END;
bb,ii <-- Rename_SCH_LO_EQL_SEQ(jj,kk,vv) =
PRE
vv:VALUE &
jj:dom(Rename_Vseq) &
kk:dom(Rename_Vseq)
THEN
LET ss BE
ss = (jj..kk) /\ Rename_Vseq~[{vv}]
IN
bb:=bool(ss/={}) ||
ii:=min(ss \/ {maxsize})
END
END;
bb,ii <-- Rename_SCH_LO_NEQ_SEQ(jj,kk,vv) =
PRE
vv:VALUE &
jj:dom(Rename_Vseq) &
kk:dom(Rename_Vseq)
THEN
LET ss BE
ss = (jj..kk) /\ Rename_Vseq~[(VALUE)-{vv}]
IN
bb:=bool(ss/={}) ||
ii:= min(ss \/ {maxsize})
END
END;
bb,ii <-- Rename_SCH_HI_EQL_SEQ(jj,kk,vv) =
PRE
vv:VALUE &
jj:dom(Rename_Vseq) &
kk:dom(Rename_Vseq)
THEN
LET ss BE
ss = (jj..kk) /\ Rename_Vseq~[{vv}]
IN
bb:=bool(ss/={}) ||
ii:= max(ss \/ {1})
END
END;
bb,ii <-- Rename_SCH_HI_NEQ_SEQ(jj,kk,vv) =
PRE
vv:VALUE &
jj:dom(Rename_Vseq) &
kk:dom(Rename_Vseq)
THEN
LET ss BE
ss = (jj..kk) /\ Rename_Vseq~[(VALUE)-{vv}]
IN
bb:=bool(ss/={}) ||
ii:= max(ss \/ {1})
END
END;
Rename_REV_SEQ(ii,jj) =
PRE
ii:1..size(Rename_Vseq) &
jj:1..size(Rename_Vseq) &
ii <= jj
THEN
LET aa,bb,cc BE
aa = (1..ii-1) <| Rename_Vseq &
bb = %kk.(kk:ii..jj | Rename_Vseq(jj+ii-kk)) &
cc = (jj+1..size(Rename_Vseq)) <| Rename_Vseq
IN
Rename_Vseq := aa \/ bb \/ cc
END
END;
Rename_RHT_SEQ(ii,jj,nn) =
PRE
ii:1..size(Rename_Vseq) &
jj:1..size(Rename_Vseq) &
nn:1..size(Rename_Vseq) &
ii <= jj
THEN
LET aa,bb,cc BE
aa = (1..ii+nn-1) <| Rename_Vseq &
bb = 1..size(Rename_Vseq) <| (
%kk.(kk:ii+nn..(jj+nn) | Rename_Vseq(kk-nn))
) &
cc = (jj+nn+1..size(Rename_Vseq)) <| Rename_Vseq
IN
Rename_Vseq := aa \/ bb \/ cc
END
END;
Rename_LFT_SEQ(ii,jj,nn) =
PRE
ii:1..size(Rename_Vseq) &
jj:1..size(Rename_Vseq) &
nn:1..size(Rename_Vseq) &
ii <= jj
THEN
LET aa,bb,cc BE
aa = (1..ii-nn-1) <| Rename_Vseq &
bb = 1..size(Rename_Vseq) <| (
%kk.(kk:ii-nn..(jj-nn) | Rename_Vseq(kk+nn))
) &
cc = (jj-nn+1..size(Rename_Vseq)) <| Rename_Vseq
IN
Rename_Vseq := aa \/ bb \/ cc
END
END;
/************** save/restore host byte order **************/
Rename_SAV_SEQ = skip;
Rename_RST_SEQ =
ANY vseq WHERE
vseq: seq(VALUE) &
size(vseq) <= maxsize
THEN
Rename_Vseq := vseq
END;
/************** save/restore network byte order **************/
Rename_SAVN_SEQ = skip;
Rename_RSTN_SEQ =
ANY vseq WHERE
vseq: seq(VALUE) &
size(vseq) <= maxsize
THEN
Rename_Vseq := vseq
END
END
Analysed Constructs
Hypertext Constructs Page
On-line Help
Help Contents Page
Index
Document Last Updated: Wed Aug 25 17:36:28 1999

B-Toolkit Beta 4.55