PROGRAMOWANIE W JĘZYU OGII WPROWADZENIE OGIA PIERWSZEGO RZĘDU Symbole języka pierwszego rzędu dzielą się a: a symbole logicze (wspóle dla wszystkich języków zmiee przedmiotowe: x y z stałe logicze: symbole techicze: ( b symbole pozalogicze (zależe od języka symbole relacyje: P Q R symbole fukcyje: f g h stałe przedmiotowe: a b c (Symbole pozalogicze całkowicie określają day język Językiem pierwszego rzędu azywamy układ = ( Rel ; Fu ; Co ; ρ taki że Re l jest iepustym zbiorem (symboli relacyjych Fu jest zbiorem (symboli fukcyjych Co jest zbiorem (stałych przedmiotowych przy czym zbiory Re l Fu i Co są rozłącze atomiast ρ jest fukcją która każdemu symbolowi relacyjemu i fukcyjemu przyporządkowuje dodatią liczbę całkowitą zwaą arością tego symbolu
Wyróżiamy dwie klasy wyrażeń sesowych języka : a termy wyrażeia azwowe b formuły wyrażeia zdaiowe Termami języka azywamy wyrażeia języka określoe przez astępujące waruki idukcyje: wszystkie zmiee i stałe przedmiotowe są termami f ( t t jest termem jeżeli f Fu ( ρ f = oraz t t są tremami Formułami atomowymi języka azywamy wyrażeia takie że R ( t R t Re l ρ ( R = a t t są tremami języka Formułami języka azywamy wyrażeia języka określoe przez astępujące waruki idukcyje: wszystkie formuły atomowe są formułami jeżeli A B są formułami to wyrażeia ( A ( A B ( A B ( A B ( A B są formułami jeżeli A jest formułą i x jest zmieą przedmiotową to wyrażeia ( x A i ( x A są formułami
AUZUE iterał pozytywy formuła atomowa (krótko: atom iterał egatywy egacja atomu iterał literał pozytywy lub egatywy lauzula formuła postaci ( Przykład klauzuli: x y( P( x y Q( f ( x h( y a i = 2 są literałami 2 gdzie i lauzula postaci: jest rówoważa formule ( A A B k (( A A ( B k która z kolei jest rówoważa formule ( B B A m A k Formułę tę zapisujemy w postaci: A 4243 4243 Ak B Bm wiosek przeslaka przeciki w przesłace (poprzedik implikacji ozaczają koiukcje przeciki we wiosku (astępik implikacji ozaczają alteratywy Przykład: klauzula: xy( P( x A Q( y B zapis: P ( x B A Q( y
Szczególe przypadki klauzul: k = Wtedy klauzula jest postaci: A B lauzulę tej postaci azywamy klauzula defiitywą W szczególości m = 0 Wtedy po prawej stroie otrzymujemy pustą koiukcję (brak przesłaek Pusta koiukcja jest zawsze prawdziwa Zatem w tym przypadku klauzula jest postaci: A Prawda lauzulę taką azywamy jedostkową k = 0 m > 0 Wtedy po prawej stroie otrzymujemy pustą alteratywę (brak wiosków Pusta alteratywa jest zawsze fałszywa Zatem w tym przypadku klauzula jest postaci: Fałsz B Bm lauzulę taką azywamy egatywą k = 0 m = 0 Wtedy zarówo koiukcja jak i alteratywa są puste Mamy astępującą sytuację : Fałsz Prawda Zatem w tym przypadku klauzula jest fałszywa Nazywamy ja klauzulą pustą i ozaczamy
Program w języku logiki Programem w języku logiki azywamy zbiór klauzul postaci: A B B 0 agłówek treść ciało Dla > 0 klauzulę defiitywą azywamy regułą Dla = 0 klauzula defiitywa jest klauzula jedostkową i azywamy ją faktem Nieformale zaczeie klauzuli defiitywej (reguły: dla każdego wartościowaia zmieych jeżeli B i i = 2 m są prawdziwe to A jest prawdziwe Nieformale zaczeie klauzuli jedostkowej (faktu: A jest prawdziwe dla każdego wartościowaia zmieych Iterpretacja klauzul programu w języku logiki: A B 0 a deklaratywa (opisowa: A jest prawdziwe jeśli B Bm są prawdziwe b procedurala (operacyja: aby rozwiązać A rozwiąż B B m Zbiór wszystkich klauzul programu P w języku logiki w których agłówku występuje (predykat P o argumetach tworzy defiicję predykatu (relacji związku własości P / W istocie program P w języku logiki jest zbiorem defiicji predykatów P / Program P w języku logiki jest opisem obiektów koieczych do rozwiązaia daego zagadieia oraz związków jakie zachodzą pomiędzy tymi obiektami Program P w języku logiki jedozaczie określa język pierwszego rzędu P Zadaie do rozwiązaia przedstawioe jest w postaci tzw celu (ag goal zapytaia
Zapytaie jest klauzulą egatywa N taką że N P Wykoaie programu polega a udowodieiu że poday cel wyika logiczie ze zbioru formuł tworzących program P W praktyce wykazujemy że zbiór formuł P { N} ie jest spełiay co w programowaiu w logice sprowadza się do sprawdzeia czy ze zbioru formuł P { N} moża wyprowadzić klauzulę pustą stosując regułę rezolucji liiowej (odpowiadającej stosowaiu bardziej klasyczych: reguły odrywaia i reguły podstawiaia Cel N ma postać: B czyli ( B B Falsz m Stąd a podstawie prawa RZ: ( p Falsz p ( ( B co jest rówoważe ( B mamy : Jeżeli wykażemy ze zbiór P { N} ie jest spełialy to ze zaego faktu z logiki otrzymujemy że formuła gdzie N wyika logiczie ze zbioru formuł tworzących program P ( B B x xk ( B N m x xk są zmieymi występującymi w N Tym samym zajdziemy obiekty spełiające cel N
REGUŁA REZOUCJI ZDANIOWEJ { 2 m p} { 2 p} { } 2 m 2 m 0 FAT Reguła rezolucji zdaiowej jest logiczą regułą wioskowaia tz wiosek reguły rezolucji zdaiowej wyika ze zbioru przesłaek tej reguły REZOUCJA INIOWA Niech P będzie programem defiitywym Reguła rezolucji liiowej ma postać: A A m A cel G B B B k wariat klauzuli C programu P ( A A B B A A σ owy cel m k m+ gdzie σ jest MGU zbioru { A B} tz A σ = Bσ m m Uzasadieie: G: ( A A m A C: B B Bk σ : Bσ = σ A A m A A m Gσ : A σ A m σ Aσ Cσ : B σ B σ Bkσ rezolucja zdaiowa_ m k m+ A σ A σ B σ B σ A σ A σ c ( A A B B A A σ m k m+