Wyrażalność semantycznych własności programów

Z Lem
Skocz do: nawigacji, wyszukiwania

Własności semantyczne algorytmów

Prawie wszystkie semantyczne własności programów mogą być wyrażone przez odpowiednio napisane formuły języka rachunku programów.

Własność stopu

Skończoność obliczenia programu, tj. własność stopu

Własność zapętlenia

Niekończenie obliczeń

Błąd

polegający na tym, że podczas obliczenia programu argument(y) nie należą do dziedziny operacji np. błąd dzielenia przez zero.

Najsłabszy warunek wstępny

Definicja. Najsłabszym warunkiem wstępnym programu K

ze względu na warunek końcowy β
, jest taki warunek α
, który posiada dwie własności:

1) jeżeli początkowe dane programu spełniają warunek α
to obliczenie programu jest skończone i spełnia warunek β
, (czyli α
jest warunkiem wstępnym dla programu K
i warunku końcowego β
) oraz
2) jeśli jakiś inny warunek δ
jest warunkiem wstępnym to jest mocniejszy niż warunek α
tj w rozpatrywanej strukturze danych prawdziwa jest implikacja δα
.
Najmocniejszy warunek końcowy
Poprawność programu

K

ze względu na warunek poczatkowy α
i warunek końcowy β
.

Częściowa poprawność programu

K

ze względu na warunek poczatkowy α
i warunek końcowy β
.

Równoważność programów

Więcej o obliczeniach, semantyce i o semantycznych własnościach programów znajdziesz w książkach Algorithmic Logic str. oraz Logika Algorytmiczna dla programistów str.

Schematy formuł wyrazających własności programów

Ad 1) Własność stopu programu K

najszybciej zapiszemy tak Ktrue
.
Gdy program K
jest postaci whileγdoMod
to możemy użyć kwantyfikatora iteracji i napisać formułę algorytmiczną {ifγthenMfi}¬γ

Ad 2) Własność niekończącego się obliczenia programu whileγdoMod
można wyrazić w taki sposób {ifγthenMfi}γ

Ad 4) Własność najsłabszy warunek wstępny warunku α
ze względu na program K
, wyraża się przy pomocy formuły
Kα
. By się o tym przekonać wystarczy sprawdzić dwie własności:

1) czy formuła Kα
jest warunkiem wstępnym?
2) czy formuła ta jest najsłabszym warunkiem wstKα
pnym.

Przykłady

Ad 1)

a) Rozpatrzmy prosty program {y:=0;whilexydoy:=y+1od}

. Własność stopu tego programu czyli formuła {y:=0;whilexydoy:=y+1od}(x=y)
jest prawdziwa w strukturze liczb naturalnych (dla programistów: unsigned integer). Formułę tę lub jej równoważną formułę {y:=0;ifxytheny:=y+1fi}(x=y)
można przyjąć jako aksjomat liczb naturalnych.

b) Niech x i y będą zmiennymi typu real. Własność stopu programu {z:=0;whilexzdoz:=z+yod}(x=y)

ma związek z prawem Archimedesa zob.

c) algorytm Euklidesa
Ad 2) Własność niekończących się obliczeń programu {whilex0dox:=x+1od}

wyraża znaną w algebrze własność charakterystyka algebry A jest zero.