Logika Algorytmiczna: Różnice pomiędzy wersjami

Z Lem
Skocz do: nawigacji, wyszukiwania
(Bibliografia)
(Podręczniki)
Linia 28: Linia 28:
  
 
   
 
   
== Podręczniki == 
 
* [[Media:Algorithmic_Logic.pdf                            |Grażyna Mirkowska, Andrzej Salwicki, ''Algorithmic Logic'' ]] -- monografia -- większy nacisk  położono na badania systemu AL
 
* [[Media:LogikaAlgorytmiczna_1z2.pdf |Grażyna Mirkowska, Andrzej Salwicki,'' Logika Algorytmiczna dla programistów'' cz.1 ]] 
 
* [[Media:LogikaAlgorytmiczna_2z2.pdf |Grażyna Mirkowska, Andrzej Salwicki,'' Logika Algorytmiczna dla programistów'' cz.2 ]]
 
* [[Media:AlgoLogic.pdf| Algorithmic Logic for Software Construction and Verification]]
 
 
 
== Program logiki algorytmicznej ==
 
== Program logiki algorytmicznej ==
 
Zadaniem logiki algorytmicznej jest dostarczenie narzędzi do analizowania semantycznych własności programów takich jak: własność stopu, poprawność programu, etc.
 
Zadaniem logiki algorytmicznej jest dostarczenie narzędzi do analizowania semantycznych własności programów takich jak: własność stopu, poprawność programu, etc.

Wersja z 10:47, 26 lis 2014

Logika algorytmiczna jest rachunkiem logicznym. Język logiki algorytmicznej zawiera programy i formuły algorytmiczne. Formuły tworzą algebrę z działaniami: konkatenacji, alternatywy, negacji i implikacji oraz z działaniami nieskończonymi tj kwantyfikatorami, ponadto programy są modalnościami. Programy też tworzą algebrę: działaniami tej algebry są iteracja, rozgałęzienie i złożenie programów. Mamy więc do czynienia ze splotem dwu algebr. Możemy go nazwać rachunkiem programów. Zadaniem logiki algorytmicznej jest poszukiwanie praw rachunku programów.

Celem jest zebranie praw i reguł wnioskowania, które umożliwią analizę algorytmów i wydawanie opinii o ich własnościach semantycznych, bez wykonywania obliczeń, na podstawie samego tekstu algorytmu i aksjomatów struktury danych w jakiej dany program ma byc interpretowany.

Przykład Rozpatrzmy prosty program

   (* Dane:  x>0  i  y>0  liczby naturalne *)
   Deklaracje:  typ(x, y, n, m, r, q, max)=N &  typ(n\_mniejsze)=Boolean 
   (* Wynik:  nwd(x,y)   *)
   n:=x; m:=y;
   while n ≠ m do
      Oznaczenie niech\ l=max(n,m)
      r:=0; 
      while r ≠n and r ≠m do  r:=r+1  od; 
      if r=n then n_miejsze:=true; max:=m else n_mniejsze:=false; max:=n fi; 
      Stwierdzenie (n<m & m=max(n,m) lub m<n & n=max(n,m))
      q:=0; 
      while r≠max  do  r:= r+1; q:=q+1  od; 
      Stwierdzenie q = |m-n| & (1 ≤ q < max(n,m))& r=max(n,m)
      if n_mniejsze then m:=q else n := q fi 
      Stwierdzenie max(n,m) <  l
  od ( wynik = n) 

Co robi ten program? Czy to jest pytanie dobrze postawione? Czy obliczenie tego programu jest skończone dla każdych danych n i m? Czym są te dane? Jakie znaczenie mają operacje - i + oraz stała 1? Jakie znaczenie ma predykat <?


Program logiki algorytmicznej

Zadaniem logiki algorytmicznej jest dostarczenie narzędzi do analizowania semantycznych własności programów takich jak: własność stopu, poprawność programu, etc. Znaczeniem programu [math]P[/math] jest funkcja ze zbioru [math]W[/math] wartościowań zmiennych w ten sam zbiór. Zazwyczaj funkcję tę określa się przy pomocy pojęcia obliczenia programu.

Bibliografia

  1. [AlgoLog] Grażyna Mirkowska, Andrzej Salwicki: Algorithmic Logic. Warszawa: PWN, 1987, s. 345.
  2. [LogProg] Grażyna Mirkowska, Andrzej Salwicki: Logika Algorytmiczna dla Programistów. Warszawa: WNT, 1992, s. 294. cz.1
  3. [LogProg] Grażyna Mirkowska, Andrzej Salwicki: Logika Algorytmiczna dla Programistów. Warszawa: WNT, 1992, s. 294. cz.1
  4. [AL4software] Grażyna Mirkowska, Andrzej Salwicki: Algorithmic Logic for Software Construction and Verification. Dąbrowa Leśna: Dąbrowa Research, 2014, s. 154.