Vizsgáljuk meg, hogy a típusspecifikációban leírt követelményeket hogyan
valósítjuk meg. Ehhez bevezetjük az elemi típusértékek halmazát, amit
-vel
jelölünk.
5.2. Definíció (TíPUS).
A
hármast típusnak nevezzük, ha az alábbi feltételek teljesülnek rá:
, reprezentációs függvény,
, típusinvariáns tulajdonság,
, ahol
program, amelyre
úgy, hogy
és
.
A típus első két komponense az absztrakt adattípus reprezentációját írja le, míg a programhalmaz a típusműveletek implementációját tartalmazza.
Meg kell még vizsgálnunk azt a kérdést, hogy mikor mondjuk, hogy egy típus megfelel a típusspecifikációnak, azaz a típus mikor teljesíti a specifikációban leírt követelményeket.
5.3. Definíció (MEGFELELTETéS).
Egy
típus megfelel a
típusspecifikációnak, ha
,
a
-n keresztül megoldja
-et.
Természetesen a megfelelés definíciója még nem teljes, meg kell még mondanunk, hogy
mit értünk a -n keresztüli megoldáson. Ehhez először vizsgáljunk meg egy egyszerű esetet:
tegyük fel, hogy a feladat és a program állapottere egykomponensű.
Persze a fenti definíciók figyelembe vételével ez azt jelenti, hogy a feladat állapottere
, a programé
pedig
. Ekkor
tulajdonképpen a
-n keresztüli megoldást úgy kell elképzelni, mintha a megoldás definíciójában a
programfüggvény
reláció lenne, azaz
, és
.
Legyen a továbbiakban , és
,
,
,
,
. Azt mondjuk, hogy az
állapottér illeszkedik
az
állapottérhez, ha
A fenti esetben legyen a
leképezés az alábbi
módon definiálva:
ahol , és
A továbbiakban az ilyen
felépítésű relációt
-nel fogjuk jelölni.
Vegyük észre, hogy a
tulajdonképpen a
egyfajta kiterjesztése több komponensű, de egymáshoz illeszkedő
állapotterek esetén. Ezek után a megoldás definícióját felírhatjuk
az ilyen esetre úgy, hogy az előző megoldásdefinícióban
helyére
-t
írunk.
Most már csak egy kis lépés van hátra az általános eset leírásához: ha a program és a feladat állapottere nem illeszkedik egymáshoz, akkor tegyük illeszkedővé őket. Ez a kiterjesztés fogalmának felhasználásával könnyen megtehető.
5.4. Definíció (MEGOLDáS
-N KERESZTüL).
Azt mondjuk, hogy az
program a
-n keresztül megoldja az
feladatot, ha vannak olyan
és
illeszkedő terek, hogy
altere
-nek,
altere
-nek, és
, és
,
ahol
a fenti értelemben definiált leképezés,
az
kiterjesztése
-re,
pedig az
kiterjesztése
-re.
Természetesen egy típusspecifikációnak több különböző típus is megfelelhet. Ekkor az, hogy melyiket választjuk a reprezentáció és a műveletek implementációinak más további tulajdonságaitól – ilyen például a reprezentáció memóriaigénye, vagy az implementációk műveletigénye – függ. Ez a döntés mindig a megoldandó programozási feladat függvénye.