Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Bevezetés a logikai programozásba

Hasonló előadás


Az előadások a következő témára: "Bevezetés a logikai programozásba"— Előadás másolata:

1 Bevezetés a logikai programozásba csink.laszlo@nik.bmf.hu

2 50/2 Ajánlott irodalom Aho A.V., Ullmann, J.D.: Foundations of Computer Science (C Edition), Computer Sci. Press, New York 1966. ISBN 0-7167-8284-7 Csink, L.: Logikai programozás. Kandó Kálmán Villamosipari Műszaki Főiskola, Budapest, 1991.

3 50/3 Predikátumok 1. Predikátumok: kijelentésekhez logikai értéket (IGAZ, HAMIS) rendel r(esik az eső) u(Pistike esernyőt visz magával) w(Pistike megázik) Állítások (propozíciók): r  u Ha esik az eső, Pistike esernyőt visz magával. u  w Ha Pistike esernyőt visz magával, Pistike nem ázik meg.  r  w Ha nem esik az eső, Pistike nem ázik meg. (  A tagadást jelenti)

4 50/4 Predikátumok 2. Predikátumok változóinak bevezetése r(esik az eső) u Pistike (Pistike esernyőt visz magával) w Pistike (Pistike megázik), u Juliska (Juliska esernyőt visz magával), w Juliska (Juliska megázik), r  u Pistike Ha esik az eső, Pistike esernyőt visz magával. r  u Juliska Ha esik az eső, Juliska esernyőt visz magával. u Pistike  w Pistike Ha Pistike esernyőt visz magával, Pistike nem ázik meg.  r  w Juliska Ha nem esik az eső, Juliska nem ázik meg. Ha X egy változó, akkor beszélhetünk u X  u(X) predikátumról, és r  u X u X  w X  r  w X állításokról. Bizonyos X értékekre U X lehet igaz, más X értékekre u X lehet hamis.

5 50/5 Predikátumok 3. Predikátumok változókkal r(esik az eső) u Pistike (Pistike esernyőt visz magával) w Pistike (Pistike megázik), u Juliska (Juliska esernyőt visz magával), w Juliska (Juliska megázik), r  u(X) Bármely X személyre, ha esik az eső, X esernyőt visz magával. u(X)  NOT w(X)Bárki is vagy, ha viszel ernyőt, nem ázol meg. u Pistike  w Pistike Ha Pistike esernyőt visz magával, Pistike nem ázik meg. NOT r  NOT w(X) Ha nem esik az eső, senki sem ázik meg.

6 50/6 Predikátumok 4. A predikátumok olyan logikai függvények, melyek argumentumai termek lehetnek. Term: konstans, változó, vagy ún. összetett (compound) term. Compund termre példa: szemely(„Kovács Jani”, „Pipacs tér 2.”, „4712526”) szemely az ún. functor, argumentumai konstansok vagy változók. (rekordhoz hasonlóan viselkedik) A term „rekurzív jellegű” definíciója: A term lehet konstans, változó, vagy összetett term, ahol az összetett term argumentumai bármilyen termek lehetnek.

7 50/7 Atom Atom: egy predikátum (melynek argumentumai termek) Ground atom: ha az argumentumok mind konstansak (ill. nincsenek argumentumai) Konvenciók: változónevet nagy betűvel kezdünk Karakter-stringek (ezek konstansok) kisbetűvel kezdődnek Konstansok lehetnek még számok (integer vagy real) és idézőjelek közötti karakter stringek

8 50/8 Példák formulákra CS205 cs205 205 „cs 205” p(X,x) p(3,4,5) „p(3,4,5)” Változó konstans (string) konstans (integer) konstans (string) (nem ground) atom ground atom konstans

9 50/9 További fogalmak literal: atom vagy atom negáltja, pl. p(X,a) Ground literal:ha nem tartalmaznak az argumentumok változót, pl. NOT p(a,b) Műveletek AND, OR, NOT, p q p AND q 0 0 0 0 1 0 1 0 0 1 1 1 p q p OR q 0 0 0 0 1 1 1 0 1 1 1 1 p NOT p 0 1 1 0

