Wyrażalność semantycznych własności programów: Różnice pomiędzy wersjami
Z Lem
								
												
				 (→Schematy formuł wyrazających własności programów)  | 
				 (→Schematy formuł wyrazających własności programów)  | 
				||
| Linia 13: | Linia 13: | ||
==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>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>K</math> jest postaci <math>\mathbf{while}\,\gamma \, \mathbf{do} \, M \, \mathbf{od}</math> to możemy użyć kwantyfikatora iteracji i napisać formułę algorytmiczną <math>\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 06:08, 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.
- Skończoność obliczenia programu, tj. własność stopu
 - 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. 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 ...
 - Najmocniejszy warunek końcowy
 - Poprawność programu [math]K[/math] ze względu na warunek poczatkowy [math]\alpha[/math] i warunek końcowy [math]\beta[/math].
 - Częściowa poprawność programu [math]K[/math] ze względu na warunek poczatkowy [math]/alpha[/math] i warunek końcowy [math]\beta[/math].
 - 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]