Matematická indukce a správnost programů. Základy diskrétní matematiky, BI-ZDM ZS 2011/12, Lekce 13

Podobné dokumenty
PODOBÁ SE JAZYKU C S NĚKTERÝMI OMEZENÍMI GLOBÁLNÍ PROMĚNNÉ. NSWI162: Sémantika programů 2

ŘÍKÁME, ŽE FUNKCE JE ČÁSTEČNĚ SPRÁVNÁ (PARTIALLY CORRECT), POKUD KDYŽ JE SPLNĚNA PRECONDITION

Ekvivalence. Základy diskrétní matematiky, BI-ZDM ZS 2011/12, Lekce 5

Řešení rekurentních rovnic 2. Základy diskrétní matematiky, BI-ZDM ZS 2011/12, Lekce 11

Stefan Ratschan. Fakulta informačních technologíı. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

Základní datové struktury III: Stromy, haldy

Cvičení z logiky II.

Rekurzivní algoritmy

Unbounded Model Checking

prof. RNDr. Čestmír Burdík DrCs. prof. Ing. Edita Pelantová CSc. BI-ZMA ZS 2009/2010

Formální Metody a Specifikace (LS 2011) Formální metody pro kyber-fyzikální systémy

Zimní semestr akademického roku 2014/ prosince 2014

NP-ÚPLNÉ PROBLÉMY. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

PROHLEDÁVÁNÍ GRAFŮ. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

10. Techniky formální verifikace a validace

Matematická indukce. Základy diskrétní matematiky, BI-ZDM ZS 2011/12, Lekce 3

ÚVODNÍ ZNALOSTI. datové struktury. správnost programů. analýza algoritmů

Seminář z IVT Algoritmizace. Slovanské gymnázium Olomouc Tomáš Kühr

Algoritmy. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 15. dubna / 39

Řešení rekurentních rovnic 3. Základy diskrétní matematiky, BI-ZDM ZS 2011/12, Lekce 12

Úvod do teoretické informatiky

Pumping lemma - podstata problému. Automaty a gramatiky(bi-aag) Pumping lemma - problem resolution. Pumping lemma - podstata problému

Základy řazení. Karel Richta a kol.

Základy algoritmizace a programování

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

IV113 Validace a verifikace. Formální verifikace algoritmů. Jiří Barnat

Testování a verifikace softwaru

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

NEJKRATŠÍ CESTY I. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

Temporální Logiky. Stefan Ratschan. Fakulta informačních technologíı. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti 1 / 19

A4B33ALG 2010/05 ALG 07. Selection sort (Select sort) Insertion sort (Insert sort) Bubble sort deprecated. Quicksort.

Stromy, haldy, prioritní fronty

Fuzzy logika a reálný svět, aneb jsou všechny hromady skutečně malé?

Cvičení Aktivita 1. část 2. část 3. část Ústní Celkem Známka

Principy indukce a rekursivní algoritmy

Základy matematické analýzy

Zimní semestr akademického roku 2014/ prosince 2014

Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Zpracoval: 7. Matematická indukce a rekurse. Řešení rekurentních (diferenčních) rovnic s konstantními koeficienty.

Jednoznačné a nejednoznačné gramatiky

Matematika pro informatiky KMA/MATA

Logika II. RNDr. Kateřina Trlifajová PhD. Katedra teoretické informatiky Fakulta informačních technologíı BI-MLO, ZS 2011/12

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

Základy algoritmizace a programování

V každém kroku se a + b zmenší o min(a, b), tedy vždy alespoň o 1. Jestliže jsme na začátku dostali 2

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

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

Logika XI. RNDr. Kateřina Trlifajová PhD. Katedra teoretické informatiky Fakulta informačních technologíı BI-MLO, ZS 2011/12

Jazyk C++, některá rozšíření oproti C

1. Úvodní informace. BI-EP1 Efektivní programování Martin Kačer

Datové struktury 2: Rozptylovací tabulky

Aplikovaná numerická matematika

Zobrazení. prof. RNDr. Čestmír Burdík DrCs. prof. Ing. Edita Pelantová CSc. Katedra matematiky BI-ZMA ZS 2009/2010

Množiny, relace, zobrazení

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru:

Obecná informatika. Matematicko-fyzikální fakulta Univerzity Karlovy v Praze. Podzim 2012

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Kombinatorika- 3. Základy diskrétní matematiky, BI-ZDM

TOKY V SÍTÍCH II. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

Zimní semestr akademického roku 2015/ ledna 2016

Poslední nenulová číslice faktoriálu