10 50/10 Logikai műveletek és kifejezések Implikáció:  Ekvivalencia:  p q p  q q  p (p  q)AND(q  p) 0 0 1 1 1 0 1 1 0 0 1 0 0 1 0 1 1 1 1 1 p q p  q 0 0 1 0 1 0 1 0 0 1 1 1 Logikai kifejezés: logikai művelet segítságável jön létre, úgy, hogy (rekurzív definíció) a logikai műveletek argumentumaiba további logikai kifejezést helyettesíthetünk. Clause:OR művelettel összekapcsolt literálok

11 50/11 egzisztenciális kvantifikátor Kvantifikátorok Mondjuk azt szeretnénk kifejezni, hogy „ha esik, valaki vizes lesz” r  w(„Juli”) OR w(„Pistike”) OR w(„Jenőke”) OR w(„Anna”) Nem az igazi, mert nem tudjuk felsorolni az összes személyt, ha nem ismerjük a teljes halmazt, valamint nincs végtelen OR művelet Helyette: r  (  X)w(X) (van olyan X, hogy…) A változatosság kedvéért: „ha esik, mindenki vizes lesz” r  w(„Juli”) AND w(„Pistike”) AND w(„Jenőke”) AND w(„Anna”) Nem az igazi, ugyanazért, mint fent Helyette: r  (  X)w(X) (minden X-re fennáll, hogy…) Univerzális kvantifikátor

12 50/12 Kvantifikátorok és logikai kifejezések Kibővítjük a logikai kifejezés fogalmát: Ha E logikai kifejezés, akkor (  X)E és (  X)E is logikai kifejezés. Precedencia (példák): (  X)p(X) OR q(X) u.a. mint ((  X)p(X)) OR q(X) (  X) NOT w(X)OR(  Y)w(Y) u.a. mint ((  X) NOT w(X))OR((  Y)w(Y)) (  X)(  Y)p(X,Y) nem azonos (  Y)(  X)p(X,Y) kvantifikálással. Példa: p  loves, értelmezése, hogy az első argumentum szereti a másodikat, ekkor (  X)(  Y)loves(X,Y)mindenki szeret valakit (  Y)(  X)loves(X,Y)VAN VALAKI, AKIT MINDENKI SZERET

13 50/13 Vagy mindenki esernyőt visz, Vagy mindenki vizes lesz Néhány példa logikai kifejezésre 1. (  X)u(X) OR (  X)w(X) ua. mint (  X)u(X) OR (  Y)w(Y) zöld kvantifikátor hatóköre piros kvantifikátor hatóköre (  X)(u(X) OR w(X)) Mindenkire teljesül, hogy vagy esernyőt visz, vagy vizes lesz (ki így, ki úgy jár) zöld kvantifikátor hatóköre

14 50/14 Példa logikai kifejezésre 2. (  X)(u(X) OR (  X)w(X)) ua. mint (  X)(u(X) OR (  Y)w(Y)) Mindenkire igaz, hogy vagy esernyőt visz, vagy létezik valaki (más), aki vizes lesz A piros X a zöld  kvantifikátor számára kötött (bound) változó, a zöld X viszont szabad (free) változó

15 50/15 Példa logikai kifejezésre 3. u(X) OR (  X)w(X) Vagy X esernyőt visz, vagy létezik valaki (más), aki vizes lesz A zöld X szabad (free), a piros X kötött (bound) változó, melyet a piros  kvantifikátor köt meg.

16 50/16 Interpretációk p{0, 1} Igazságérték hozzárendelés A p predikátum igazságértékét minden lehetséges változó értékek mellett meghatározzuk Legyen D  halmaz, amely tartalmaz- za a konstansokat, és a változók is ebből veszik fel értékeiket. Egy k-változós p predikátum interpretációja egy f: D k  {0,1} függvény. Ehhez szükséges, hogy a termek, mint a predikátumok argumentumai is értelmezést kapjanak: a konstansok D elemei, a változók D beli értéket vehetnek fel, az összetett termek pedig D-beli értékkészletű, D-beli argumentumokkal rendelkező függvények.

