Wyrażalność semantycznych własności programów: Różnice pomiędzy wersjami

Z Lem
Skocz do: nawigacji, wyszukiwania
(Schematy formuł wyrazających własności programów)
(Schematy formuł wyrazających własności programów)
Linia 14: Linia 14:
 
==Schematy formuł wyrazających własności programów==
 
==Schematy formuł wyrazających własności programów==
 
Ad 1) Własność stopu programu <math>\color{blue}K</math>  najszybciej zapiszemy tak <math>\color{blue}K\,\mathbf{true}</math>. <br />
 
Ad 1) Własność stopu programu <math>\color{blue}K</math>  najszybciej zapiszemy tak <math>\color{blue}K\,\mathbf{true}</math>. <br />
Gdy program <math>\color{blue}K</math> jest postaci <math>\color{blue}{\mathbf{while}\,\gamma \, \mathbf{do} \, M \, \mathbf{od}}</math> to możemy użyć kwantyfikatora iteracji i napisać formułę algorytmiczną <math>\color{blue}\bigcup \{ \mathbf{if}\,\gamma \, \mathbf{then} \, M \, \mathbf{fi} \}\neg \gamma</math>
+
Gdy program <math>\color{blue}K</math> jest postaci <math>\color{blue}{\mathbf{while}\,\gamma \, \mathbf{do} \, M \, \mathbf{od}}</math> to możemy użyć kwantyfikatora iteracji i napisać formułę algorytmiczną <math>\color{blue}{\bigcup \{ \mathbf{if}\,\gamma \, \mathbf{then} \, M \, \mathbf{fi} \}\neg \gamma}</math>
  
 
==Przykłady==
 
==Przykłady==

Wersja z 07:09, 7 paź 2018

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.

  1. Skończoność obliczenia programu, tj. własność stopu
  2. Niekończenie obliczeń
  3. Błąd polegający na tym, że podczas obliczenia programu argument(y) nie należą do dziedziny operacji np. błąd dzielenia przez zero.
  4. Najsłabszy warunek wstępny. Najsłabszym warunkiem wstępnym programu [math]K[/math] ze względu na warunek końcowy [math]\beta[/math], jest taki warunek [math]\alpha[/math], który posiada dwie własności: 1) jeżeli początkowe dane programu spełniają warunek [math]\alpha[/math] to obliczenie programu jest skończone i spełnia warunek [math]\beta[/math], (czyli [math]\alpha[/math] jest warunkiem wstępnym dla programu [math]K[/math] i warunku końcowego [math]\beta[/math]) 2) jeśli jakiś inny warunek [math]\delta[/math] jest warunkiem wstępnym to jest mocniejszy niż warunek [math]\alpha[/math] tj ...
  5. Najmocniejszy warunek końcowy
  6. Poprawność programu [math]K[/math] ze względu na warunek poczatkowy [math]\alpha[/math] i warunek końcowy [math]\beta[/math].
  7. Częściowa poprawność programu [math]K[/math] ze względu na warunek poczatkowy [math]/alpha[/math] i warunek końcowy [math]\beta[/math].
  8. 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 [math]\color{blue}K[/math] najszybciej zapiszemy tak [math]\color{blue}K\,\mathbf{true}[/math].
Gdy program [math]\color{blue}K[/math] jest postaci [math]\color{blue}{\mathbf{while}\,\gamma \, \mathbf{do} \, M \, \mathbf{od}}[/math] to możemy użyć kwantyfikatora iteracji i napisać formułę algorytmiczną [math]\color{blue}{\bigcup \{ \mathbf{if}\,\gamma \, \mathbf{then} \, M \, \mathbf{fi} \}\neg \gamma}[/math]

Przykłady