Matematická logika. Miroslav Kolařík

Algoritmizace a programování

prof. RNDr. Čestmír Burdík DrCs. prof. Ing. Edita Pelantová CSc. BI-ZMA ZS 2009/2010

VLASTNOSTI GRAFŮ. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze. BI-GRA, LS 2010/2011, Lekce 5

Rekurze. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.

3 Množiny, Relace a Funkce

Úvod do programování - Java. Cvičení č.4

IB111 Úvod do programování skrze Python

Dynamické programování

Další příklady. Katedra softwarového inženýrství. Katedra teoretické informatiky, Fakulta informačních technologii, ČVUT v Praze. Karel Müller, 2011

Úvod do programovacích jazyků (Java)

Matematická logika. Miroslav Kolařík

ORIENTOVANÉ GRAFY, REPREZENTACE GRAFŮ

Historie matematiky a informatiky

Teoretická informatika Tomáš Foltýnek Teorie čísel Nekonečno

Úvod do informatiky. Miroslav Kolařík

Matematická analýza 1

Mělká a hluboká kopie

Požadavky na zápočet a zkoušku

DSA, První krok: máme dokázat, že pro left = right vrátí volání f(array, elem, left, right)

Logika, výroky, množiny

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE REALIZACE PŘEKLADAČE I

Zimní semestr akademického roku 2014/ prosince 2014

Úvod do programování 7. hodina

Matematika 1 MA1. 2 Determinant. 3 Adjungovaná matice. 4 Cramerovo pravidlo. 11. přednáška ( ) Matematika 1 1 / 29

Abstraktní datové typy

Součin matice A a čísla α definujeme jako matici αa = (d ij ) typu m n, kde d ij = αa ij pro libovolné indexy i, j.

Učitelství 1. stupně ZŠ tématické plány předmětů matematika

Historie matematiky a informatiky Cvičení 2

Matematická logika. Rostislav Horčík. horcik

Učitelství 2. stupně ZŠ tématické plány předmětů matematika

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

Výpočet globálního stavu

Úvod do teoretické informatiky(2017/2018) cvičení 11 1

Soulad studijního programu. Aplikovaná informatika

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

Transkript:

Matematická indukce a správnost programů doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky FIT České vysoké učení technické v Praze c Josef Kolar, 2011 Základy diskrétní matematiky, BI-ZDM ZS 2011/12, Lekce 13 Evropský sociální fond. Praha& EU: Investujeme do vaší budoucnosti doc. Josef Kolář (FIT ČVUT) Matematická indukce a správnost programů ZDM, ZS 2011/12, Lekce 13 1/ 16

Neformální hierarchie správnosti Co je to správný program? 1 Program neobsahuje syntaktické chyby(přeloží se). 2 Program neobsahuje syntaktické chyby ani neplatné operace zjistitelné při výpočtu(přeloží a spustí se). 3 Program spočítá pro nějaká testovací vstupní data správné výsledky. 4 Program spočítá pro typické sady testovacích vstupních dat správné výsledky. 5 Program spočítá pro všechny sady testovacích vstupních dat správné výsledky. 6 Program spočítá správné výsledky pro všechna validní vstupní data, která odpovídají specifikaci. 7 Pro všechna validní vstupní data a pro všechna očekávatelná chybná vstupní data program dodá správnou(nebo přijatelnou) odpověď. doc. Josef Kolář (FIT ČVUT) Matematická indukce a správnost programů ZDM, ZS 2011/12, Lekce 13 2/ 16

Správnost programu Proč chceme mít správné programy? Intuitivně chápeme, že správný program dělá přesně to(a jenom to), co seodnějočekává-nicvíc,nicmíň! Formálně správný(korektní) je takový program, jehož správnost byla matematicky dokázána(verifikována). To vyžaduje jazyk na specifikaci toho, co má program dělat. Specifikační jazyky vycházejí z matematické logiky. Axiomatickásémantika-C.A.R.Hoare1969-prostředekpro specifikaci sémantiky a verifikaci programu. Sir Charles Antony Richard Hoare (* 11. ledna 1934 Colombo), britský informatik, autor řadicího algoritmu Quicksort. Vedl výzkumnou skupinu v Oxford University Computing Laboratory, nyní profesor emeritus Microsoft Research, Cambridge. doc. Josef Kolář (FIT ČVUT) Matematická indukce a správnost programů ZDM, ZS 2011/12, Lekce 13 3/ 16

