Částečná korektnost. Petr Štěpánek. S využitím materialu Krysztofa R. Apta

Podobné dokumenty
Occur-check (Test konfliktu proměnných)

Logické programy Deklarativní interpretace

Modely Herbrandovské interpretace

SLD-derivace. Petr Štěpánek. S využitím materiálu Krysztofa R. Apta

Negativní informace. Petr Štěpánek. S použitím materiálu M.Gelfonda a V. Lifschitze. Logické programování 15 1

Substituce. Petr Štěpánek. S využitím materialu Krysztofa R. Apta. Logické programování 2 1

Domény. Petr Štěpánek. S využitím materialu Krysztofa R. Apta

Zastavování výpočtů (Terminace)

Programování v čistém Prologu

Výroková a predikátová logika - V

Výroková a predikátová logika - XII

Zobecněný Riemannův integrál

V předchozí kapitole jsme podstatným způsobem rozšířili naši představu o tom, co je to číslo. Nadále jsou pro nás důležité především vlastnosti

Representace znalostí s použitím klasické negace

Každé formuli výrokového počtu přiřadíme hodnotu 0, půjde-li o formuli nepravdivou, a hodnotu 1, půjde-li. α neplatí. β je nutná podmínka pro α

Systém přirozené dedukce výrokové logiky

Výroková a predikátová logika - III

Výroková a predikátová logika - IV

Výroková a predikátová logika - III

Výroková a predikátová logika - II

Riemannův určitý integrál

popel, glum & nepil 16/28

Predik atov a logika - pˇredn aˇska () Predik atov a logika - pˇredn aˇska / 16

Výroková a predikátová logika - II

Logika. 5. Rezoluční princip. RNDr. Luděk Cienciala, Ph. D.

Výroková a predikátová logika - IX

Matematika III. Miroslava Dubcová, Daniel Turzík, Drahoslava Janovská. Ústav matematiky

Základy logiky a teorie množin

Prolog PROgramming in LOGic část predikátové logiky prvního řádu rozvoj začíná po roce 1970 Robert Kowalski teoretické základy Alain Colmerauer, David

Výroková a predikátová logika - II

Hilbertovský axiomatický systém

Množiny, relace, zobrazení

Výroková logika - opakování

Logické programování

Matematická analýza pro informatiky I. Limita funkce

Logika. 6. Axiomatický systém výrokové logiky

Výroková logika. Teoretická informatika Tomáš Foltýnek

Logika, výroky, množiny

Matematická logika. Miroslav Kolařík

PŘEDNÁŠKA 7 Kongruence svazů

1. Matematická logika

Logika a logické programování

Výroková a predikátová logika - VIII

Aplikace: Znalostní báze

Výroková a predikátová logika - X

Pravděpodobnost a statistika

Výroková a predikátová logika - IX

Logické programování

teorie logických spojek chápaných jako pravdivostní funkce

Lineární algebra : Lineární prostor

Základy matematické logiky

Klauzulární logika. úvod. Šárka Vavrečková. 20. října Ústav informatiky Filozoficko-Přírodovědecká fakulta Slezské univerzity, Opava

6 Skalární součin. u v = (u 1 v 1 ) 2 +(u 2 v 2 ) 2 +(u 3 v 3 ) 2

Převyprávění Gödelova důkazu nutné existence Boha

Obecná úloha lineárního programování

2.5 Rezoluční metoda v predikátové logice

1 Výroková logika 1. 2 Predikátová logika 3. 3 Důkazy matematických vět 4. 4 Doporučená literatura 7

Matematická logika. Rostislav Horčík. horcik

Základy matematické analýzy

Výroková a predikátová logika - VIII

Teorie informace a kódování (KMI/TIK) Reed-Mullerovy kódy

3. Podmíněná pravděpodobnost a Bayesův vzorec

1 REZOLUČNÍ FORMÁLNÍ DŮKAZY

Množinu všech slov nad abecedou Σ značíme Σ * Množinu všech neprázdných slov Σ + Jazyk nad abecedou Σ je libovolná množina slov nad Σ

Výroková a predikátová logika - VII

Výroková a predikátová logika - VI

platné nejsou Sokrates je smrtelný. (r) 1/??

Greenova funkce pro dvoubodové okrajové úlohy pro obyčejné diferenciální rovnice

Matematická logika. Miroslav Kolařík

Výroková a predikátová logika - X

Matice. a m1 a m2... a mn

Báze a dimenze vektorových prostorů

Lineární algebra : Násobení matic a inverzní matice

2 Důkazové techniky, Indukce