17 50/17 Példa interpretációra 1a. p(X,Y)  (  Z) (p(X,Z) AND p(Z,Y)) I 1 interpretáció: D , a valós számok halmaza. A változók is valós értékeket vehetnek fel, összetett term most nincs. p(U, V) legyen igaz, ha U < V. I 1 interpretáció szerint formulánk jelentése az, hogy bármely a és b valós szám között - ha a < b -létezik másik valós szám. Ez mindig igaz. Az X és Y szabad változóknak más és más értéket adva újabb interpretációkat nyerünk, melyek mindegyike esetén a fenti formula igaz lesz.

18 50/18 Példa interpretációra 1b. p(X,Y)  (  Z) (p(X,Z) AND p(Z,Y)) I 2 interpretáció: D , az egész számok halmaza. A változók is egész értékeket vehetnek fel, összetett term most nincs. p(U, V) legyen igaz, ha U < V. I 2 interpretáció szerint formulánk jelentése az, hogy bármely a és b egész szám között - ha a < b - létezik másik egész szám. Ez igaz, ha a  b-1 Az X és Y szabad változóknak más és más értéket adva, (amíg az a  b-1 feltételt betartjuk) újabb interpretációkat nyerünk, melyek mindegyike esetén esetén a fenti formula igaz lesz. Nem igaz a fenti formula ha X=a és Y=a+1 (bármely a egész szám esetén.)

19 50/19 Példa interpretációra 1c. p(X,Y)  (  Z) (p(X,Z) AND p(Z,Y)) I 3 interpretáció: D  {a,b,c}, ahol a,b,c tetszőleges szimbólumok. p(U, V) legyen igaz, ha UV  {aa, ab, ba, bc, cb, cc}, És legyen hamis, ha UV  {ac, bb, ca}. (a többi lehetőség) I 3 interpretáció szerint formulánk mindig igaz. Az összes lehetséges értelmezés 9 féle lehet, mivel ennyi párkombináció áll elő D elemeiből U és V megválasztására. A következő ábra mutatja, hogy Z milyen választásával tehető a formula igazzá.

20 50/20 Példa interpretációra 1c. - folytatás XYMiért igaz aaZ= a vagy b abZ= a acp(a,c) FALSE baZ= a bbp(b,b) FALSE bcZ=cZ=c cap(c,a) FALSE cbZ=cZ=c ccZ=b vagy c p(X,Y)  (  Z) (p(X,Z) AND p(Z,Y)) A predikátumok igazságértékének meghatározására volt definíciónk, a fenti „zöld hátterű” formula kiértéKelését úgy végezzük, hogy a műveleteket és a kvantifikátort értékeljük ki

21 50/21 A „zöld hátterű” formula kiértékelése az I2 interpretáció szerint p(X,Y)  (  Z) (p(X,Z) AND p(Z,Y)) p(X,Y)  (  Z) AND p(X,Z)p(Z,Y) I 2 interpretáció: D , az egész számok halmaza. A változók is egész értékekete vehetnek fel, összetett term most nincs. p(U, V) legyen igaz, ha U < V. Vegye fel X a 3, Y a 7 értéket. Ekkor p(3,7) TRUE. Z-t 4-nek választva a fa másik ága is igaz (a levelekből indulva látjuk). Ha D végtelen halmaz, nem biztos, hogy algoritmussal megállapítható, hogy alkalmas Z létezik-e.

