Aksiomatska semantika
Iz E-študij, proste zakladnice študentskega znanja
Vsebina |
Lastnosti programa
Parcialna pravilnost (Partial correctness)
Program P je parcialno pravilen glede na vhodni predikat φ in izhodni predikat ψ, če velja:
.
Postopek dokazovanja
- določimo prerezne točke tako, da prekinemo z njimi vse zanke. Dodamo startno in izhodne točke.
- vsaki prerezni točki i priredimo nek predikat qi, ki označuje stanje programa v dani točki
- preverimo naslednji pogoj za vsako pot α med prereznima točkama i in j:
pri čemer definiramo še:
-
- vektor vhodnih parametrov programa
-
- vektor notranjih spremenljivk programa
-
- pogoj, da gre program po tej poti (če gre vedno po neki poti potem je enostavno true)
-
- sprememba notranjih spremenljivk programa na tej poti izvajanja
S tem dokažemo, da so vse induktivne trditve izpolnjene vedno, kadar gre izvajanje programa skozi ustrezne točke. To velja tudi za izhodne točke, kar implicira, da je program parcialno pravilen (Floydov izrek).
Iztekanje (Terminating)
Program P se izteče glede na vhodni predikat φ, če se izvajanje za vse pravilne podatke konča:
Postopek dokazovanja
- Izberi množico prereznih točk, ki prekine vse zanke. Vsaki točki priredi „ustrezno“ induktivno trditev
- izberemo dobro utemeljeno množico W (množico, v kateri je definirana relacija delne urejenosti in nima neskončnih padajočih zaporedij)
- za vsako prerezno točko, ki jih določimo na isti način kot pri dokazovanju parcialne pravilnosti, določimo še ustrezno parcialno funkcijo ui:
, Funcija je ustrezna, če velja
- za vse poti v programu, ki so del kake zanke, mora biti izpolnjen pogoj terminiranja:
.
- za poti, ki niso zanke, lahko zgornji pogoj tudi ne velja (zahtevana je stroga neenakost), tako da je treba načeloma preveriti le zanke.
Totalna pravilnost (Total correctness)
Totalna pravilnost glede φ in ψ velja, če je program parcialno pravilen in se izteče, torej:
.
Najšibkejši predpogoj (Weakest precondition)
Najšibkejši predpogoj označimo z wp(S,R).
- S označuje seznam ukazov, ki se izvršijo.
- R je predikat ali "popogoj".
Funkcija wp določi najšibkejši predpogoj za ukaze S tako, da je predikat R pravilen.
1. Primer
Predikat R z vrednostjo x zamenjanega z E.
2. Primer
Da je "popogoj" x > 10 zadoščen, mora veljati predpogoj y > 15. To je tudi najšibkejši predpogoj, saj je 15 "najšibkejša" omejitev spremenljivke y, da predikat x > 10 še drži.
Zunanje povezave
Zapiski predavanj
- Slika:PPJ Zapiski pravilnost.pdf Digitalizirani zapiski zadnjih predavanj v PDF formatu
- Slika:PPJ Zapiski pravilnost source.zip Izvorna koda je na voljo v ODT formatu