20.2.A programozási feladat definíciója

20.1. Definíció (Programozási feladat).

Legyen egy állapottér, pedig egy tetszőleges, megszámlálható halmaz. Rendeljünk hozzá a pontokhoz rendezett reláció heteseket. Minden egyes rendezett hetes kettő, peremfeltételeket megadó, illetve öt, átmenetfeltételeket leíró relációt tartalmaz. Az relációt az állapottér felett definiált feladatnak, -t pedig a feladat paraméterterének nevezzük. A és direktszorzat -hez rendelt elemének komponenseit rendre , , , , -val jelöljük. Ha egyelemű, akkor helyett -t írunk vagy a indexet teljesen elhagyjuk, ha ez nem okoz félreértést.

20.2. ábra -

20.2. ábra.

20.2. Példa (Programozási feladat).

Példaként megadjuk az elemenkénti feldolgozás feladatának specifikációját: A specifikációs relációk közül négy üres, három pedig egyelemű. Kikötjük, hogy bármely fixpontban az rendezett halmaz- -es értéke éppen legyen ((.) feltétel), ahol az változó kezdeti értéke ((.) feltétel). Megköveteljük, hogy a program biztosan elérje valamelyik fixpontját ((.) feltétel). A feladat megfogalmazásában az függvény argumentuma, mint a specifikációs feltételek paramétere jelenik meg.

, .

ahol elemenként feldolgozható.

Az típus specifikációja, az elemenként feldolgozható függvény fogalma és a megoldó program megtalálható a . fejezetben.

A paramétertér helyes megválasztásával elérhetjük, hogy a , , , stb. relációk végesek legyenek, vagy éppen csak egyetlen egy halmaz ill. halmazpár legyen az elemük. Ha a paramétertér végtelen, akkor így összességében végtelen sok relációt adunk meg. Ezek a relációk azonban általában csak a paraméter értékében különböznek egymástól, így a megoldás definícióját elegendő lesz egyetlen paraméteres esetre megvizsgálni.

A paramétertér bevezetésével könnyen megfogalmazhatunk olyan feladatokat, amelynek megoldása több alternatív viselkedésminta szerint is lehetséges Ha a feladat determinisztikus, akkor megfogalmazhatnánk a feladatot a paramétertér bevezetése nélkül is, mint a direktszorzat elemét. Ebben az esetben azonban a feladat egyes komponenseinek számossága kezelhetetlenül nagy lehet, pl. egy-egy átmenetfeltételnek általában végtelen sok halmazpár eleme lenne..

20.2. Megjegyzés.

A paramétertér általában maga is az állapottérhez hasonló direktszorzat. Sok esetben van az állapottérnek és a paramétertérnek nem üres, közös altere. A paramétertér projekcióit is változóknak nevezzük, ezeket a változókat megkülönböztetésül jellel egészítjük ki, pl.: .Elsőrendű temporális logikai nyelvekben szokás az állapottér változóit lokális változóknak, a paramétertér változóit globális vagy rigid változóknak nevezni.

20.3. Megjegyzés.

A feladat fenti definíciója a [[???Fót 83, ???Fót Hor 91]]-ben ismertett specifikációs módszer általánosítása. Legyen és , és .

20.4. Megjegyzés.

A specifikációs feltételek szintaktikus alakjától a feladat, mint reláció független. Lényegében ugyanazt a feladatot (. def.) azonban több ekvivalens specifikációs feltételhalmazzal is megfogalmazhatjuk.

Az . definícióban megadjuk, hogy az feladatnak mikor megoldása egy program, azaz mikor elégíti ki a feladatban előírt feltételeketAzt mondjuk, hogy az program megoldja az feladatot, ha , hogy az program megfelel a -ban adott , , , , , alakú specifikációs feltételek mindegyikének a kezdeti feltételek mellett..