22 50/22 Tautológia Egy E kifejezés tautológia, ha minden lehetséges interpretáció esetén E igazságértéke 1 (TRUE) lesz. Példa: q(X) OR NOT q(X) tautológia, q-tól és X-től függetlenül mindig igaz (pontosabban q és X bármely interpretációja esetén mindig igaz) A „zöld formula” nem tautológia, mert noha I 1 és I 3 interpretációkra mindig igaz, I 2 esetén nem mindig igaz. Helyettesítési elv. Ha egy tautológiában egy változót következetesen helyettesítünk egy kifejezéssel, tautológia marad.

23 50/23 Kifejezések ekvivalenciája Egy E és egy F kifejezések ekvivalensek definíció szerint, ha E  F tautológia, azaz bármely interpretáció esetén, E és F ugyanazon igazságértékkel bírnak. Egyenlők egyenlőkkel való helyettesítésének elve Ha E 1 ekvivalens E 2 -vel, akkor tetszőleges F 1 formulában, amelyben E 1 szerepel, írhatunk helyette E 2 -t, és a kapott F 2 formula ekvivalens lesz F 1 -gyel. Példa. (p AND q )  (q AND p ) ha p és q ground atomok. Helyettesítsünk p helyére p(X) -et, q helyére q(Y,Z) -t. Ekkor (p(X) AND q(Y,Z))  (q(Y,Z) AND p(X) ) is tautológia, azaz p(X) AND q(Y,Z) és q(Y,Z) AND p(X) ekvivalensek.

24 50/24 Másik példa ekvivalenciára p(X) OR NOT p(X)  q(Y) OR NOT q(Y) A  mindkét oldalán tautológia van - mint ezt korábban láttuk - így nyilván a sárga formula is tautológia, hiszen mindkét oldala mindig igaz. Lehet tehát, hogy az ekvivalens formulák más változókat tartalmaznak, és mások a predikátumok is, mégis ekvivalensek.

25 50/25 Változók átnevezése 1. Egy lokális változót C-ben átnevezhetünk, ha minden előfordulását következetesen helyettesítjük egy másik változónévvel. Vezessük be a Q jelölést, amely állhat vagy a  vagy a  jel helyett. Tekintsük a (QX) E  (QY) E' formulát, ahol E' úgy áll elő, hogy E -ben minden olyan X előfordulást, amely kötött a (QX) kvantifikátorhoz, Y-nal helyettesítünk. Állítás. Ha Y nem fordul elő szabadon E-ben, akkor a piros formula tautológia. Bizonyítás: Tekintsük (QX) E egy I interpretációját. (Mivel a szabad változók és a predikátumok ugyanazok, ez a jobboldali kifejezés interpretációja is.) Ha I, X-nek v értéket adva, igazzá teszi E-t, akkor Y-nak v-értéket adva igazzá teszi E' -t is, és fordítva. Mivel I tetszőleges volt, és a két oldal egyszerre igaz vagy hamis I szerint, az állítást beláttuk.

26 50/26 Változók átnevezése 2. ((  X)p(X,Y)) OR NOT ((  X)p(X,Y)) A „türkiz formula” tautológia. Megvizsgáljuk a helyettesítést. Helyettesítsük a baloldali X-t Z-vel. E legyen p(X,Y), E‘ ekkor ((  Z)p(Z,Y)) lesz, az „egyenlők helyett egyenlők helyettesítése” miatt a türkiz formula ekvivalens a ((  Z)p(Z,Y)) OR NOT ((  X)p(X,Y)) formulával. Vegyük észre, hogy X-t Y-nal nem helyettesíthetjük, mert Y szabadon fordul elő a kvantifikátor hatókörén belül. Valóban, (  X)p(X,Y)  (  Y)p(Y,Y) nem tautológia. Legyen D az egészek halmaza, p jelentse a < relációt, és legyen pl. Y a 10 konstans. A baloldal igaz pl. ha X helyére a 9 értéket helyettesítjük, a jobboldal viszont nem igaz.

