Az absztrakt programok tulajdonságait az állapottér hatványhalmaza felett értelmezett relációkkal írjuk le. A könyv első részében már ismertetett leggyengébb előfeltétel fogalmát általánosítjuk és ennek segítségével határozzuk meg a programtulajdonságokat. Leggyengébb előfeltételt a program szövege alapján tudunk számolni, a tulajdonságok tehát statikusan, a program működésének vizsgálata nélkül meghatározhatóak.
Az absztrakt programok jellemzésekor támaszkodunk a leggyengébb előfeltétel [[???Dij 76, ???Fót 83]], a legszigorúbb utófeltétel [[???Lam 90]], ill. a monoton leképezések fixpontjának (. fejezet) fogalmára.
Legyen
egy utasítás,
pedig logikai függvények az
állapottér felett. A
logikai függvény az
utófeltétel
utasításra vonatkozó leggyengébb előfeltétele, ahol
. Az
logikai függvény a
előfeltétel legszigorúbb utófeltétele az
-re nézve, ahol
.
21.6. Lemma.
(Leggyengébb előfeltétel alaptulajdonságai)
(csoda kizárásának elve),
Ha
, akkor
,
(utófeltételbe helyettesítés módszere),
Ha
, akkor
(monotonitás),
(gyenge additivitás),
(multiplikativitás).
Biz.: Az állítások közvetlenül a . definícióból következnek. ((1),
(3), (4), (5), (6) bizonyítása megtalálható [[???Fót 83, ???Fót Hor 91]]-ben.)
21.8. Megjegyzés.
A lemma (2)-es állítása az absztrakt programban előforduló utasításokra, a feltételes értékadásokra (. def.) mindig teljesül.
21.7. Lemma.
(Kiterjesztés és leggyengébb előfeltétel) Legyen
az
altéren definiált logikai függvény,
pedig az
logikai függvény kiterjesztése
-ra.
jelölje az
utasítás
-ra vonatkozó kiterjesztését. Legyen
egy tetszőleges olyan pont, amelyre
, Ekkor:
és
![]()
Biz.:
és
(a . lemma
alkalmazásával)
és
. A
legszigorúbb utófeltételre vonatkozó állítás ugyanígy bizonyítható.
Biz.: Ha ,
akkor
(.
lemma). Ha
, akkor
.
Legyen
egy-egy logikai függvény és
,
. Ekkor
, ill. ha
, akkor
.
Biz.: A . lemmát többször alkalmazva bizonyítunk. A feltétel szerint
, azaz
. A feltétel
szerint
és
, így
, azaz
. A . lemma szerint
, így éppen a lemma
állítását kaptuk.
A továbbiakban jelöljön egy absztrakt programot (. def.), az állapottér legyen
.
, ahol
és
egy
(szimultán, nemdeterminisztikus) feltételes értékadás.
.
Általánosítjuk a leggyengébb előfeltétel fogalmát:
.
(
az ún. ”angyali” leggyengébb előfeltétel [[???Mor 90]]). A
leképezés definíciója hasonlít a J.R. Rao által egyes utasításokra definiált
operátor definíciójához, de attól eltérően absztrakt programra vonatkozik. A
operátort a UNITY valószínűségi alapon nemdeterminisztikus kiegészítése során használják [[???Rao 95]].
Biz.: Az állítások az a . definícióból, a . lemmából és a logikai és
függvénykompozíció asszociativitásából és kommutativitásából
következnek.
Jelöljük -val azon
logikai függvények igazsághalmazainak halmazát, amelyek az
programra nézve
invariánsokSzigorú invariáns [[???Pra 94]]., ha
a program
-beli
állapotból indul. A
-t röviden
-val
jelöljük. Jelölje
azon
logikai függvények konjunkcióját, amelyekre
a
legszigorúbb invariáns [[???Pra 94]]..
21.9. Megjegyzés (
nem üres).
A definíció szerint
.
21.11. Lemma.
(Invariánsok konjunkciója)
zárt a
műveletre nézve [[???Pra 94]].
Biz.: Legyen . . def.
felhasználásával:
és
.
és
. A . lemma
szerint:
,
így
.
21.2. Következmény (Legszigorúbb invariáns).
Az
halmaznak egyértelműen létezik legkisebb (. def.) eleme és az éppen
.
Biz.: Ha ,
akkor
. Így
az első feltétel
szerint. Ha
, akkor
, a harmadik feltétel és . lemma felhasználásával:
.
A . tétel nem megfordítható. Ha
invariáns, akkor nem feltétlenül igaz, hogy akár
, akár
invariáns lenne. Annak bizonyítása, hogy egy
állítás invariáns tulajdonság, a . tétel segítségével azonban sok esetben részekre bontható pl. úgy, hogy
belátjuk, hogy
invariáns,
megmutatjuk, hogy
kezdetben igaz,
igazoljuk, hogy
, ahol
.
21.11. Megjegyzés (
nem üres).
A definíció szerint
.
Azokat a logikai függvényeket, amelyek igazsághalmaza eleme a
halmaznak,
a
-ból
elérhető állapotok felett a program futása során mindig igaz állításoknak
nevezzükA mindig igaz állításokat gyenge invariánsoknak is nevezik [[???San 91, ???Pra
94]].
A . ábra segítségével szemléltetjük, hogy van olyan mindig igaz állítás, amelyik nem invariáns. Tegyük fel, hogy a körrel jelölt mezőből indul egy huszár, amely lólépésben haladhat. Az állapottér az összes mező, a hiányos ”sakktábláról" lelépni nem szabad. Könnyen ellenőrizhetjük, hogy a huszár mindig ”x”-szel jelölt mezőkön marad. Mégsem invariáns tulajdonsága a huszárnak az, hogy ”x”-szel jelölt mezőn áll, mert van olyan ”x”-szel jelölt mező amelyről jelöletlen mezőre is léphet. Ilyen a bal felső sarokban lévő mező. Ez a mező a huszár számára nem elérhető, ezért sohasem tapasztaljuk az invariáns sérülését. Megállapíthatjuk, hogy a mindig igaz és az invariáns állítások között a lényegi különbség a nem elérehető állapotok esetén jelentkezik. Egy invariáns állítás még nem elérhető állapotokból is megmarad, egy mindig igaz állítás csak az elérhető állapotok felett teljesül. Az invariáns állítások azért fontosak, mert két komponens együttműködése könnyen eredményezheti azt, hogy korábban el nem érhető állapotok elérhetővé válnak. Több komponensből álló elosztott programok esetén tehát csak az invariáns tulajdonságokra támaszkodhatunk (ld. fejezet).
Biz.: Ha , akkor
és
.
Így
. Ha
,
akkor
és
.
Így
.
21.3. Következmény.
Mindig igaz és invariáns konjunkciója mindig igaz.
21.4. Következmény (A legszigorúbb mindig igaz).
A
halmaznak egyértelműen létezik legkisebb eleme és az éppen
, a legszigorúbb invariáns.
tehát az a legszűkebb igazsághalmazú logikai függvény,
amelyiknek igazsághalmazát a program soha nem hagyja el a
-ból
indulva. Így kimondhatjuk az alábbi tételt:
(
és a
-ból elérhető állapotok)
igazsághalmaza éppen a
-ból elérhető állapotok (. def.) halmaza [[???Pra 94]].
Nem minden esetben lesz egy mindig igaz állítás
és egy invariáns konjunkciója invariáns, hiszen pl. az
is
invariáns és konjunkciója egy mindig igaz, de nem invariáns állítással
nem eredményezhet invariáns állítást.
Jelöljük -sel azon
logikai függvények igazsághalmazai rendezett párjainak halmazát, amelyekre az
program végrehajtása
során igaz, hogy
stabil
feltéve, hogy nem
. Jelölés:
.
.
A
definíciója megfelel a [[???Cha Mis 89]]-ben adott unless fogalmának.
(
és a stabil tulajdonságok) Ha
és
, akkor
. Biz.: A . def. alapján
és
. Ebből a . lemma alkalmazásával:
=
=
. A . def. alkalmazásával a kívánt állításhoz jutunk.
![]()
21.18. Lemma.
(Az invariánsok stabil tulajdonságok) Ha
, akkor
. Biz.: A . és . definíciók közvetlen következménye.
![]()
21.19. Tétel.
(
és az invariánsok szigoríthatósága) Ha
és
és
, akkor
és
A tétel Prasetya tételének relációs átfogalmazása [[???Pra 94]].. Biz.: Az állítás első része következik a . lemmából. Az állítás második részét pedig a . és . lemma alkalmazásával kapjuk.
![]()
Jelöljük -sel azon
logikai függvények igazsághalmazai rendezett párjainak halmazát, amelyekre az
program végrehajtása
során igaz, hogy
stabil
feltéve, hogy nem
és van egy olyan
feltételes értékadás, amely garantálja, hogy a
-ből
-ba jutunk.
Jelölés:
.
.
A
definíciója megfelel a [[???Cha Mis 89]]-ben adott ensures fogalmának, ha az ütemezés megfelel a feltétlenül pártatlan ütemezés axiómájának.
Biz.: A . def. és a . lemma alapján elegendő azt bizonyítani, hogy
. A feltételekből
tudjuk, hogy
.
Válasszunk egy ilyen
utasítást.
stabil, ezért erre az
-re is:
. Az
-re
vonatkozó két állításból logikai és művelet és egyszerűsítés után
a
eredményre jutunk. A leggyengébb előfeltétel ismert tulajdonsága alapján (.
lemma)
.
(
és az invariánsok szigoríthatósága) Ha
és
és
, akkor
és
A tétel Prasetya tételének relációs átfogalmazása [[???Pra 94]].. Biz.: Az állítás első része következik a . lemmából. Az állítás második részét pedig a . és . lemma alkalmazásával kapjuk.
![]()
Legyen
a
reláció tranzitív diszjunktív lezártja (. def.), vagyis az a legkisebb relációA
definíciója megfelel a [[???Cha Mis 89]]-ben adott leads-to fogalmának, ha az ütemezés megfelel a feltétlenül pártatlan ütemezés axiómájának., amelyre teljesül, hogy
.
Tranzitivitás: ha
és
, akkor
.
Diszjunkció: ha bármely W megszámlálható halmazra:
.
Jelölés: .
A . def. alapján pontosan akkor, ha a . def. (1),(2),(3) szabályainak alkalmazásával
levezethetőA (3)-as szabály egyetlen lépésben is végtelen sok elemre alkalmazható..
21.13. Megjegyzés (Egyértelműen létezik legkisebb adott tulajdonságú reláció).
A
rendelkezik a megadott tulajdonságokkal. Ha
és
rendelkezik a megadott tulajdonságokkal, akkor
is rendelkezik velük. Így
egyértelműen definiált.
A UNITY különböző relációs kiterjesztéseiben [[???Pac 92, ???Jut Kna Rao 89]] nem a feladat specifikációs feltételeinek, hanem a program által definiált
,
,
relációknak megfelelő relációkat definiálnak. Pachl [[???Pac 92]] az
reláció értelmezési tartományát az elérhető állapotok halmazára (. def.) korlátozza.
Biz.: Strukturális indukcióval az induktív . def. alapján.
Alapeset: -t közvetlenül
-ból kaptuk. Ekkor a
. lemma szerint
. . def.
(1) pontja szerint ekkor
.
Indukciós feltevés: a) eset: az utolsó lépésben a . def. (2) pontját, a tranzitivitást alkalmaztuk
előállításakor,
azaz:
és
. Az indukciós
feltétel szerint:
és
. A . def. (tranzitivitás)
alapján:
.
b) eset: az utolsó lépésben a . def. (3) pontját, a diszjunktivitást alkalmaztuk
előállításakor,
azaz:
és
. Az indukciós
feltétel szerint:
, amiből a . def. (diszjunktivitás alapján)
.
21.15. Megjegyzés.
A tétel általánosítható a következő alakbanA PSP tétel [[???Cha Mis 89]] relációs alakja.: Ha
és
, akkor
. Bizonyítás strukturális indukcióval.
(
és az invariánsok szigoríthatósága) Ha
és
és
, akkor
és
A tétel Prasetya bizonyítás nélkül publikált tételének relációs átfogalmazása [[???Pra 94]]. .
Biz.: Az állítás első része következik a . lemmából. Az állítás
második részét pedig a . és . lemma alkalmazásával kapjuk.
(
egyelemű részhalmazokra)
. Biz.: Ha
, akkor
. def. alapján (diszjunktív lezárás). Ha
, akkor
. A . lemma alapján
. Ha
, akkor a tranzitív lezárás miatt
.
![]()
, akkor és csak akkor, ha
az
által az
-hoz rendelt fákban bármelyik, a feltétlenül pártatlan ütemezésnek megfelelő végrehajtási útonv.ö. . def. véges (esetleg nem korlátos) távolságban van olyan pont, amelynek címkéje eleme
halmaznak.
21.31. Tétel.
(
helyessége és teljessége)
=
A tétel Pachl tételének általánosítása [[???Pac 92]].
Biz.:[[???Pac 92]]-ben adott bizonyítás általánosítható a teljes állapottérre (lásd lábjegyzet) és nemdeterminisztikus feltételes értékadások esetére. a)
. Biz.:
és
tranzitív és diszjunktív. b)
. A ., . tételek alapján elegendő bizonyítani, hogy
.
.
. Legyen
. Jelöljük
-vel azon pontok halmazát, amelyekre igaz, hogy
-ből olyan úton érhetőek el, amelynek minden pontja eleme
-nek.
, ellenkező esetben
, azaz
és
miatt
következne, ami ellentmondás. Tehát
-re megkonstruálható egy olyan út, amelyen
címkéje szerepel a feltétlenül pártatlan ütemezés axiómája szerint és az út
belsejében halad. Tegyük fel indirekt, hogy
. Ekkor a fentiek alapján
. Azaz
, azaz
.
![]()
21.5. Következmény.
Ha egy program rendelkezik a
tulajdonsággal, akkor és csak akkor rendelkezik a
tulajdonsággal is, amely a tranzitivitás és a diszjunkció szabályának alkalmazásával levezethető a program
alakú tulajdonságaiból A tranzitív diszjunktív lezárási tulajdonságok felhasználásával Cook-féle relatív teljes [[???Rao 95]] levezetési szabályrendszert alkothatunk a program haladási tulajdonságaira nézve..
A konkrét program az absztrakt program végrehajtásának prefixe. Az absztrakt program nem terminál abban az értelemben, hogy több elemi művelet nem kerül végrehajtásra. Termináltnak tekinthetünk azonban egy izolált programot akkor, ha elérte egy fixpontját, azaz a további műveletek hatására állapotváltozás már nem következhet be.
Az programról azt mondjuk, hogy fixpontba jutott az
altér
felett, ha az
altérhez tartozó változókra vonatkozó egyszerű értékadások
mindegyikére teljesül, hogy az értékadás hatásrelációja független az
altérhez nem tartozó állapottérkomponensektől és
az értékadás determinisztikus és a jobboldalán álló függvénykompozíciók (kifejezések) értéke azonos a baloldalon álló változók értékével vagy
az értékadás jobboldalán szereplő kapcsoszárójel függvény feltétele hamis, vagy
az értékadás nemdeterminisztikus és az altér azon részhalmazának, amely felett az értékadás determinisztikus, és a kapcsoszárójel függvény feltétele igazsághalmazának metszete felett az értékadás jobboldalán álló függvénykompozíciók (kifejezések) értéke azonos a baloldalon álló változók értékével.
Legyen ,
ahol
egy (szimultán, nemdeterminisztikus) feltételes értékadás,
.
Jelöljük -vel azt a logikai függvényt, amelynek igazsághalmazára leszűkítve az
reláció
determinisztikus, azaz:
.
Ha az értékadások mindegyike determinisztikus, akkor a program
fixpontjait jellemző logikai függvényt a szimultán értékadások
egyenlőséggé való átalakításával, feltételeik implikációs
előtaggá való kiemelésével és konjunkciójával kapjuk meg:
.
21.2. Példa (Program fixpontjainak halmaza).
.
[[???Cha Mis 89]].
![]()
21.16. Megjegyzés.
A megoldás definíciója szerint (.) egy program teljesíti a
specifikációs feltételt, ha az
fixpontfeltétel tartalmazza a
állítás igazsághalmazának és (legalább) az elérhető állapotok halmazának metszetét.
A program biztosan fixpontba jut, ha egy alkalmasan megválasztott variáns függvény pl. az állapottér változóiból függvénykompozícióval alkotott nemnegatív egészértékű függvény értéke bármely állapot elérése után a jövőben elkerülhetetlenül csökken (. tétel).