Výroková a predikátová logika - IX

Formální systém výrokové logiky

1. Matematická logika

Sémantika predikátové logiky

Složitější domény. Petr Štěpánek. S využitím materialu Krysztofa R. Apta

dx se nazývá diferenciál funkce f ( x )

8.3). S ohledem na jednoduchost a názornost je výhodné seznámit se s touto Základní pojmy a vztahy. Definice

Lineární algebra : Násobení matic a inverzní matice

Výroková a predikátová logika - XII

Unifikace. Petr Štěpánek. S využitím materialu Krysztofa R. Apta. Logické programování 3 1

Další (neklasické) logiky. Jiří Velebil: AD0B01LGR 2015 Predikátová logika 1/20

Matematická logika. Miroslav Kolařík

Matematická logika. Rostislav Horčík. horcik

Definice (Racionální mocnina). Buď,. Nechť, kde a a čísla jsou nesoudělná. Pak: 1. je-li a sudé, (nebo) 2. je-li liché, klademe

TOPOLOGIE A TEORIE KATEGORIÍ (2017/2018) 3. PREDNÁŠKA - KOMPAKTNÍ PROSTORY.

Lineární algebra : Báze a dimenze

Predikátová logika dokončení

FIT ČVUT MI-LOM Lineární optimalizace a metody. Dualita. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Unární je také spojka negace. pro je operace binární - příkladem může být funkce se signaturou. Binární je velká většina logických spojek

Vektorové podprostory, lineární nezávislost, báze, dimenze a souřadnice

Základní pojmy matematické logiky

Místo pojmu výroková formule budeme používat zkráceně jen formule. Při jejich zápisu

KMA/MDS Matematické důkazy a jejich struktura

7 Ortogonální a ortonormální vektory

Nechť je číselná posloupnost. Pro všechna položme. Posloupnost nazýváme posloupnost částečných součtů řady.

Tableaux metody. Jiří Vyskočil 2011

Transkript:

