MACHINE Rename_Nseq(maxint,maxsize)
CONSTRAINTS
maxint <= 2147483646 &
maxsize <= 2147483646
SEES Bool_TYPE
VARIABLES Rename_Nseq
INVARIANT
Rename_Nseq: seq(0..maxint) &
size(Rename_Nseq)<=maxsize
INITIALISATION
Rename_Nseq:=<>
OPERATIONS
bb <-- Rename_FUL_NSEQ =
BEGIN
bb:=bool(size(Rename_Nseq)=maxsize)
END;
bb <-- Rename_XST_IDX_NSEQ(ii) =
PRE
ii: 1..maxsize
THEN
bb:=bool(ii:1..size(Rename_Nseq))
END;
/**************** sequence operations ***************/
Rename_STO_NSEQ(ii,vv) =
PRE
vv:0..maxint &
ii:1..size(Rename_Nseq)
THEN
Rename_Nseq(ii):=vv
END;
Rename_CLR_NSEQ =
BEGIN
Rename_Nseq:=<>
END;
Rename_PSH_NSEQ(vv) =
PRE
vv: 0..maxint &
size(Rename_Nseq) < maxsize
THEN
Rename_Nseq:=Rename_Nseq <- vv
END;
Rename_POP_NSEQ =
PRE
size(Rename_Nseq)/=0
THEN
Rename_Nseq:= front(Rename_Nseq)
END;
vv <-- Rename_FST_NSEQ =
PRE
size(Rename_Nseq)/=0
THEN
vv := Rename_Nseq(1)
END;
vv <-- Rename_LST_NSEQ =
PRE
size(Rename_Nseq)/=0
THEN
vv := Rename_Nseq(size(Rename_Nseq))
END;
Rename_TAL_NSEQ =
PRE
size(Rename_Nseq)/=0
THEN
Rename_Nseq := tail(Rename_Nseq)
END;
Rename_KEP_NSEQ(ii) =
PRE
ii:0..size(Rename_Nseq)
THEN
Rename_Nseq:=Rename_Nseq /|\ ii
END;
Rename_CUT_NSEQ(ii) =
PRE
ii:0..size(Rename_Nseq)
THEN
Rename_Nseq:=Rename_Nseq \|/ ii
END;
Rename_SWP_NSEQ(ii,jj) =
PRE
ii: 1..size(Rename_Nseq) &
jj: 1..size(Rename_Nseq)
THEN
Rename_Nseq:=Rename_Nseq<+(
{ii |-> Rename_Nseq(jj), jj |-> Rename_Nseq(ii)}
)
END;
/***************** Queries ************************/
vv <-- Rename_VAL_NSEQ(ii) =
PRE
ii:1..size(Rename_Nseq)
THEN
vv:=Rename_Nseq(ii)
END;
nn <-- Rename_LEN_NSEQ =
BEGIN
nn:=size(Rename_Nseq)
END;
bb <-- Rename_EMP_NSEQ =
BEGIN
bb:=bool(Rename_Nseq=<>)
END;
vv <-- Rename_MAX_IDX_NSEQ(ii,jj) =
PRE
ii: dom(Rename_Nseq) &
jj: dom(Rename_Nseq) &
ran((ii..jj) <| Rename_Nseq) /= {}
THEN
vv::Rename_Nseq~[{max(ran((ii..jj) <| Rename_Nseq))}]
END;
vv <-- Rename_MIN_IDX_NSEQ(ii,jj) =
PRE
ii: dom(Rename_Nseq) &
jj: dom(Rename_Nseq) &
ran((ii..jj) <| Rename_Nseq) /= {}
THEN
vv::Rename_Nseq~[{min(ran((ii..jj) <| Rename_Nseq))}]
END;
/************** Arithmetic operations ***************/
Rename_ADD_NSEQ(ii,vv) =
PRE
vv:0..maxint &
ii:1..size(Rename_Nseq) &
Rename_Nseq(ii)+vv <= maxint
THEN
Rename_Nseq(ii):=Rename_Nseq(ii)+vv
END;
Rename_MUL_NSEQ(ii,vv) =
PRE
vv:0..maxint &
ii:1..size(Rename_Nseq) &
Rename_Nseq(ii)*vv <= maxint
THEN
Rename_Nseq(ii):=Rename_Nseq(ii)*vv
END;
Rename_SUB_NSEQ(ii,vv) =
PRE
vv:0..maxint &
ii:1..size(Rename_Nseq) &
Rename_Nseq(ii)-vv >= 0
THEN
Rename_Nseq(ii):=Rename_Nseq(ii)-vv
END;
Rename_DIV_NSEQ(ii,vv) =
PRE
vv:1..maxint &
ii:1..size(Rename_Nseq)
THEN
Rename_Nseq(ii):=Rename_Nseq(ii)/vv
END;
Rename_MOD_NSEQ(ii,vv) =
PRE
vv:1..maxint &
ii:1..size(Rename_Nseq)
THEN
Rename_Nseq(ii):=Rename_Nseq(ii)-vv*(Rename_Nseq(ii)/vv)
END;
/************** equality queries **************/
bb <-- Rename_EQL_NSEQ(ii,vv) =
PRE
vv:0..maxint &
ii:1..size(Rename_Nseq)
THEN
bb:=bool(Rename_Nseq(ii)=vv)
END;
bb <-- Rename_NEQ_NSEQ(ii,vv) =
PRE
vv:0..maxint &
ii:1..size(Rename_Nseq)
THEN
bb:=bool(Rename_Nseq(ii)/=vv)
END;
bb <-- Rename_GTR_NSEQ(ii,vv) =
PRE
vv:0..maxint &
ii:1..size(Rename_Nseq)
THEN
bb:=bool(Rename_Nseq(ii)>vv)
END;
bb <-- Rename_GEQ_NSEQ(ii,vv) =
PRE
vv:0..maxint &
ii:1..size(Rename_Nseq)
THEN
bb:=bool(Rename_Nseq(ii)>=vv)
END;
bb <-- Rename_SMR_NSEQ(ii,vv) =
PRE
vv:0..maxint &
ii:1..size(Rename_Nseq)
THEN
bb:=bool(Rename_Nseq(ii)<vv)
END;
bb <-- Rename_LEQ_NSEQ(ii,vv) =
PRE
vv:0..maxint &
ii:1..size(Rename_Nseq)
THEN
bb:=bool(Rename_Nseq(ii)<=vv)
END;
/***************** Searching *********************/
bb,ii <-- Rename_SCH_LO_EQL_NSEQ(jj,kk,vv) =
PRE
vv:0..maxint &
jj:dom(Rename_Nseq) &
kk:dom(Rename_Nseq)
THEN
LET ss BE
ss = (jj..kk) /\ Rename_Nseq~[{vv}]
IN
bb:=bool(ss/={}) ||
ii:=min(ss \/ {maxsize})
END
END;
bb,ii <-- Rename_SCH_LO_NEQ_NSEQ(jj,kk,vv) =
PRE
vv:0..maxint &
jj:dom(Rename_Nseq) &
kk:dom(Rename_Nseq)
THEN
LET ss BE
ss = (jj..kk) /\ Rename_Nseq~[(0..maxint)-{vv}]
IN
bb:=bool(ss/={}) ||
ii:= min(ss \/ {maxsize})
END
END;
bb,ii <-- Rename_SCH_LO_GEQ_NSEQ(jj,kk,vv) =
PRE
vv:0..maxint &
jj:dom(Rename_Nseq) &
kk:dom(Rename_Nseq)
THEN
LET ss BE
ss = (jj..kk) /\ Rename_Nseq~[vv..maxint]
IN
bb:=bool(ss/={}) ||
ii:= min(ss \/ {maxsize})
END
END;
bb,ii <-- Rename_SCH_LO_GTR_NSEQ(jj,kk,vv) =
PRE
vv:0..maxint &
jj:dom(Rename_Nseq) &
kk:dom(Rename_Nseq)
THEN
LET ss BE
ss = (jj..kk) /\ Rename_Nseq~[vv+1..maxint]
IN
bb:=bool(ss/={}) ||
ii:= min(ss \/ {maxsize})
END
END;
bb,ii <-- Rename_SCH_LO_LEQ_NSEQ(jj,kk,vv) =
PRE
vv:0..maxint &
jj:dom(Rename_Nseq) &
kk:dom(Rename_Nseq)
THEN
LET ss BE
ss = (jj..kk) /\ Rename_Nseq~[0..vv]
IN
bb:=bool(ss/={}) ||
ii:= min(ss \/ {maxsize})
END
END;
bb,ii <-- Rename_SCH_LO_SMR_NSEQ(jj,kk,vv) =
PRE
vv:0..maxint &
jj:dom(Rename_Nseq) &
kk:dom(Rename_Nseq)
THEN
LET ss BE
ss = (jj..kk) /\ Rename_Nseq~[ 0..vv-1]
IN
bb:=bool(ss/={}) ||
ii:= min(ss \/ {maxsize})
END
END;
bb,ii <-- Rename_SCH_HI_EQL_NSEQ(jj,kk,vv) =
PRE
vv:0..maxint &
jj:dom(Rename_Nseq) &
kk:dom(Rename_Nseq)
THEN
LET ss BE
ss = (jj..kk) /\ Rename_Nseq~[{vv}]
IN
bb:=bool(ss/={}) ||
ii:= max(ss \/ {1})
END
END;
bb,ii <-- Rename_SCH_HI_NEQ_NSEQ(jj,kk,vv) =
PRE
vv:0..maxint &
jj:dom(Rename_Nseq) &
kk:dom(Rename_Nseq)
THEN
LET ss BE
ss = (jj..kk) /\ Rename_Nseq~[(0..maxint)-{vv}]
IN
bb:=bool(ss/={}) ||
ii:= max(ss \/ {1})
END
END;
bb,ii <-- Rename_SCH_HI_GEQ_NSEQ(jj,kk,vv) =
PRE
vv:0..maxint &
jj:dom(Rename_Nseq) &
kk:dom(Rename_Nseq)
THEN
LET ss BE
ss = (jj..kk) /\ Rename_Nseq~[vv..maxint]
IN
bb:=bool(ss/={}) ||
ii:= max(ss \/ {1})
END
END;
bb,ii <-- Rename_SCH_HI_GTR_NSEQ(jj,kk,vv) =
PRE
vv:0..maxint &
jj:dom(Rename_Nseq) &
kk:dom(Rename_Nseq)
THEN
LET ss BE
ss = (jj..kk) /\ Rename_Nseq~[vv+1..maxint]
IN
bb:=bool(ss/={}) ||
ii:= max(ss \/ {1})
END
END;
bb,ii <-- Rename_SCH_HI_LEQ_NSEQ(jj,kk,vv) =
PRE
vv:0..maxint &
jj:dom(Rename_Nseq) &
kk:dom(Rename_Nseq)
THEN
LET ss BE
ss = (jj..kk) /\ Rename_Nseq~[0..vv]
IN
bb:=bool(ss/={}) ||
ii:= max(ss \/ {1})
END
END;
bb,ii <-- Rename_SCH_HI_SMR_NSEQ(jj,kk,vv) =
PRE
vv:0..maxint &
jj:dom(Rename_Nseq) &
kk:dom(Rename_Nseq)
THEN
LET ss BE
ss = (jj..kk) /\ Rename_Nseq~[ 0..vv-1]
IN
bb:=bool(ss/={}) ||
ii:= max(ss \/ {1})
END
END;
/************** Re-ordering **********************/
Rename_SRT_ASC_NSEQ(ii,jj) =
PRE
ii:1..size(Rename_Nseq) &
jj:1..size(Rename_Nseq) &
ii <= jj
THEN
ANY ff,aa,bb,cc WHERE
ff: (ii..jj) >->> (ii..jj) &
aa = (1..ii-1) <| Rename_Nseq &
bb: NAT +-> (0..maxint) &
bb = (ff;Rename_Nseq) &
!kk.(kk:ii..jj-1 => bb(kk) <= bb(kk+1)) &
cc = (jj+1..size(Rename_Nseq)) <| Rename_Nseq
THEN
Rename_Nseq := aa \/ bb \/ cc
END
END;
Rename_SRT_DSC_NSEQ(ii,jj) =
PRE
ii:1..size(Rename_Nseq) &
jj:1..size(Rename_Nseq) &
ii <= jj
THEN
ANY ff,aa,bb,cc WHERE
ff: ii..jj >->> ii..jj &
aa = (1..ii-1) <| Rename_Nseq &
bb: NAT +-> (0..maxint) &
bb = (ff;Rename_Nseq) &
!kk.(kk:ii..jj-1 => bb(kk) >= bb(kk+1)) &
cc = (jj+1..size(Rename_Nseq)) <| Rename_Nseq
THEN
Rename_Nseq := aa \/ bb \/ cc
END
END;
Rename_REV_NSEQ(ii,jj) =
PRE
ii:1..size(Rename_Nseq) &
jj:1..size(Rename_Nseq) &
ii <= jj
THEN
LET aa,bb,cc BE
aa = (1..ii-1) <| Rename_Nseq &
bb = %kk.(kk:ii..jj | Rename_Nseq(jj+ii-kk)) &
cc = (jj+1..size(Rename_Nseq)) <| Rename_Nseq
IN
Rename_Nseq := aa \/ bb \/ cc
END
END;
Rename_RHT_NSEQ(ii,jj,nn) =
PRE
ii:1..size(Rename_Nseq) &
jj:1..size(Rename_Nseq) &
nn:1..size(Rename_Nseq) &
ii <= jj
THEN
LET aa,bb,cc BE
aa = (1..ii+nn-1) <| Rename_Nseq &
bb = 1..size(Rename_Nseq) <| (
%kk.(kk:ii+nn..(jj+nn) | Rename_Nseq(kk-nn))
) &
cc = (jj+nn+1..size(Rename_Nseq)) <| Rename_Nseq
IN
Rename_Nseq := aa \/ bb \/ cc
END
END;
Rename_LFT_NSEQ(ii,jj,nn) =
PRE
ii:1..size(Rename_Nseq) &
jj:1..size(Rename_Nseq) &
nn:1..size(Rename_Nseq) &
ii <= jj
THEN
LET aa,bb,cc BE
aa = (1..ii-nn-1) <| Rename_Nseq &
bb = 1..size(Rename_Nseq) <| (
%kk.(kk:ii-nn..(jj-nn) | Rename_Nseq(kk+nn))
) &
cc = (jj-nn+1..size(Rename_Nseq)) <| Rename_Nseq
IN
Rename_Nseq := aa \/ bb \/ cc
END
END;
/************** save/restore host byte order **************/
Rename_SAV_NSEQ = skip;
Rename_RST_NSEQ =
ANY nseq WHERE
nseq: seq(0..maxint) &
size(nseq) <= maxsize
THEN
Rename_Nseq := nseq
END;
/************** save/restore network byte order **************/
Rename_SAVN_NSEQ = skip;
Rename_RSTN_NSEQ =
ANY nseq WHERE
nseq: seq(0..maxint) &
size(nseq) <= maxsize
THEN
Rename_Nseq := nseq
END
END
Analysed Constructs
Hypertext Constructs Page
On-line Help
Help Contents Page
Index
Document Last Updated: Wed Aug 25 17:36:07 1999

B-Toolkit Beta 4.55