MACHINE Rename_Varr(VALUE,maxidx)
SEES Bool_TYPE
CONSTRAINTS maxidx>0
VARIABLES Rename_Varr
INVARIANT Rename_Varr: 1..maxidx --> VALUE
INITIALISATION Rename_Varr:: 1..maxidx --> VALUE
OPERATIONS
bb <-- Rename_TST_IDX_ARR(ii) =
PRE
ii: NAT
THEN
bb := bool(ii:1..maxidx)
END;
vv <-- Rename_VAL_ARR(ii) =
PRE
ii:1..maxidx
THEN
vv:=Rename_Varr(ii)
END;
Rename_STO_ARR(ii,vv) =
PRE
vv:VALUE &
ii:1..maxidx
THEN
Rename_Varr(ii):=vv
END;
bb <-- Rename_EQL_ARR(ii,vv) =
PRE
vv:VALUE &
ii:1..maxidx
THEN
bb:=bool(Rename_Varr(ii)=vv)
END;
bb <-- Rename_NEQ_ARR(ii,vv) =
PRE
vv:VALUE &
ii:1..maxidx
THEN
bb:=bool(Rename_Varr(ii)/=vv)
END;
bb,ii <-- Rename_SCH_LO_EQL_ARR(jj,kk,vv) =
PRE
vv:VALUE &
jj:1..maxidx &
kk:1..maxidx
THEN
LET ss BE
ss = (jj..kk) /\ Rename_Varr~[{vv}]
IN
bb:=bool(ss/={}) ||
ii:= min(ss \/ {maxidx})
END
END;
bb,ii <-- Rename_SCH_LO_NEQ_ARR(jj,kk,vv) =
PRE
vv:VALUE &
jj:1..maxidx &
kk:1..maxidx
THEN
LET ss BE
ss = (jj..kk) /\ Rename_Varr~[(VALUE)-{vv}]
IN
bb:=bool(ss/={}) ||
ii:= min(ss \/ {maxidx})
END
END;
bb,ii <-- Rename_SCH_HI_EQL_ARR(jj,kk,vv) =
PRE
vv:VALUE &
jj:1..maxidx &
kk:1..maxidx
THEN
LET ss BE
ss = (jj..kk) /\ Rename_Varr~[{vv}]
IN
bb:=bool(ss/={}) ||
ii:= max(ss \/ {1})
END
END;
bb,ii <-- Rename_SCH_HI_NEQ_ARR(jj,kk,vv) =
PRE
vv:VALUE &
jj:1..maxidx &
kk:1..maxidx
THEN
LET ss BE
ss = (jj..kk) /\ Rename_Varr~[(VALUE)-{vv}]
IN
bb:=bool(ss/={}) ||
ii:= max(ss \/ {1})
END
END;
Rename_REV_ARR(ii,jj) =
PRE
ii:1..maxidx &
jj:1..maxidx &
ii < jj
THEN
LET Same,Rev BE
Same = (1..ii-1\/jj+1..maxidx) <| Rename_Varr &
Rev = %kk.(kk:ii..jj | Rename_Varr(jj+ii-kk))
IN
Rename_Varr := Same \/ Rev
END
END;
Rename_RHT_ARR(ii,jj,nn) =
PRE
ii:1..maxidx &
jj:1..maxidx &
nn:1..maxidx &
ii <= jj
THEN
LET Same, RShift BE
Same = ((1..ii+nn-1)\/(jj+nn+1..maxidx)) <| Rename_Varr &
RShift = %kk.(kk:ii+nn..min({maxidx,jj+nn}) | Rename_Varr(kk-nn))
IN
Rename_Varr := Same \/ RShift
END
END;
Rename_LFT_ARR(ii,jj,nn) =
PRE
ii:1..maxidx &
jj:1..maxidx &
nn:1..maxidx &
ii <= jj
THEN
LET Same, LShift BE
Same = ((1..ii-nn-1)\/(jj-nn+1..maxidx)) <| Rename_Varr &
LShift = %kk.(kk:max({1,ii-nn})..jj-nn | Rename_Varr(kk+nn)) IN
Rename_Varr := Same \/ LShift
END
END;
Rename_SWP_ARR(ii,jj) =
PRE
ii: 1..maxidx &
jj: 1..maxidx
THEN
Rename_Varr:=
Rename_Varr<+{ii |-> Rename_Varr(jj), jj |-> Rename_Varr(ii)}
END;
/************** save/restore host byte order **************/
Rename_SAV_ARR = BEGIN skip END;
Rename_RST_ARR =
BEGIN Rename_Varr :: 1..maxidx --> VALUE END;
/************** save/restore network byte order **************/
Rename_SAVN_ARR = BEGIN skip END;
Rename_RSTN_ARR =
BEGIN Rename_Varr :: 1..maxidx --> VALUE END
END
Analysed Constructs
Hypertext Constructs Page
On-line Help
Help Contents Page
Index
Document Last Updated: Wed Aug 25 17:36:18 1999

B-Toolkit Beta 4.55