Specifikáció 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 egy elégséges feltételt adunk a megoldásra..1. A leggyengébb előfeltétel Először a program futásának adjuk meg egy a programfüggvénynél kényelmesebben használható jellemzését. 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 az állítás, amelyre: "!$#&%('*),+.-0/2143 %78 "292: 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 jellemzhető, 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ő 4
4. SPECIFIKÁCIÓ 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. A most következő tétel a leggyengébb előfeltétel néhány fontos tulajdonságát mondja ki. 3. TÉTEL: A TULAJDONSÁGAI Legyen ; ; $ <, program, =>$2?@ állítások. Ekkor (1) AB,CEDF G!HAB,CEDF, (2) Ha =EI J, akkor =KI, J (3) L=KNM L! L=OMP, J J (4) L=KNQ L I =;QP. Az első tulajdonságot a csoda kizárása elvének, a másodikat monotonitási tulajdonságnak nevezzük. Bizonyítás: U 1. Indirekt: Tegyük fel, hogy RS%T' AT "CED7. Ekkor a leggyengébb előfeltétel definíciója szerint: %V'V),+W-X/F1 és %SY AB "CED7 Z[!]\. Ez nyilvánvaló ellentmondás. UJ UJ 2. Indirekt: Tegyük fel, hogy RS%^' =K `_ L a. Ekkor %T'^),+W-X/F1 és %SK =,bm( %S(c d. Ez viszont ellentmond annak a feltételnek, mely szerint = K " 3. Az állítást két részben, a mindkét irányú következés belátásával bizonyítjuk. UJ L a d UJ =K =,.1. ábra. A leggyengébb előfeltétel és a metszet kapcsolata J J (a) L=KNM L I =;MP, ui.: U Legyen %e' L=fgM a. Ekkor %h' L=Ka és %e' azaz %h'h),+w-x/f1 és %S` =,, illetve %7i %7i = kj ",! =OMP", azaz %e' L=lM*a., ". Ekkor azonban
.2. A FELADAT SPECIFIKÁCIÓJA 47 J J (b) =;MPI L=fNM L, ui.: Legyen %m' L=?MB. Ekkor a leggyengébb előfeltétel definíciója alapján %n'o),+.-0/21 és %Sp =omy". Felhasználva, hogy =nm "q! =,ij ", adódik, UJ hogy G %SK UJ =, és %S ", azaz %h' L=Ka és %e' L, tehát %e' =KNM. " L=Ka =, 4. Legyen %e'.2. ábra. A leggyengébb előfeltétel és az unió kapcsolata UJ U U =KFQ. Ekkor %e' L=f vagy %e' Ha %h' L=f, akkor U a monotonitási tulajdonság alapján %e' a. Hasonlóan ha %h' L=f, akkor %h' L=lQP a. U UJ a. =hq.2. A feladat specifikációja A következőkben bevezetjük a feladat megadásának egy másik módját, és kimondunk egy a gyakorlat szempontjából nagyon fontos tételt. Általában a feladat nem függ az állapottér összes komponensétől, azaz az állapottér több pontjához is ugyanazt rendeli. Ezeket a pontokat fogjuk össze egy ponttá a paramétertér segítségével. 17. DEFINÍCIÓ: PARAMÉTERTÉR Legyen ro [ $ < feladat. A s halmazt a feladat paraméterterének nevezzük, ha van olyan rt és rzu reláció, hogy r! rtv E <se rwu sv < K rzukx8rt.: Fontos észrevenni, hogy paraméterteret mindig lehet találni. Például maga a feladat állapottere minden esetben választható paramétertérnek úgy, hogy a definícióban
t 48. SPECIFIKÁCIÓ feladatot választjuk. Ám az, hogy egy konkrét esetben mit is választunk paramétertérnek a feladattól függ. Általában úgy választjuk meg a paraméterteret, hogy a következő tételt kényelmesen tudjuk használni. szereplő r t relációnak az identikus leképezést, r u -nek pedig magát az r 4. TÉTEL: SPECIFIKÁCIÓ TÉTELE Legyen rn ; P k feladat, s az r egy paramétertere, r t l P ks, r u Os k, r$!yr u x8r t : Legyen z"'ps, és definiáljuk a következő állításokat: =K{ }! #.%('< ~3 %z 8'Pr t 9,![r -U t 1 z,{ }! #.%('< E3 zw%s8' r u 9,!yr u z ƒ: Ekkor ha NzO' s K= { I { akkor az program megoldja az r feladatot. Bizonyítás: A megoldás definíciója két pontjának teljesülését kell belátnunk: 1. )K l Y),+W-X/F1, ui. Legyen %e'*)k tetszőleges. Ekkor az rt és rwu relációk definíciója miatt Rˆz"' sv %e' = { 2: De ekkor a tétel feltétele alapján: %e' =f{ak UJ L,{ f Š)"+W-X/F1ƒ: 2. N%e'*) ; %S` Or %S, ui. Legyen %*'<)K tetszőlegesen rögzített, z,'bs olyan, amelyre %P' a feltétel szerint: %S` {,!yr u z 8 lr u r t %Sgk!yr %7 : = {. Ekkor Vegyük észre, hogy a tétel feltételrendszerében használt jelölések felhasználhatók a feladat egy más módon történő leírására. Ha a feldatot úgy definiáljuk, hogy megadjuk az állapotterét ( ), a paraméterterét (s ), valamint az elő- és utófeltételét (= illetve ) a paramétertér egy tetszőleges pontjára, akkor azt mondjuk, hogy a feladatot specifikáljuk. Paramétertérnek általában az állapottér egy alterét szoktuk választani. Azokat a komponenseket válogatjuk ki, amelyek értékétől függ, hogy a feladat mit rendel, amik paraméterezik a feladatot. A specifikáció tétele csak elégséges feltétel a megoldásra, azaz nem megfordítható: lehet adni olyan feladat-program párt, ahol a program megoldja a feladatot, de a specifikáció tétele nem teljesül. Ez természetesen attól is függ, hogy a feladatot hogyan specifikáljuk, azaz milyen paraméterteret választunk, és hogyan bontjuk a feladatot r t és r u relációk kompozíciójára.
.3. A VÁLTOZÓ FOGALMA 49.3. A változó fogalma Az eddig elmondottakból alapján a specifikáció tétele még nem lenne hatékonyan használható, hiszen a paramétertér minden pontjára ellenőriznünk kellene a feltételek teljesülését. Ezért bevezetjük a változó fogalmát, aminek segítségével a feltételrendszer teljesülése egyszerűen ellenőrizhetővé válik. 18. DEFINÍCIÓ: VÁLTOZÓ Az E!Œ t p 4 < "Ž állapottér 8ˆ $ " egydimenziós projekciós függvényeit változóknak nevezzük. A változók használatával egyszerűsíthetjük az állapottéren értelmezett állítások (elő- és utófeltételek, leggyengébb előfeltétel) és relációk (programfüggvény) leírását. Mivel minden változó értelmezési tartománya az állapottér, és értékkészlete egy típusértékhalmaz, egy változót jellemezhetünk egy típussal, azaz beszélhetünk a változó típusáról. Ha a paramétertér is direktszorzat alakú márpedig ez gyakran így van, ugyanis általában az állapottér egy altere akkor a paramétertér egydimenziós projekciós függvényeit paraméterváltozóknak nevezzük. Az állapottér illetve a paramétertér egyes komponenseihez tartozó vátozókat illetve paraméterváltozókat az adott komponens alá írjuk. Tekintsünk egy egyszerű példát: határozzuk meg két egész szám maximumát!! E sš! œ Sœ Az első sor tehát azt jelenti, hogy az állapottér három egész komponensből áll, melyeknek változói rendre, és. Hasonlóan a második sor jelentése: a paramétertér két egész komponensből áll, az első komponens változója œ, a másodiké Sœ. A paramétertér egy tetszőleges z eleméhez tartozó elő- és utófeltétel az állapottér egy tetszőleges % pontjában: =ž&ÿ - { 1 Ÿ - { 1 %S! %Sk! œ z M %7! œ z g "ž Ÿ - { 1 Ÿ - { 1 %S! %S` œ z M %S8 œ z NM %S! œ z NQ %S! œ z g A fenti jelölést tovább szoktuk egyszerűsíteni: mivel az állapottér változói és a paraméterváltozók mindenütt azonos argumentummal szerepelnek, az argumentumot hiszen az nyilvánvaló nem írjuk ki: = ž4ÿu Ÿ! ž4ÿu Ÿ!! œ M! œ œ M œ M! œ Q! œ g A jelölés tovább egyszerűsíthető! Mivel ezek a feltételek a paramétertér pontjaihoz tartoznak, nyilvánvaló, hogy a paraméterváltozók értékeitől függnek. Ha nyilvánvaló, akkor az állítások indexe el is hagyható. A feladat specifikációja tehát:
x 0. SPECIFIKÁCIÓ! E s@! V œ 7œ =~! œ M! œ Œ œ M Sœ M! œ Q! Sœ A változók segítségével könnyen felírhatunk olyan függvényeket, amelyek az állapottér bizonyos komponensein vannak értelmezve. Ha nem okoz félreértést, akkor az 0 :4: : X jelölés helyett az 4: :4: g 0 jelölést használjuk. A későbbiekben bevezetünk majd olyan eszközöket, amelyek segítségével a feladat specifikációjából kiindulva olyan programokat készíthetünk, amelyek megoldják a feladatot..4. A típusspecifikáció tétele A típusspecifikáció és a típus fogalmának bevezetésével tulajdonképpen a feladat fogalmát általánosítottuk, míg a megfeleltetés a megoldás fogalmának volt egyfajta általánosítása. Az imént megismert specifikáció tétele a megoldásra adott elégséges feltételt. Próbáljunk most a -n keresztüli megoldásra egy hasonló feltételt adni! U. TÉTEL: TÍPUSPECIFIKÁCIÓ TÉTELE Legyen â «m! LD «& és ª! FLD L w adott 4 típusspecifikáció és típus, és tegyük fel, hogy a reprezentáció helyes, azaz D.±! D «L. Legyen továbbá rv', az r állapottere, egy paramétertere s, elő és utófeltétele pedig =K{ és {. Legyen ;'P és tegyük fel, hogy állapottere illeszkedik r állapotteréhez. Definiáljuk a következő állításokat: = ²{ }! ³=K{ xg µ "²{ }!,{wxg ahol a program és a feladat állapottere közötti, a -n keresztüli megoldás definíciójában szereplő leképezés. Ekkor ha Nzd' s F= ²{ I ²{ akkor az program a -n keresztül megoldja az r feladatot. Bizonyítás: A -n keresztüli megoldás definíciója két pontjának teljesülését kell belátnunk: º, ui. 1. ) Y) ² +W-X/F1 ² 0¹ Legyen %e'*) &. Ekkor Rˆz"'PsV2%e' =K{. Mivel D.! D «, -U t 1 %7 c!y\imh - t 1 %S8 = ²{ F: UJ Felhasználva, hogy = ²{ K L"²{ : -U t 1 %78 ;),+W-X/F1M± - t 1 %Sg` ²{ 2:
².4. A TÍPUSSPECIFIKÁCIÓ TÉTELE 1 Mivel,²{,! tehát 2.»%('P)K Š >¼ G -U t 1 %7` { xg, %h'h) w¼p -U t 1 Or -U t 1 %Sgi Y) ² +W-X/F1 º ² X¹ : %S, ui. Legyen %E'n)K. A bizonyítás első részében leírt lépéseket folytatva: mivel { xg, - t 1 %Sggi { K lr %Sƒ: Az, hogy a fenti tétel feltételei között kikötöttük, hogy a program állapottere illeszkedik a feladat állapotteréhez tulajdonképpen elhagyható. Ekkor a tétel a feladat és a program olyan kiterjesztéseire mondható ki, amelyek állapotterei illeszkednek egymáshoz (pontosan úgy, ahogy a megfeleltetést definiáltuk nem illeszkedő állapotterek között). A következő példában megmutatjuk, hogy = ²{ -t gyenge igazsáhalmaz helyett erős igazsághalmazzal definiálnánk, akkor a tétel nem lenne igaz. Legyen ª «! D «,! #2½2L¾S9, D «!", V! #.rq9. Legyen r állapottere H! és a paramétertér is legyen ugyanez: s~!. Legyen r specifikációja: = t }! #F½ 92 t }! #W¾79 = u }! \ˆ u }! #F½ 9 Ekkor )K o! #2½ 9 és r ½&(!@#W¾79. Legyen továbbá az elemi értékek halmaza À! #.% z&9, ªŒ! 7D Z,»ÁY'PÀ D ÁG! 3 Á`3!Œ½&, és az egy hosszú sorozatokra: g %SÃgG!$ z ÃG! #F½ ¾792: Tegyük fel, hogy Š!#. 89, o À± q Àq L L, és rendelje az állapottere minden pontjához az önmagából álló egy hosszú sorozatot. Ennek a programnak az állapottere illeszkedik a fenti feladat állapotteréhez, és Ṕ!$. Ekkor tehát =ftxg "!H\ Az viszont könnyen látható, hogy >¼B = t xg I = t xg I G ¼p -U t 1 tehát a típus nem felel meg a specifikációnak. és =ugxg,!y\ˆ t xgń t xgń ½.!E#F½ ¾79qc ;r ½.!E#W¾79
2. SPECIFIKÁCIÓ.. Példák 1. példa: Legyen ~!V#&ÄTÅ.%FÆ program. m!e#ïätå.%fæ sf%7ç È ËÌ Æ s ÊWÉ.Î Legyen továbbá az Œ H állítás: '< $; G! s±%fç4è CEÉ %FÊ.ƃËGÌ ÆƒÍÉWÅFs Ê.É.Î9, H n B ÄTÅ.%FÆ s±%fç4è à s±%7ç È sf%7ç È ËGÌ Æƒs Ê.É.Î Ã ÐCEÉ %FÊ.ÆÑ ËÌ Æƒs ÊWÉ.Πà ÍÉWÅ s ÊWÉ.Îs±%7Ç È LËÌ ÆgÃ9 zeneszerző. Mi lesz a fenti program -hez tartozó leggyengébb előfeltétele? Megoldás: Írjuk fel először a program programfüggvényét: G!E# Ä^Å.%2Æ Lsf%7Ç Èƒ sf%7ç È LCEÉ %2Ê.Æg CEÉ %FÊ.ƃÄTÅ.%FÆ ƒ ËÌ ÆƒLs ÊWÉ.Î ƒ s Ê.É.ÎLËÌ Æg 9 U a,! #&Ä^Å.%2Æ LÍÉWÅ2Ls ÊWÉ.Î9, ui. ÄTÅ.%FÆ Ò! #&s±%7ç ÈN9 " ÍÉWÅ.! #.CEÉ %FÊ.Æ9 " s ÊWÉ.Î Ó! #&ËGÌ Æ9 " G s±%7ç È! #.CEÉ %FÊ.ƃs ÊWÉ.Î9(c CEÉ %FÊ&Æg! #&Ä^Å.%2Æ 9qc " ËGÌ ÆgÑ! #&s Ê.É.Î9(c " Ezek után, a leggyengébb előfeltétel definícióját felhasználva: sf%7ç È LCEÉ %FÊ&Ægà CEÉ %FÊ.ƃÄ^Å.%2Æ Ã ÍÉWÅFLCEÉ %2Ê.Ægà s±%fç4è Ls ÊWÉ.Î ƒ ÍÉWÅFLCEÉ %FÊ.Ægƒ 2. példa: Legyen A t LA u 7. Igaz-e, hogy ha minden O [ $ L programra AetƒG! A>u4, akkor Aet,! A>u? Megoldás: Felhasználva, hogy a leggyengébb előfeltételek minden programra megegyeznek, egy alkalmas program választásával a válasz egyszerűen megadható: rendelje az program az állapottér minden eleméhez az önmagából álló egy hosszúságú sorozatot. Ekkor könnyen látható, hogy tetszőleges utófeltétel esetén: J L!Hq: " Ekkor viszont Aetb! Aet! A>u k![a>u tehát a két feltétel megegyezik. 3. példa: Specifikáljuk a következő feladatot: H![O *Ïrn l E <, r$! # g LÔˆ œ LÔ œ gi3 Ô œ!yôm œ! MPÔ 9
t.. FELADATOK 3 Megoldás:!VÕ? sš!@ö o œ Sœ =n! œ M! 7œ Œ! œ M Sœ NM! Sœ 4. példa: Legyen r p, L program, s egy tetszőleges halmaz. Legyenek továbbá r t $ n Ts és r u Œs B olyan relációk, hogy r!nr u xbr t, valamint Nzd'<s :. = { }! r t z,{g}! r u z : Igaz-e, hogy ha Nzd'<sV =K{GI {g, akkor megoldja r -et? Megoldás: Próbáljuk meg a megoldás definíciója két pontját belátni. Legyen %e'p). Be kellene látnunk, hogy %e'*)"+w-x/f1. Nézzük meg a specifikáció tételének bizonyítását: ott felhasználtuk, hogy ekkor van olyan ze'os, hogy %Y' = {. Igaz ez a = { -re is? Sajnos mivel = { -t ősképpel definiáltuk, ez nem feltétlenül van így. Próbáljunk a fenti gondolatmenet alapján ellenpéldát adni: Legyen!Õ#F½ 9, sš!õ#f½ ¾79, r!ø# ½2 ½.9, rte!õ# ½ ½.ƒ ½ ¾ ƒ9, rzuh!õ# ¾ˆ ½&ƒ9. Ekkor =fti!hè %FÙPÌ és =Kud!HÈ %FÙ*Ì, tehát az állítás feltételei teljesülnek függetlenül a programtól (ui. hamisból minden következik"). Válasszuk most az alábbi programot: Š!~# ½2 Ú$½ 4½ 4:Û:X: Üdƒ9. Ez a program nem megoldása a feladatnak, de teljesülnek rá is az állítás feltételei. Tehát az állítás nem igaz... Feladatok 1. Legyen tetszőleges állapottér, = 2 H@ akkor»ì'<ýh = I = XÞ t Ìk' Ý. Igaz-e, ha J RSÎ '<Ý? L=KŽ7G! R7Î '<ÝH =Žˆgß 2. Igaz-e, hogy ha t&l K! NuW, akkor t8à^ u K! wt&q u? 3. Igaz-e, ha 'T n UJ ' t gá # 9Wga,â U ' u gá # 9Wg, akkor )"+W-X/ 1!l),+W-X/WãL1? 4. t u V p, programok. Igaz-e, ha»aä Ñ esetén t LATf! u A^, akkor t ekvivalens u -vel?
Ù í!! Î ï ë Ž 4. SPECIFIKÁCIÓ. Adott az!yå 8å^ G állapottér åœ!$#2½2l¾ˆæs9w és a s~!yå `å paramétertér, továbbá az r t és r u feladatok. r t!$# % t L% u ƒ z t z u Ôˆg83&Ô>! % t ÜO% u 9F r u specifikációja pedig:!åò åñ? % t % u s@!åò å % œt % œ u =n % t![% œt MP% u!y% œ u ~ =OM % œt ÜO% œ u g Azonosak-e az r t és r u feladatok?. Tekintsük az alábbi két feladatot: rt specifikációja:! s@! œ =n! œ ~ =OM!n3 çk 3 r u!e# g %Lz Ç è7g`3&çi!y%,m 3 è3 ç è±!yçw92: Megadható-e valamilyen összefüggés rt és rwu között? 7. Írd le szövegesen az alábbi feladatot: legyen 2 m,! Ö E EÝZé s@! Ó Ù œ Î œ =n Ù!OÙ œ M*Î![Î œ MeÙêlÎ ~ =OM Ûì tfí Ì g ahol í m #.îˆ ½ 9, Ìa! ½ ha R ' ; Ì! Me ˆð>' ñ Ù :Û: λò ðf8êlù îˆ különben 8. Igaz-e a specifikáció J tételének megfordítása? (Ha megoldja r -et, akkor Nz' s =K{GI L,{g
.. FELADATOK 9. Tekintsük az alábbi feladatot:! E Ô sš! Ô œ =~ Ô(!HÔ œ MPî>ÚlÔˆ Œ =OM± Ê.Ì Ù Me ÌGÜH½ Ê&Ì Ù ahol Ê.ÌJÙ G! prímszám. Mit rendel a fent specifikált feladat az %! Fogalmazd meg szavakban a feladatot! Ì ó3 Ôqô^Ì 3F $3 Ô±ôPZ3 ½&îˆ ½. és a zq! õ ö pontokhoz?
. SPECIFIKÁCIÓ