27 50/27 Szabad változók univerzális kvantifikációja Ha egy kifejezésben szabad változók vannak, csak akkor lehet tautológia, ha összes szabad változóit univerzálisan kvantifikálva tautológiát kapunk. Vagyis minden T tautológiára és X változóra, (  X)T tautológia. (X akár szabad T-ben, akár kötött). Bizonyítás. Legyenek T szabad változói Y 1,…Y k, lehet, hogy X elő sem fordul közöttük. Tegyük fel először, hogy X= Y 1 és legyen I egy tetszőleges interpretáció. Azt kell megmutatni, hogy I igazzá teszi (  X)T -t Ez azt jelenti, hogy ha X-nek egy v konstans felel meg I szerint, és ezt X helyébe T-ben mindenhol behelyettesítjük, akkor a kapott formula igaz. Ez azonban nyilvánvaló, mert T tautológia. Ha X= Y k valamely k-ra, a bizonyítás teljesen hasonló. Ha X nem fordul elő T szabad változói között, akkor X érték- választása T igazságértékét nem befolyásolja, így minden lehetséges értékére T igaz lesz, azaz (  X)T igaz.

28 50/28 Zárt kifejezések Ha T tautológia, akkor feltehető, hogy nincs benne szabad változó, ugyanis tekintsük helyette (  X)T kifejezést. Ezt hívjuk T univerzális lezárásának. Zárt az a kifejezés, amelyben nincs szabad változó. Példa. Tudjuk, hogy p(X,Y) OR NOT p(X,Y) tautológia. A fentiek szerint (  X) (  Y) (p(X,Y) OR NOT p(X,Y)) is tautológia.

29 50/29 Tagadás és kvantifikátorok ( NOT ((  X) E) )  ( (  X) (NOT E) ) „Nem igaz, hogy minden X-re teljesül E” ekvivalens azzal, hogy „létezik X, amelyre nem teljesül E” ( NOT ((  X) E) )  ( (  X) (NOT E) ) „Nem létezik olyan X-re, melyre teljesül E” ekvivalens azzal, hogy „bármely X-re, nem teljesül E” Ha véges sok lehetséges érték van, a fenti szabályok a de Morgan azonosságból következnek. Végtelen esetben is igazak azonban.

30 50/30 AND, OR és kvantifikátorok ( E AND (QX)F)  (QX)(E AND F) ((QX)E AND F)  (QX)(E AND F) ( E OR (QX)F)  (QX)(E OR F) ((QX)E OR F)  (QX)(E OR F) E és F kifejezések Q valamelyik kvantifikátor X nem szabad E-ben A sárga és türkiz szabályok a zöld feltételekkel teljesülnek. Példa transzformációra: (  X) p(X) OR (  X) (NOTp(X)) Átnevezés: (  X) p(X) OR (  Y) (NOTp(Y)) 2. türkiz formula Q=  : (  X) ( p(X) OR (  Y) (NOTp(Y)) ) 1. türkiz formula Q=  : (  X)(  Y) ( p(X) OR (NOTp(Y)) ) Ez a kifejezés tautológia. Legyen ui. I egy tetszőleges interpretáció, v pedig X értéke I szerint. Ha p(v) igaz, akkor Y-tól függetlenül p(X) OR (NOTp(Y)) igaz, ha pedig p(v) hamis, válasszuk Y=v értéket, és (NOTp(Y)) igaz lesz. E és F kifejezések Q valamelyik kvantifikátor X nem szabad F-ben

31 50/31 Prenex forma Bármely „értelmes” kifejezés ún. prenex formára, azaz (Q 1 X 1 ) (Q 2 X 2 )… (Q k X k ) E alakra hozható, ahol Q 1, Q 2, …,Q k kvantifikátorok, és az E formulában nincs kvantifikátor. Hogyan hozható egy kifejezés prenex formára? Alkalmazzuk a következő lépéseket szükség szerint: 1. Lépés:átnevezéssel elérjük, hogy minden kvantifikátor különböző változóra vonatkozzék 2. Lépés:ez előző két dia sárga és türkiz szabályaival a NOT, AND, és OR felcserélhető a kvantifi- kátorokkal Hasonlat: egy C program „prenex alakja” valami olyasmit jelen- tene, hogy az összes lokális változót különbözőnek nevezzük, és mind kihozzuk őket a program elejére globális változónak. Ezt ál- talában nem akarjuk, de logikában hasznos trükk.