Formální správnost programu Verifikace programudonedávna spíše akademická záležitost nyní podstatná součást critical software systems high-reliability, safety-critical, mission-critical, life-critical,... Dokazuje se tzv. totální korektnost: program dělá to, co má(parciální korektnost) program zaručeně skončí V čem spočívá parciální korektnost? Program implementuje svoji specifikaci. Verifikace se nedělá(jen) ručně - využívají se dokazovací systémy modelovací jazyky(např. UML) specifikační jazyky podpora v programovacích jazycích doc. Josef Kolář (FIT ČVUT) Matematická indukce a správnost programů ZDM, ZS 2011/12, Lekce 13 4/ 16

Axiomatická sémantika Axiomatická sémantika je prosředek, který slouží ke specifikaci požadavku na program(co má program dělat). Základní myšlenka je použití tzv. tvrzení(assertions) tvrzení je formule predikátové logiky, která popisuje stav programu v určitém okamžiku jeho výpočtu postcondition- tvrzení(podmínka) platné pro výsledek precondition- tvrzení(podmínka) platné před započetím výpočtu tvrzení se používají i na jednotlivé konstrukce, které tvoří program Hoare-ovatrojicemátvar {P} S {Q}: precondition- statement(nebo program)- postcondition. doc. Josef Kolář (FIT ČVUT) Matematická indukce a správnost programů ZDM, ZS 2011/12, Lekce 13 5/ 16

Příklad {true} int Max (int a, int b) { int m; if (a >= b) m = a; else m = b; fi return m; precondition P nemáme žádné specifické omezení na vstupy tělo programu S } {m = max(a,b)} postcondition Q max je matematický pojem doc. Josef Kolář (FIT ČVUT) Matematická indukce a správnost programů ZDM, ZS 2011/12, Lekce 13 6/ 16

Verifikační systém Verifikační systém zahrnuje dvě složky Axiomy:popisujíefektspecifickýchjazykovýchkonstrukcí(příkazů) Odvozovacípravidla:určujípřípustnoustrukturudůkazů(inferencí) Příklad pravidla pro sekvenci {P}S 1 {Q}, {Q}S 2 {R} {P}S 1 ;S 2 {R} Příklad- uvažujeme dva příkazy v sekvenci {sude(x+1)} x=x+1; {sude(x)} {sude(x)} a=x; {sude(a)} Jaký je celkový efekt těchto dvou příkazů {sude(x+1)} x=x+1;a=x; {sude(a)} doc. Josef Kolář (FIT ČVUT) Matematická indukce a správnost programů ZDM, ZS 2011/12, Lekce 13 7/ 16

Invarianta cyklu Pravidlo pro cyklus {test R} s {R}, test R Q {R}while(test)do sod {Q} Tvrzení Rsenazýváinvariantacyklu-musíbýtplatnépředipokaždém jeho provedení. Např. pro cyklus {R}while(i < n)do i=i+1;f= f i;od {f= n!} je možné zvolit invariantu R ve tvaru R (1 i) (i n) (f= i!) Ažkoncovýtest(i < n)nabydehodnoty false,jedináhodnota i,pro kteroujeinvariantacyklu Rsplněna,je i=n,cožodůvodňujezávěr {f = n!} v postcondition. doc. Josef Kolář (FIT ČVUT) Matematická indukce a správnost programů ZDM, ZS 2011/12, Lekce 13 8/ 16

Příklad programu- iterativní SelectionSort void SelectionSort(int A[], int n) { int i, j, small, temp; (1) for (i = 0; i < n-1; i++) { /* nastav small na index prvniho vyskytu */ /* nejmensiho ze zbyvajicich prvku */ (2) small = i; (3) for (j = i+1; j < n; j++) (4) if (A[j] < A[small]) (5) small = j; /* zde je small roven indexu prvniho */ /* vyskytu nejmensiho prvku a A[i..n-1], */ /* tak vzajemne zamenime A[small] a A[i] */ (6) temp = A[small]; (7) A[small] = a[i]; (8) A[i] = temp; } } doc. Josef Kolář (FIT ČVUT) Matematická indukce a správnost programů ZDM, ZS 2011/12, Lekce 13 9/ 16

