Tartalom
A megoldás definíciója közvetlenül elég nehézkesen használható a programok készítése során, hiszen az, hogy egy program megold-e egy feladatot az a megoldás eddigi definíciója alapján csak nehezen ellenőrizhető. Ezért bevezetünk néhány új fogalmat, majd ezek segítségével megadjuk a megoldás egy elégséges feltételét.
Először a program működésének eredményét adjuk meg egy a programfüggvénynél kényelmesebben használható jellemzővel.
3.1. Definíció (LEGGYENGéBB ELőFELTéTEL).
Legyen
program,
állítás. Ekkor az
program
utófeltételhez tartozó leggyengébb előfeltétele az a
, függvény amelyre:
A leggyengébb előfeltétel tehát pontosan azokban a pontokban igaz, ahonnét kiindulva
az
program biztosan terminál, és az összes lehetséges végállapotra igaz
.
Természetesen a leggyengébb előfeltétel igazsághalmazán kívül is lehetnek olyan pontok, amelyből a program egy futása eljut az utófeltétel igazsághalmazába, csak azokból a pontokból nem garantált, hogy oda jut.
Egy program működése úgy is jellemezhető, hogy megadjuk a program tetszőleges utófeltételhez tartozó leggyengébb előfeltételét. A feladat megoldása során az a célunk, hogy olyan programot találjunk, amelyik bizonyos feltételeknek eleget tevő pontokban terminál. Ezért azt mondhatjuk, hogy ha a számunkra kedvező végállapotokra megadjuk a program leggyengébb előfeltételét, akkor a programfüggvény meghatározása nélkül jellemezzük a program működését.
Emlékeztetünk arra, definiáltuk a reláció szerinti őskép fogalmát is, ennek felhasználásával azonnal látszik, hogy
Felhasználva az igazsághalmaz definícióját és a szigorú kompozíció szerinti őskép tulajdonságát
Mivel
függvény, a kompozíció és a szigorú kompozíció megegyezik, tehát
Abban az
esetben, ha is
függvény
.
A fenti összefüggésekre gyakran fogunk hivatkozni.
A most következő tétel a leggyengébb előfeltétel néhány nevezetes tulajdonságáról szól.
3.1. TéTEL: A TULAJDONSáGAI
Legyen
program,
állítások. Ekkor
Az első tulajdonságot a csoda kizárása elvének, a másodikat monotonitási tulajdonságnak nevezzük.
Bizonyítás:
Indirekt: Tegyük fel, hogy . Ekkor a leggyengébb előfeltétel definíciója szerint:
és
. Ez nyilvánvaló ellentmondás.
Indirekt: Tegyük fel, hogy . Ekkor
és
. Ez viszont ellentmond annak a feltételnek, mely szerint
Az állítást két részben, a mindkét irányú következés belátásával bizonyítjuk.
Legyen . Ekkor
vagy
. Ha
, akkor – a monotonitási tulajdonság alapján –
. Hasonlóan
ha
,
akkor
.
A tulajdonságoság visszafelé nem igaz.
nem következik
sem
, sem
. Természetesen, ha
determinisztikus,
azaz
legfeljebb egy elemű halmaz, akkor az egyenlőség fennáll.