R ENDICONTI
del
S EMINARIO M ATEMATICO
della
U NIVERSITÀ DI P ADOVA
G IORGIO C ASADEI
R OBERTO R IGHI
A NTONIO G. B. T EOLIS
Una teoria algebrica per i « guarded commands » di Dijkstra
Rendiconti del Seminario Matematico della Università di Padova, tome 59 (1978), p. 269-283
<http://www.numdam.org/item?id=RSMUP_1978__59__269_0>
© Rendiconti del Seminario Matematico della Università di Padova, 1978, tous droits réservés.
L’accès aux archives de la revue « Rendiconti del Seminario Matematico della Università di Padova » (http://rendiconti.math.unipd.it/) implique l’accord avec les conditions générales d’utilisation (http://www.numdam.org/conditions).
Toute utilisation commerciale ou impression systématique est constitutive d’une infraction pénale. Toute copie ou impression de ce fichier doit conte- nir la présente mention de copyright.
Article numérisé dans le cadre du programme Numérisation de documents anciens mathématiques
http://www.numdam.org/
algebrica
per i
«guarded commands » di Dijkstra.
GIORGIO CASADEI
(*) -
ROBERTO RIGHI(**)
ANTONIO G. B. TEOLIS
(***)
0. Introduzione.
In
questo
lavoro si considera una teoriaalgebrica
chepermette, analogamente
aquella
costruitaoriginariamente
da Kott[0,1, 2],
di associare aqualsiasi
flow-chart un sistema diequazioni algebriche
edi pensare il programma ad essa
corrispondente
come la soluzione delsistema medesimo. La differenza con le
precedenti
teorie è che si intro-ducono
gli analoghi algebrici (anzichè
dell’if-then-else e deldo-while)
delle strutture di controllo definite da
Dijkstra [3],
cioè:i) i f (guarded-command list) f z ii)
do(guarded-command list)
odove
(guarded-command list>
. _(guarded-command) I
~guarded-command
0 guarded-command>
guarded-command~ : _ predicate)
-~statement list)
per la cui
interpretazione
si rimandaall’originale [3] ( 1 ) .
(*) Indirizzo dell’A.: Università di Padova, Istituto di Matematica
Applicata.
(**) Indirizzo dell’A.: Università di
Bologna,
Istituto di Geometria.(***) Indirizzo dell’A.: C.N.E.N., Centro di Calcolo di
Bologna.
(~)
La notazionequi impiegata
èleggermente
diversadall’originale;
inparticolare
è usato « list » invece di « set » perragioni
che saranno immedia-tamente evidenti,
Per comodità chiameremo le suddette due strutture di controllo
rispettivamente
IF e DO.Nel
paragrafo
1 sono richiamate leprincipali
definizioni cheriguar-
dano l’ambiente teorico al
quale appartiene
il formalismousato;
nelparagrafo
2 si costruisce laopportuna algebra
apiù tipi
e si chiari- fica la relazione che essa ha conquella
introdotta in[2] ;
nel para-grafo
3 si mostra come con le suddette strutture siapossibile
scrivereprogrammi corrispondenti
alpiù
a flow-chartpathwise equivalenti ([4])
a una D-chart. Le strutture di
Dijkstra, qualora
il loro uso venga ristretto allo studio diflow-charts,
pur non essendopiù potenti
delloif-then-else e del
do-while,
sonovantaggiose
inquanto
in taluni casi si viene ad evitare laduplicazione
diparti
di programma(node-split- ting)
non altrimenti evitabile usando le altre due strutture. Contra- riamente alla situazioneesposta
in[2],
inquesto
caso laespressione
della soluzione del sistema
algebrico
non è unica e inquesto
lavoronon viene data una
procedura
risolutivagenerale
per la soluzione inuna forma desiderata
(per esempio quella più compatta,
cioè con ilminor numero di
parti
di programmaduplicate) ;
si definiscono invece casiparticolari
di ottimizzazione localeche,
in certecondizioni,
pro- ducono anche una ottimizzazioneglobale.
La teoria
esposta
è facilmentegeneralizzabile
al caso dipredicati
a
più (di due) valori;
anche inquesto
caso le strutture diDijkstra
si rivelano di
grande potenza (come
del resto le strutture diZahn).
1. Preliminari
algebrici.
Con riferimento al formalismo introdotto in
[5]
siriprendono (in
maniera non
rigorosa)
leseguenti
definizioni.Sia un
insieme,
nonvuoto,
i cui elementi sono dettitipi.
Sia Auna
famiglia
digenerici
insiemiA.
con s E S. Con w si indichi unaparola
su~’,
cioèposto
lalunghezza
ndi 2u è indicata
con Iwl.
Perogni
e perogni
s,rappresenti
uninsieme di simboli
(di operazioni
da~8~
x... ad~s )
la cuiarità è .
1:& ~
Una
segnatura Z
è unafamiglia
di~w, s .
Un elemento di un gene- rico s di unasegnatura
viene indicato con cr.Dato 1 una
E-algebra
si ottienespecificando gli
insiemiAs (cioè assegnando ogni sostegno A.s
ditipo s)
e associando adogni
simboloa E una effettiva
operazione
a.4:xA,,
X ... Se A rap-presenta
laparola
vuotasu S, ~~,$
è l’insieme delleoperazioni
0-ariedi
tipo
s. Tuttigli
elementi diAs
ottenibili come risultati di opera- zioniappartenenti
a~~, ~
si dicono costanti diAs :
ciascunaoperazione
0-aria
può
essere indicata con larispettiva
costante.Fissata una
segnatura E
si dicealgebra
delleparole (word-algebra)
la
particolare E-algebra,
indicata conTE
che si ottiene nel modoseguente.
Sia0~
l’insieme di tutti i simboli dioperazioni
della segna- tura 1(0z =
sia lapiù piccola famiglia
di insiemiW,3
’
contenuti in
(0 E U {( , )})*
tale che :La
Tz
si ottieneprendendo
lafamiglia
deiT X8
comefamiglia
deisostegni
e comeoperazioni
leseguenti:
Nel
seguito,
per laparticolare segnatura Z
utilizzata inquesto lavoro,
si considera laE-algebra CTE,
che è sostanzialmente la 1:-word-algebra
ai cuisupporti
sono stateaggiunte parole (stringhe
oalberi)
di
lunghezza
infinita. Permaggiori dettagli
si rimanda a[5].
2. Costruzione dell’ambiente.
Quando
siapplica questo
formalismo allo studio diflow-charts,
ad
ogni tipo può
essere data una benprecisa interpretazione.
Inparti- colare,
nelpresente lavoro,
l’insieme deitipi
èdove:
1)
iltipo
a individuagenericamente parti
di programma(che
non
contengono
nè lo « start » nè lo «stop »)
che hanno una sola entratae una sola uscita: le costanti di
tipo
a sono le azionielementari;
2)
iltipo y
individua le code di programma(cioè parti
di pro- gramma ad una sola entrata che terminano tutte con lo «stop ») :
lacostante di
tipo
y è ,~(cioè
lo« stop ») ;
3)
iltipo
b individua ipredicati (funzioni booleane);
4)
iltipo
individua solo lo « start »;5)
iltipo
p individua iprogrammi ;
6)
iltipo a
individuaguarded-command
listsquando
ipredicati
sono a
guardia
dioggetti
ditipo
a;7)
iltipo g
individuaguarded-command
listsquando
ipredicati
sono a
guardia
dioggetti
ditipo
y.La
segnatura 1
che si utilizza è:costante del
tipo y,
costante del
tipo
~, costanti deltipo
p,costanti di
tipo b (predicati),
costanti di
tipo
a(azioni elementari),
costanti del
tipo
g, costanti deltipo a,
operazione
unitaria not supredicati, operazione if
...f i
suguarded-command
listdi
tipo
g,operazione i f ... f i
suguarded-command
listdi
tipo
a,concatenazioni,
concatenazione tra un
predicato
ed un og-getto
ditipo
a(y)
che dà unguarded-com-
mand di
tipo a (g),
concatenazioni tra
guarded-command
lists( ~ ) .
Nella
CT~
associata alleprecedenti definizioni,
per uniformità di notazione con laprecedente
letteratura[o,1, 2, 3],
si usano le scrit-ture
riportate
diseguito nella colonna di sinistra anziché quelle
con-formi alla notazione standard sopra definita
(e
scritte nella colonna didestra):
Il simbolo che indica la
concatenazione,
y chepuò
interessare i varitipi,
è di solito omesso. Persemplicità
si ometterà anche il sim- bolo - caratteristico delguarded-command
nelquale
associa adogni predicato
l’azione che deve essereeseguita
sequesto
è vero.Si consideri la varietà
equazionale
V definita dalleseguenti
equa-zioni,
cioè l’insieme delleZ-algebre
che le soddisfano:Come diretta conseguenza della
iv)
si ha:Il considerare tale varietà
equazionale
èsuggerito
dalparticolare
uso che si farà
dell’algebra
costruita: leprecedenti equazioni rispec-
chiano caratteristiche
tipiche degli oggetti
che costituiscono un pro- gramma : peresempio
lai)
afferma la associatività della concatena- zione distatements,
mentre laiii)
identifica laparticolare
azione Icon la identità
(la
azione che lascia inalterate le variabili del pro-gramma).
Laiv)
assume unparticolare significato: qualora
si consideril’operazione -
comel’operazione not,
essapermette
di identificare la struttura[... + ... + ... + ...]
conl’IF,
oveperò
il + non è commu- tativo a differenza di0 (perciò
si è usato « list » invece di « set»)
econ la
seguente ipotesi aggiuntiva:
I.A.
Quando
nella lista diguarded-command
c’èpiù
di un pre-dicato vero, viene
eseguita
l’azionepiù
a sinistra(nella somma)
traquelle
il cuipredicato guardia
risulta vero.In
analogia
conquanto
fatto in[2]
si definisce laE(X)
come lasegnatura
ottenuta dallaprecedente Z ponendo:
ove X e sono insiemi
disgiunti
daE,
i cui elementi verranno chia- mati variabili(xo
variabileprincipale) (2).
I
sostegni
diCTx(X)
possono esserepensati
come isostegni
di unaZ-algebra
che chiameremo(in
cui le x,appunto,
sono scom-parse come
operazioni
0-arie erimangono
solo neisostegni).
Come per le
E-algebre
èparticolarmente significativa l’algebra CTZ
cos per una certa varietà V è
particolarmente significativa l’algebra
ottenuta introducendo in
CT~
la relazione diequivalenza Q corrispondente
in maniera naturale al sistema diequazioni
che defi-nisce la varietà V e
ponendo CTxy
= si costruisce in manieraanaloga (3).
Si
può quindi
considerare un sistema E su come unafunzione E: ove
X n
è unan-pla
di elementi distinti di X U{X.},
uno deiquali
supporremo sempre sia xo .DEF. 1.0. Un sistema è detto uniforme se
ogni
membro destro delleequazioni
ha una delle due formedove e
A E ~~ b .
Sia data una flow-ehart. Ad essa è associabile un sistema uniforme secondo la
seguente procedura:
si pone una variabilexj, j
=1,
... , n, (2) Non si confondano queste variabili con le variabili del programma.(3) Per
semplicità
si indicherà un elemento diCT~~
con unqualunque
elemento
equivalente
diCT~ .
all’ingresso
diogni
box dellaflow-chart,
xo sullostart,
SZ sullostop,
e si scrive per
ogni
=0, 1,
... , n, unaequazione
ove il membrodestro è cos costruito:
se il cammino
computazionale tra xi
e xk passa solo per il boxrappresentativo
dell’azione a ; se Xj è all’entrata delpredicato
A e se il camminocomputazionale
vada xj
a xk se A è vero e daXj a xi se A è falso
(A
èvero).
Ci si
può
facilmente convincereche,
dato un sistemauniforme,
èpossibile associargli
una flow-chartinvertendo,
per cosdire,
la pro- cedura appena detta.Si ricorda che anche nella teoria
algebrica
introdottaoriginaria-
mente da Kott
[0]
si faceva una simile associazione(si
veda anche[1, 2]). Dunque
sipuò
dare attraverso la flow-chart unacorrispondenza
tra sistemi di
equazioni nell’algebra
costruita dallasegnatura
sopra introdotta - che chiamiamoAD e quelli nell’algebra
introdottain
[2]
- che chiameremoA_,.
DEF. 2.1. Siano
E~
edE2
due sistemi uniformirispettivamente
in
AD
eAK. E1
edE2
sono dettiequivalenti (E1 ~ E2)
se adEi
edE2
è associata la stessa flow-chart.
Una tale
corrispondenza
non si limita ai sistemi consideratiglo- balmente,
ma essendouguale
il modo di assegnare levariabili,
essapuò
essere estesaprima
ai sottinsiemi epoi
aisingoli
termini. Risulta inparticolare
La
i) esprime
il fatto che la struttura di controllo if è un caso par- ticolare di struttura IFquando
i duepredicati-guardia
sono uno lanegazione
dell’altro. Inoltre dallaequazione iv)
si ha(4) :
(4) Questa
equivalenza rispecchia
anche laequivalenza
fra struttura « case » e annidamento di if.Si noti che la
-corrispondenza
di cui sopra è strettamentelegata
al fatto di avere introdotto
l’ipotesi aggiuntiva
I.A. sulle struttureIF;
d’altra
parte
il carattere di indeterminazione della IF èsuperfluo
inun contesto di flow-eharts deterministiche.
Inoltre,
se si fosse considerata in[2]
anche unaparticolare
azione col(1’«
abort»)
tale che wt = w, Vt ditipo
a em8 = S2, ’~I~
ditipo y,
allora si avrebbe anche la
equivalenza
Cos ,
in virtù delle(2.1)
e(2.2)
adogni
struttura IFpuò
esserefatta
corrispondere
un if o un annidamento diif,
e ovviamente adogni
ifcorrisponde
una struttura IF.Essendosi stabilita una
corrispondenza
tra le struttureelementari, questa
dà lapossibilità
di confrontare sistemi diqualsiasi tipo
scrittinelle due differenti
notazioni,
cioè inAD e A,,. Inoltre,
ricordandole
(2.0)
e le definizioni di sistema uniforme date perAD
eA~,
si hache a sistemi uniformi in una delle due
algebre corrispondono
sistemiuniformi nell’altra.
3.
Principali
risultati.Si consideri la
equazione
alpunto
unito:a cui
corrisponde,
perquanto
detto nelparagrafo precedente,
la equa-zione in
AK :
Come ben noto da
[5]
la soluzione della(3.0)
in è unica(considerando xk
comeparametro).
Si conviene di scrivere tale solu- zione nellaseguente
maniera:(5)
Una simile notazione non è eccessivamente arbitraria inquanto
laespressione
di cui soprapuò
essere pensata scritta comel’asterisco
quindi
ha unsignificato
inqualche
manieraanalogo
aquello
delleespressioni regolari,
Considerando la fl.ow-chart associata al
(3.0) riportata
infig. 1,
Figura 1
ci si
può
facilmente convincere che la notazione[Aa]* rappresenta
lastruttura DO ove un solo
guarded-command
è coinvolto. Tale strut-tura,
perl’interpretazione
datane daDijkstra, corrisponde
ad un do-while,
ilquale
è effettivamente soluzione dellaequazione (3.1),
chein
[0, 1, 2]
è stata indicata con:Si consideri ora il sottosistema:
a cui
corrisponde
il sottosistema scritto nell’altra notazione:e la sottoflow-chart
seguente:
Come ben noto da
[5]
la soluzione è unica(considerando Xin+1
comeparametro).
Si conviene di scrivere la soluzionerispetto
a1;,
nellaseguente
maniera:ove la
precedente
scrittura indica una struttura DO diDijkstra
ovesia stata mantenuta
l’ipotesi aggiuntiva
I.A.Questo
è facilmente veri- ficabile confrontando la flow-chart(3.4)
e la definizione del DO.Si noti che anche il sottosistema costituito delle
prime n -1
equa- zioni del(3.2)
ha la stessa struttura del(3.2)
e la sua soluzionepuò
essere scritta nella stessa maniera:
da
cui,
sostituendo e risolvendol’equazione
alpunto unito,
si ottiene:Analogamente
èpossibile
consideraredapprima
le equa-zioni
(~ = 0, 1, ... , rc -1 ) le quali
formano ancora un sottosistema deltipo (3.2)
eprocedere
nella soluzione di conseguenza. Si noti che ilcaso
dell’equazione
alpunto
unito(3.0)
è un casoparticolare
di sistematipo (3.2)
ove n = 1.Si ha di conseguenza
che,
mentre laespressione
della(unica!)
solu-zione del sistema
(3.3)
in termini di do-while èunica,
la soluzione(unica!)
del sistema(3.2) può
essere espressa inpiù
modi. D’altraparte questa
è una diretta conseguenza dellaequivalenza
tra unastruttura IF costruita con una somma di
più
addendi e l’innestamento dipiù
strutture IF elementari a due addendi dai valori di verità mutuamente escludentesi.Confrontando le soluzioni ottenute attraverso differenti
processi
riso-lutivi
(si
considera il sistema di n -l equazioni
1 =0, 1, ... , n -1 ),
siottengono
leuguaglianze
Vale il
seguente
TEOREMA. Sono risolvibili in termini di IF e DO solo e tutti i sistemi
corrispondenti
a flow-charts che sonopathwise equivalenti
aduna D-chart.
Infatti sia dato un sistema ottenuto da una flow-chart
pathwise equivalente
ad una D-chart. Ad essocorrisponde
nella notazione di Kott un sistema risolvibile in termini di strutture do-while[2].
Usandola
equivalenza
tra tale struttura e il DO con un soloaddendo,
sipuò
direttamente esibire una soluzione del sistema
originale
in termini di IF e DO.D’altra
parte
sia dato un sistema la cui soluzione è espressa mediante IF e DO.Ogni
IF e DO èesprimibile
in termini di IF e DO « elemen- tari » direttamente traducibili in unaespressione
dove vengono usate strutture if e do-while.Dunque
il sistema alla Kottequivalente
aldato ammette soluzioni in termini al
più
di do-while. Esso allora cor-risponde
ad una flow-chartpathwise equivalente
ad una D-chart[2],
s che anche il sistema
originale
risulta esserlo.(QED.)
Ci si
può
domandarequale
tra le varieespressioni
della soluzionedi un sistema sia da
preferire,
e se eventualmente esiste un metodo per ottenerla. Un criteriopossibile
sarebbequello
dipreferire
sempre laespressione
«più compatta »
cioèquella
ovepredicati
ed azioni sonoripetuti
il minor numero di voltepossibile,
ottenuta cioè con il minornumero
possibile
dinode-splitting.
Sfortunatamentequesto
criterio nonè
applicabile
ingenerale
dato che non è semprepossibile
stabilirequale
tra dueespressioni
èquella più compatta,
anche confrontandole direttamente. Inoltre soluzioniparziali
che minimizzano laripetizione
di simboli danno
poi origine
a soluzioni che nongodono più
di unasimile caratteristica. "
Tuttavia una
procedura può
essere data inqualche
casopartico-
lare. Dato un sistema si segua il processo di soluzione
seguente:
a)
sostituire in tutte leequazioni
tutte le variabili i cui membridestri
dipendono
solo da una variabile o daQ;
b ) quando
nessuna sostituzione èpiù possibile
esaminare i sotto- sistemi deltipo
ove la
equazione
di non è deltipo
e, se
i = 2, ... , n
non compare in nessun membro destro delle rimanentiequazioni
in modo che il sottosistemapuò
essere risoltosolamente
rispetto
adrimpiazzare
il sottosistema con la solu- zione :c) riprendere
laprocedura
da capo finchèpossibile.
Vale il
seguente
risultato di minimizzazioneglobale:
se la
procedura a)-c)
genera unasoluzione,
la soluzione ottenutaminimizza la
duplicazione
dipredicati
e azioni.Infatti la
espressione
della soluzioneparziale
per ottenuta conquesta procedura
ècertamente,
tra le tantepossibili,
lapiù compatta
inquanto
non vi è alcunaripetizione
di alcun simbolo. Se solamenteviene chiamato dalle altre
equazioni,
l’avereimposto
la formapiù compatta
per essa assicura che la soluzione finale sarà costruita da blocchi ipiù compatti possibile.
Il risultato non è vero in
generale
inquanto,
se anchequalche
variabile intermedia del sottosistema compare in
qualche
membrodestro,
la massimacompattezza
per laespressione
cheriguarda
lavariabile di testa non assicura la massima
compattezza
perquel
cheriguarda
tale variabileintermedia;
ilgrado
dicompattezza
dellaespressione
finaledipende
da fattori esterni al sottosistema in esame equindi
non èpossibile
determinarequal
èl’espressione più
conve-niente dalla sola osservazione di
questo
sottosistema.Comunque
vale ilseguente
risultato di minimizzazione locale:quando
nel
procedimento
di soluzione si incontra un sottosistema che soddisfa leipotesi
delpunto b)
è certamente convenientel’espressione
dellasoluzione
suggerita
dallaprocedura
inquanto
si dà della sottoflow- chartcorrispondente
alsottosistema,
che avendo una entrata e unauscita compare nella soluzione come un unico
blocco, l’espressione più compatta.
ESEMPIO.
1° modo. Sostituendo x,,, XI, 9 X7 , x., x. e considerando il sottosi- stema x, si ottiene:
2° modo. Sostituendo X6, X7, x,, X9 e considerando
l’equazione
per zi si ottiene:
e considerando
poi
il sottosistema x2 , x3 , x4 :In
questo
caso il 2 ~ modo risultapiù
conveniente anche se allaprima applicazione
delpunto
unito sembrerebbepiù compatta
la solu-zione dello modo.
BIBLIOGRAFIA
[0] J. KOTT,
Remarque
sur la structure des schemes de programmes, in AutomataLanguages
andProgramming,
M. NIVAT (ed.), North Holland Pub. Co., Amsterdam(1972),
pp. 265-271.[1] A. CHIARINI - A. G. B. TEOLIS, Mathematical Foundations
for
FormalProgramming,
C.N.E.N.RT/EDP
(76)2.[2]
R. RIGHI - A. G. B. TEOLIS,Program Transformations:
D- andBJn-charts,
C.N.E.N.
RT/EDP
(78) 5.[3] E. W. DIJKSTRA, A
Discipline of Programming,
Prentice Hall, 1976.[4] H. F. LEDGARD - M. MARCOTTY, A
Genealogy of
Control Structures, Comm.ACM, 18, no. 11 (1975), pp. 829-639.
[5] J. A. GOGUEN - J. W. THATCHER - E. G. WAGNER - J. B. WRIGHT, Initial
Algebra
Semantics and ContinuousAlgebras,
J. ACM, 24, no. 1 (1977),pp. 68-95.
Manoscritto pervenuto in redazione il 9