32 50/32 (  X)(  Y) E  (  Y)(  X)E Tartomány az egész számok, E az = reláció. Baloldal: „van olyan egész, mellyel minden egész egyenlő”: FALSE Jobboldal: „minden egészre van vele egyenlő (önmaga)”: TRUE (  X)(  Y) E  (  Y)(  X) Tartomány az egész számok, E a < reláció. Baloldal: „minden egésznél van nagyobb”:TRUE Jobboldal: „van olyan egész, amelynél minden egész kisebb”: FALSE Azonos kvantifikátorok sorrendje Nyilván (  X)(  Y) E  (  Y)(  X)E (  X)(  Y) E  (  Y)(  X)E De nem igaz: (  X)(  Y) E  (  Y)(  X)E (  X)(  Y) E  (  Y)(  X)E

33 50/33 Bizonyítás fogalma Legyenek E 1,E 2,…,E k kifejezések („axiómák”) Képezzük kifejezések egy sorozatát, melyek mindegyike vagy axióma, vagy következik a sorozat valamely előző eleméből, ill. elemeiből. Feltesszük, hogy mind az axiómák, mind a bizonyításban szereplő kifejezések zárt formulák (nincs bennük szabad változó). A gyakorlatban időnként nem írjuk ki az univerzális kvantifikálást, de beleértjük a formulába (azaz a „szabad” változók minden értékére igaznak tekintjük a formulát, így a változó tkp. már nem szabad) Példa wife(john,mary). loves(X,john)  loves(X,mary). A másodikat (  X)(( loves(X,john)  loves(X,mary)) formulaként értjük, tehát „bárki aki szereti Johnt, szereti a feleségét is”. (Más kérdés, hogy ez tautológia-e…) Következtetés: F következik E 1,E 2,…,E k kifejezésekből, ha F 1 AND F 2 AND … AND F k  F tautológia.

34 50/34 Bizonyítási technikák Esetszétválasztás: ((p  q) AND (NOT p  q))  q Kontrapozitív szabály: (p  q)  (NOT q  NOT p) Ellentmondás keresés: (NOT p  0)  p Redukció: (p  1)  p (ha p-t addig helyettesítjük ekvivalens formulákkal, amíg az azonosan igazat nem kapjuk…) Minden tautológiát használhatunk a bizonyításban. Nevezetes tautológia a modus ponens: ha E és E  F tagjai a bizonyításnak, F is csatolható (ok: (E AND (E  F))  F tautológia). Ha E és F szerepelnek a bizonyításban, E AND F is szerepelhet (mivel (E AND F)  (E AND F) tautológia). Ha E és E  F szerepel a bizonyításban, akkor F is szerepelhet (helyettesítési elv: ((E AND (E  F)  F tautológia). A modus ponenst gyakran nevezik rezolúciónak is.

35 50/35 Tények és szabályok Tény:ground atom Szabály:implikáció, melynek baloldalán AND művelettel összekapcsolt atomok, a jobboldalán pedig egy atom szerepel. A jobboldal a fejrész (head), a baloldal a formula teste (body). Feltételezzük, hogy a fejben előforduló minden változó valahol a testben is előfordul. A test atomjait rész-célállításnak(subgoal) nevezzük. Megpróbáljuk ezeket a subgoal-okat igazolni (bizonyítani), mert ha mindet sikerül, akkor az AND kapcsolat miatt a szabály teste is igaz, és ez implikálja a szabály fejét. Közben változó- helyettesítésekre is szükség lehet. Ha sikerrel járunk, a szabály feje egy ground atom, amit további bizonyításokhoz lehet használni.

36 50/36 Bizonyíthatóság és igazság 1: modell Megpróbáljuk az igazság fogalmát megközelíteni. Kifejezések egy halmazának modellje ama interpretációk halmaza, melyek az összes kifejezést igazzá teszik. Példa. (  X)(  Y) p(X,Y) modelljét keressük. Legyen I egy interpretáció D alaphalmazzal. P predikátumnak egy reláció felel meg a D  D halmazon, mégpedig pontosan azok az (a,b) rendezett párok vannak relációban, melyekre p(a,b) teljesül, a  D, b  D. (A reláció tekinthető 0-1 értékű függvénynek is, mint a reláció-halmaz karakterisztikus függvénye.) Ha p-nek egy ilyen relációt feleltetünk meg, akkor I modellje a formulának, ha nem ilyen a reláció, akkor I nem modellje a formulának. Ha D az egészek halmaza, p a < reláció, akkor ez modellje a formulának, de ha ugyanezen a D halmazon az X=Y 2 relációt feleltetjük meg p-nek, akkor ez nem lesz modell.

37 50/37 Legyenek E 1,E 2,…,E n formulák. Azt mondjuk, hogy egy E formula következik az E 1,E 2,…,E n formulákból, ha E 1,E 2,…,E n formulák minden modellje egyúttal modellje E-nek is. (Egy I interpretáció modellje E 1,E 2,…,E n formuláknak, ha mindegyik E i - nek modellje.) E tény jelölése: E 1,E 2,…,E n E Úgy is mondhatnánk, hogy a következtetés akkor jogos, ha minden a baloldalt megmagyarázó (igazzá tevő) értelmezés szerint a jobboldal is igaz. Bizonyíthatóság és igazság 2. Ha egy adott bizonyítási szisztémánk van (ahol pl. a rezolúció a következtetési szabály), akkor E 1,E 2,…,E n E Azt jelenti, hogy E bizonyítható E 1,E 2,…,E n felhasználásával.

38 50/38 Bizonyíthatóság és igazság 3. Ha E következménye E 1,E 2,…,E n formuláknak, akkor E 1 AND E 2 AND … AND E n  E tautológia. Bizonyítás. Legyen I egy tetszőleges interpretáció. Ha I szerint a baloldal igaz, akkor I modellje mindegyik E i -nek, tehát E-nek is. Ha I szerint a baloldal nem igaz, akkor pedig hivatkozhatunk arra, hogy az implikáció igaz hamis előtag esetén. Az állítás fordítva is igaz! Szeretnénk, ha egy adott bizonyítási rendszer mindent bebizonyítana, ami igaz, és semmit se bizonyítana be, ami hamis. Egy bizonyítási rendszer konzisztens, ha minden, ami bizonyítható (egy-vonalú jel), az következmény is (dupla-vonalú jel). Egy bizonyítási rendszer teljes, ha minden állítás vagy bizonyítható, vagy cáfolható (tagadása bizonyítható).

39 50/39 Bizonyíthatóság és igazság 4. Gödel tétel (1931). Tetszőleges konzisztens bizonyítási rendszerben található igaz, de nem bizonyítható állítás (más szavakkal a rendszer nem teljes). Egy ilyen E formulára, E 1,E 2,…,E n axiómák mellett, E 1,E 2,…,E n E, azonban E 1,E 2,…,E n E Egy kis filozófia: nincs mechanikus (algoritmikus, számítógépes programmal megoldható) módszer arra, hogy egy (logikai formula alakjában megfogalmazható) kérdésről eldöntsük, hogy igaz-e vagy sem. Ha találtunk bizonyítást, akkor igaz, de lehet az is, hogy igaz az állítás, de nincs véges lépésben elvégezhető bizonyítás. Az ilyen E állítás persze hozzávehető az axiómákhoz. Ekkor lesz azonban egy igaz, de bizonyíthatatlan F állításunk!

40 50/40 Rezolúciós bizonyítás ellentmondással: avagy hogyan működik a Prolog Axiómák: E 1, E 2, …, E k, célállítás: E Kérdés: E 1, E 2, …, E k  E ahol a baloldalon a vesszők jelentése AND. Az implikáció definíciója és a deMorgan azonosság szerint szerint igazolandó NOT E 1 OR NOT E 2 OR … OR NOT E k OR E. Tegyük fel, hogy ez nem igaz: E 1 AND E 2 AND … AND E k AND NOT E (azaz a célállítás tagadását hozzávesszük az axiómákhoz) és szeretnénk ellentmondáshoz jutni. Balról jobbra haladunk a formulában, és próbáljuk bizonyítani, újabb és újabb subgoal-okat véve, közben helyettesítéseket alkalmazva. Ha ez valahol megszakad, akkor ellentmondást találtunk, és a helyettesítések adják a megoldást. Ha nem szakad meg, és nincs ellentmondás, akkor a célállítást nem igazoltuk.

41 50/41 /* Turbo Prolog 2.0 Chapter 5, Example Program 12 Copyright (c) 1986, 88 by Borland International, Inc */ trace domains name, sex, occupation, object, vice, substance = symbol age=integer

42 50/42 predicates person(name, age, sex, occupation) had_affair(name, name) killed_with(name, object) killed(name) killer(name) motive(vice) smeared_in(name, substance) owns(name, object) operates_identically(object, object) owns_probably(name, object) suspect(name)

43 50/43 /* * * Facts about the murder * * */ clauses person(bert, 55, m, carpenter). person(allan, 25, m, football_player). person(allan, 25, m, butcher). person(john, 25, m, pickpocket). had_affair(barbara, john). had_affair(barbara, bert). had_affair(susan, john). killed_with(susan, club). killed(susan).

44 50/44 motive(money). motive(jealousy). motive(righteousness). smeared_in(bert, blood). smeared_in(susan, blood). smeared_in(allan, mud). smeared_in(john, chocolate). smeared_in(barbara, chocolate). owns(bert, wooden_leg). owns(john, pistol).

45 50/45 /* * * Background knowledge * * */ operates_identically(wooden_leg, club). operates_identically(bar, club). operates_identically(pair_of_scissors, knife). operates_identically(football_boot, club). owns_probably(X, football_boot) :- person(X, _, _, football_player). owns_probably(X, pair_of_scissors) :- person(X, _, _, hairdresser). owns_probably(X, Object) :- owns(X, Object).

46 50/46 /* * * * * * * * * * * * * * * * * * * * * * * * Suspect all those who own a weapon with * * which Susan could have been killed. * * * * * * * * * * * * * * * * * * * * * * * */ suspect(X) :- killed_with(susan, Weapon), operates_identically(Object, Weapon), owns_probably(X, Object).

47 50/47 /* * * * * * * * * * * * * * * * * * * * * * * * * * * Suspect men who have had an affair with Susan. * * * * * * * * * * * * * * * * * * * * * * * * * * */ suspect(X) :- motive(jealousy), person(X, _, m, _), had_affair(susan, X).

48 50/48 /* * * * * * * * * * * * * * * * * * * * * * Suspect females who have had an * * affair with someone that Susan also had an affair with. * * * * * * * * * * * * * * * * * * * * * */ suspect(X) :- motive(jealousy), person(X, _, f, _), had_affair(X, Man), had_affair(susan, Man).

49 50/49 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * Suspect pickpockets whose motive could be money. * * * * * * * * * * * * * * * * * * * * * * * * * * * */ suspect(X) :- motive(money), person(X, _, _, pickpocket).

50 50/50 killer(Killer) :- person(Killer, _, _, _), killed(Killed), Killed <> Killer, /* It is not a suicide */ suspect(Killer), smeared_in(Killer, Goo), smeared_in(Killed, Goo). Van kedvük próbafuttatásra?


Letölteni ppt "Bevezetés a logikai programozásba"

Hasonló előadás


Google Hirdetések