Částečná korektnost Petr Štěpánek S využitím materialu Krysztofa R. Apta 2007 Logické programování 14 1 Částečná korektnost je vlastností programu a znamená, že program vydává korektní výsledky pro dané dotazy. Vzhledem k tomu, dotazy pro logické programy a programy v čistém Prologu mohou být formulovány tak, že očekáváme jednu, nebo více odpovědí, je třeba pojem částečné korektnosti vyjádřit dvojím způsobem. Motivace. Program APPEND může ilustrovat oba případy. Pro dotaz app([1,2],[3,4],zs]) bychom chtěli dokázat, že pokud výpočet zakončíúspěšně, proměnné Zs bude přiřazen seznam [1,2,3,4], t.j. vypočtená odpovědní substituce {Zs/[1,2,3,4}. Na druhé straně, pro dotaz app(xs,ys,[1,2,3,4]) bychom rádi dokázali, že jako odpovědi dostaneme všechna možná rozdělení seznamu [1,2,3,4] na prefix a sufix. Logické programování 14 2

To znamená, že dokážeme, že každá substituce {Xs/[],Ys/[1,2,3,4]} {Xs/[1],Ys/[2,3,4]} {Xs/[1,2],Ys/[3,4]} {Xs/[1,2,3],Ys/[4]} {Xs/[1,2,3,4],Ys/[]} je možná vypočtená odpověď na dotaz app(xs,ys,[1,2,3,4]). Navíc bychom měli dokázat, že žádná jiná substituce nebude vypočtena. To je totéž jako tvrzení, že uvedená množina substitucí je totožná s množinou všech vypočtených substitucí k uvedenému dotazu. Podobné zesílení je možné i u prvního dotazu. Zde bychom měli dokázat, že dotaz app([1,2],[3,4],zs]) připouští právě jednu vypočtenou odpovědní substituci {Zs/[1,2,3,4}. Logické programování 14 3 Původní formulace zaručovala jenom, že tento dotaz připouští nejvýše jednu odpověď {Zs/[1,2,3,4]}. Oba popsané typy částečné korektnosti lze formalizovat pomocí odpovědních instancí dotazu. Definice. (částečná korektnost) Mějme program P, dotaz {Q} a množinu dotazů Q. Píšeme {Q} P Q abychom vyjádřili fakt, že všechny vypočtené instance dotazu Q jsou prvky množiny Q. Množinu všech vypočtených instancí Q označíme sp(q,p). Cílem první formulace částečné korektnosti je určit formule {Q} P Q, cílem druhé, je vypočíst množiny sp(q,p). Přitom {Q} P Q platí, právě když sp(q,p) Q. První pojem korektnosti pracuje s inkluzemi dvou množin dotazů, zatímco druhý pracuje s rovností dvou množin dotazů. Logické programování 14 4

Oba pojmy korektnosti se vztahují k úspěšným SLD-derivacím a ne k LD-derivacím. Nejde o významný rozdíl, protože Věta o nezávislosti na výběrovém pravidle říká, že vypočtená instance nezávisí na výběrovém pravidle. V dalším popíšeme metody, které dovolí dokázat obě formy korektnosti. Tedy pro program APPEND {Q} {app([1,2],[3,4],zs])} P APPEND. Q {app([1,2],[3,4],[1,2,3,4]} Logické programování 14 5 a sp(app(xs,ys,[1,2,3,4]),append) = {app([],[1,2,3,4],[1,2,3,4]),. app([1],[2,3,4],[1,2,3,4]),. app([1,2],[3,4],[1,2,3,4]),. app([1,2,3],[4],[1,2,3,4]),. app([1,2,3,4],[],[1,2,3,4]) } Vyjmenovány jsou všechny odpovědní instance pro program APPEND a dotaz app(xs,ys,[1,2,3,4]). Logické programování 14 6

Podmíněné dotazy a programy Nejprve se budeme zabývat metodou, která dovoluje dokázat částečnou korektnost prvního druhu, tedy formule {Q} P Q. Názvosloví: Atomické formuli říkáme p-atom, jestliže její predikátový symbol je p. Predikátový symbol v atomické formuli A jsme již dříve označovali jako rel( A ). Tedy A je rel( A )-atom. Následující definice jsou velmi obecné, ale pro začátek budou vyhovovat. Definice. (podmínky a specifikace predikátů). Mějme predikát p. podmínkou (assertion) pro p je množina p-atomů uzavřená na substituce, podmínka je podmínka pro nějaký predikátový symbol, říkáme, že podmínka A platí pro atom A jestliže A A. Logické programování 14 7 specifikace pro p je dvojice podmínek pre p a post p pro p. Říkáme, že pre p je před-podmínka (pre-assertion) a post p je po-podmínka (post-assertion) přiřazená k predikátu p, specifikace je nějaká množina specifikací pro různé predikátové symboly. Příklad. Uvažujme predikát member a jeho specifikaci pre member = {member(s,t) t je seznam} post member = {member(s,t) s je prvek seznamu t} Obě podmínky jsou uzavřeny na substituce a pre member platí pro member(s,t),právě když t je seznam, post member platí pro member(s,t),právě když s je prvek seznamu t. Naproti tomu množina {member(s,t) s je proměnná a t je seznam} není podmínka, protože není uzavřena na substituce. Logické programování 14 8

V dalším budeme předpokládat že každý predikátový symbol má přiřazenu pevně zvolenou specifikaci. Tento předpoklad dovoluje mluvit o před- a po-podmínkách predikátových symbolů, kolizi specifikací dvou výskytů stejného predikátu lze řešit přejmenováním. Volbou specifikace vyjadřujeme záměr, aby po-podmínky přiřazené k predikátovým symbolům platily pro každou vypočtenou instanci odpovídajících atomických dotazů. V případě programu APPEND mimo jiné chceme, aby po-podmínka pro predikát app platila pro atom app([1,2],[3,4],[1,2,3,4]). Obecněji, chceme, aby po-podmínka zahrnovala všechny vypočtené instance app-atomů tvaru app(s,t,u)kde s,t jsou seznamy. Logické programování 14 9 Protože každá specifikace nemusí vyhovovat uvedenému záměru, klademe na specifikace další omezezující podmínky. Tato omezení vyžadují, aby platily silnější podmínky, zejména aby před-podmínky platily pro všechny atomy vybrané pro LD-derivace a aby po-podmínky pla-tily pro vypočtené instance všech vybraných atomů. Takové omezující podmínky jsou zobecněním pojmů dobře modovaného dotazu a dobře modované klauzule. Definice. (Tranzitivnost) Jsou-li dány atomy A 1, A 2,..., A n, A n+1 a odpovídající podmínky A 1, A 2,..., A n, A n+1, kde n > 0, píšeme = A 1 A 1,..., A n A n A n+1 A n+1 abychom vyjádřili fakt, že pro každou substituci θ. A 1 θ A 1,..., A n θ A n implikuje A n+1 θ A n+1. Logické programování 14 10

Notace. Zkracujeme A pre rel(a) (A) na slovo pre(a) a podobně slovo post(a) je zkratkou za A post rel(a) (A). Tedy pro atom p(s) a před-podmínku pre p, píšeme pre(p(s)) jestliže p(s) pre p. Definice. (podmíněné dotazy a podmíněné klauzule) (i) Dotaz A 1, A 2,..., A n je podmíněný jestliže pro j, 1 < j < n (ii) Klauzule = post(a 1 ),..., post(a j-1 ) pre(a j ). je podmíněná jestliže pro j, 1 < j < n+1 kde H <- B 1, B 2,..., B n (1) = pre(h), post(b 1 ),..., post(b j-1 ) pre(b j ) pre(b n+1 ) = post(h). Logické programování 14 11 (iii) Program je podmíněný, je-li podmíněná každá jeho klauzule. Jinými slovy: dotaz je podmíněný, jestliže před-podmínka každého atomu je implikována konjunkcí po-podmínek předcházejících atomů. Klauzule (1) je podmíněná, jestliže (j, 1 < j < n) každá před-podmínka každého atomu B j je implikována konjunkcí před-podmínky hlavy H a po-podmínkami předchozích atomů v těle. (j = n +1) po-podmínka hlavy je implikována konjunkcí před-podmínkou hlavy H a po-podmínkami všech atomů v těle (1). Speciálně atomický dotaz A je promíněný, je-li = pre(a) a jednotková klauzule A <- je podmíněná, je-li = pre(a) post(a). Logické programování 14 12

Lemma. (o perzistenci podmíněnosti) SLD rezolventa podmíněného dotazu a podmíněného programu je také podmíněná. Důkaz postupuje stejně jako u perzistence dobré modovanosti. Opírá se o dvě pozorování. Pozorování 1. Instance podmíněného dotazu (klauzule) je podmíněná. Stačísi uvědomit, že podmínky jsou množiny atomů uzavřené na substituce. Pozorování 2. Je-li A, H, C podmíněný dotaz a (1) je podmíněná klauzule, potom A, B, C je také podmíněný dotaz. (B je tělo (1).) Důkaz Pozorování 2. Označme. A = A 1, A 2,..., A k,. B = A k+1,..., A k+l,. C = A k+l+1,..., A k+l+m. Logické programování 14 13 Pro každé i, 1 < i < k + l + m chceme dokázat = post(a 1 ),..., post(a j-1 ) pre(a j ). (2) Uvažujeme tři případy. (a) i, 1 < i < n potom A je podmíněný dotaz, protože A, H, C je podmíněný dotaz. (b) i, k+1 < i < k + l podle předpokladu je H <- B podmíněná klauzule, odkud = pre(h), post(a k+1 ),..., post(a j-1 ) pre(a j ). Navíc A, H, C je podmíněný dotaz, tedy = post(a 1 ),..., post(a k ) pre(h) složením obou implikací dostaneme (2). Logické programování 14 14

(c) k+l+1 < i < k+l +m. Protože A, H, C je podmíněný dotaz, platí = post(a 1 ),..., post(a k ), post(h), post(a k+l+1 ),..., post(a i-1 ) pre(a j ) a = post(a 1 ),..., post(a k ) pre(h). Navíc H <- B je podmíněná klauzule, odkud = pre(h), post(a k+1 ),..., post(a k+l ) post(h). Složením posledních dvou implikací dostáváme = post(a 1 ),..., post(a k ), post(a k+1 ),..., post(a k+l ) post(h). Nakonec kombinací s první implikací v (c) dostaneme = post(a 1 ),..., post(a k+l ), post(a k+l+1 ),..., post(a i-1 ) pre(a j ) Tím je lemma dokázáno. Logické programování 14 15 Důsledek. (perzistence podmíněnosti v SLD-derivacích) Jsou-li P a Q podmíněné, potom všechny rezolventy ve všech SLD-derivacích pro P {Q} jsou podmíněné. Důsledek. (před-podmínky) Jsou-li P a Q podmíněné a ξ je LD-derivace pro P {Q} potom = pre(a) platí pro každý atom A vybraný v ξ. Důkaz. Pro podmíněný dotaz A 1, A 2,..., A k, platí = pre(a 1 ). Zbytek vyplývá z předchozího důsledku o perzistenci použitého na LD-derivace. Důsledek. (po-podmínky) Nechť P a Q jsou podmíněné. Potom pro každou vypočtenou odpovědní instanci A 1, A 2,..., A n, dotazu Q platí = post(a j ) pro každé j, 1 < j < n. Logické programování 14 16

Logické programování 14 17