Vytvoření invariantu vnitřního cyklu Zkusíme formulovat invariantu vnitřního cyklu v SelectionSort(smyslem cyklujenaléztindexnejmenšíhoprvkuvčástipole A[i.. n 1]): (2) small = i; (3) for (j = i+1; /* */ j < n; j++) (4) if (A[j] < A[small]) (5) small = j; Invarianta musí platit v místě vyznačeném komentářem, označme ji S(k): připrvnímprůchodumáproměnná jhodnotu i+1asmallmáhodnotu i přidruhémprůchodumá jhodnotu i+2,protožesejednouinkrementovala smallmádíkytělucyklu(4)a(5)hodnotubuď inebo i+1podletoho, kteréza[i]aa[i+1]jemenší podobněvetřetímprůchoduje jrovno i+3asmalljeindexnejmenšíhoz A[i.. i+2] doc. Josef Kolář (FIT ČVUT) Matematická indukce a správnost programů ZDM, ZS 2011/12, Lekce 13 10/ 16

Důkaz invarianty vnitřního cyklu Tvrzení S(k) Pokudvokamžiku,kdysevýpočetdostanektestu(j < n)uvnitř for-cyklunařádku(3),mářídícíproměnnácyklu jhodnotu k,pak hodnotouproměnné smalljejeindexnejmenšíhoprvkuza[i.. k 1]. Toto tvrzení budeme dokazovat indukcí. 1 Základníkrok:začínámeshodnotami k= i+1asmall=ia tvrzení S(i+1)říká,že smallmámítzahodnotuindexnejmenšího prvkuza[i.. i],cožzjevněplatí. 2 Indukčníkrok:Předpokládámeplatnost S(k)pro k i+1a dokazujemeplatnost S(k+1).Musíbýt(k < n) (jinakbyužcykl dříve skončil), takže výpočet se k testu konce cyklu dostane s hodnotou jrovnou k+1. Cosestanovtělecyklupoté,co jmělohodnotu k? doc. Josef Kolář (FIT ČVUT) Matematická indukce a správnost programů ZDM, ZS 2011/12, Lekce 13 11/ 16

Důkaz invarianty vnitřního cyklu- dokončení (2) small = i; (3) for (j = i+1; /* */ j < n; j++) (4) if (A[j] < A[small]) (5) small = j; Záležínatom,jakdopadltestvpříkazuifnařádku(4): není-li A[k] menšínežlinejmenšíza[i.. k 1],paksehodnota small neměníabudetímpádemtakéindexemnejmenšíhodnotyza[i.. k] tedy S(k+1)platí je-li A[k] menšínežlinejmenšíza[i.. k 1],paksehodnota smallnastaví na k,takžebudezaseindexemnejmenšíhodnotyza[i.. k] tedy S(k+1) opět platí. S(k)jetedydokázánoprohodnoty k i+1. Cyklsealeukončí,když jmáhodnotu n,cožznamenáplatnost S(n),tedyže smalljeindexnejmenšíhoza[i.. n 1] tosehodíproverifikacicelého programu. doc. Josef Kolář (FIT ČVUT) Matematická indukce a správnost programů ZDM, ZS 2011/12, Lekce 13 12/ 16

Invarianta vnějšího cyklu Invarianta T(m)prohodnotuproměnné irovnou mvefor-cyklu(1): (1) for (i = 0; i < n-1; i++) { (2) small = i; (3) for (j = i+1; j < n; j++) (4) if (A[j] < A[small]) (5) small = j; (6) temp = A[small]; (7) A[small] = a[i]; (8) A[i] = temp; } Tvrzení T(m) Pokudvokamžiku,kdysevýpočetdostanektestu i < n 1uvnitřfor-cykluna řádku(1),mářídícíproměnnácyklu ihodnotu m,pak 1 A[0.. m 1]jsouseřazené,tj. A[0] A[1]... A[m 1] 2 všechnyprvkyza[m.. n 1]jsouaspoňtakvelkéjakojakýkolivprvekz A[0.. m 1] doc. Josef Kolář (FIT ČVUT) Matematická indukce a správnost programů ZDM, ZS 2011/12, Lekce 13 13/ 16

Požadavky a příprava ke zkoušce Orientační reference pro přípravu(vedle EDUX handouts přednášek a cvičení): 1 Big-O-Habala4b 2 Množiny a zobrazení- Habala 2a,b,c(pozor- opačná notace skládání) 3 Indukce-Habala3a,b 4 Relace-Habala5a,b 5 Ekvivalence a uspořádání- Habala 6a,b 6 Kombinatorika- Habala 10a,b,c,d 7 Rekurence- Habala 9a,b,c Způsob čtení Habalova textu: Tvrzení/fakta/věty vnímat, důkazy číst jen pro vlastní potěchu, příklady řešit. doc. Josef Kolář (FIT ČVUT) Matematická indukce a správnost programů ZDM, ZS 2011/12, Lekce 13 14/ 16