Formální metody - PVS

Podobne dokumenty
Formální metody - PVS

Formální metody - PVS

Komplexní analýza. Martin Bohata. Katedra matematiky FEL ČVUT v Praze Martin Bohata Komplexní analýza Mocninné řady 1 / 18

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

Kristýna Kuncová. Matematika B2 18/19

Funkce zadané implicitně. 4. března 2019

Aproximace funkcí 1,00 0,841 1,10 0,864 1,20 0,885. Body proložíme lomenou čarou.

Inverzní Z-transformace

Kristýna Kuncová. Matematika B2

Anna Kratochvílová Anna Kratochvílová (FJFI ČVUT) PDR ve zpracování obrazu / 17

Co nám prozradí derivace? 21. listopadu 2018

MATEMATIKA 3. Katedra matematiky a didaktiky matematiky Technická univerzita v Liberci

Numerické metody 8. května FJFI ČVUT v Praze

Úvodní informace. 18. února 2019

CA CZ, s.r.o. May 21, Radek Mařík Testování řídicích struktur May 21, / 45

(2) Funkce. Kristýna Kuncová. Matematika B2. Kristýna Kuncová (2) Funkce 1 / 25

TGH01 - Algoritmizace

(1) Derivace. Kristýna Kuncová. Matematika B2 17/18. Kristýna Kuncová (1) Derivace 1 / 35

Necht je funkce f spojitá v intervalu a, b a má derivaci v (a, b). Pak existuje bod ξ (a, b) tak, že f(b) f(a) b a. Geometricky

Petr Křemen FEL ČVUT. Petr Křemen (FEL ČVUT) Vysvětlování modelovacích chyb 133 / 156

Matematika 2, vzorová písemka 1

TGH01 - Algoritmizace

1 Soustava lineárních rovnic

ČVUT FEL, K Radek Mařík Strukturované testování 20. října / 52

Klasická metodologie testování

ggplot2 Efektní vizualizace dat v prostředí jazyka R Martin Golasowski 8. prosince 2016

Linea rnı (ne)za vislost

PA152,Implementace databázových systémů 2 / 25

Register and win!

Numerické metody minimalizace

5. a 12. prosince 2018

Geometrická nelinearita: úvod

Expresivní deskripční logiky

Internet a zdroje. (Zdroje na Internetu) Mgr. Petr Jakubec. Katedra fyzikální chemie Univerzita Palackého v Olomouci Tř. 17.

ČVUT FEL, K October 1, Radek Mařík Ověřování modelů II October 1, / 39

Komplexní analýza. Martin Bohata. Katedra matematiky FEL ČVUT v Praze Martin Bohata Komplexní analýza Úvod 1 / 32

Rovnice proudění Slapový model

Kapitola 4: Soustavy diferenciálních rovnic 1. řádu

Programowanie RAD Delphi

Powyższe reguły to tylko jedna z wersji gry. Istnieje wiele innych wariantów, można też ustalać własne zasady. Miłej zabawy!

Logický agent, výroková logika

Vybrané kapitoly z matematiky

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

Edita Pelantová, katedra matematiky / 16

Metodologie testování

Informatyka I. Wyk lad I. Wprowadzenie. Robert Muszyński Instytut Cybernetyki Technicznej Politechnika Wroc lawska

kontaktní modely (Winklerův, Pasternakův)

Obliczenia i wnioskowanie w systemie Coq

GEM a soustavy lineárních rovnic, část 2

Martin Pergel. 26. února Martin Pergel

MiniZinc. Technologie programistyczne,

Elementární funkce. Edita Pelantová. únor FJFI, ČVUT v Praze. katedra matematiky, FJFI, ČVUT v Praze

Podstawy programowania

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u

Modelowanie złożonych układów cyfrowych (1)

Wstęp do programowania. Różne różności

SQL, LIKE, IN, CASE, EXISTS. Marcin Orchel

Ćwiczenia 2 IBM DB2 Data Studio

Informatyka 1. Przetwarzanie tekstów

Programowanie w CLIPS

Katedra aplikované matematiky FEI VŠB Technická univerzita Ostrava


Formálne jazyky Automaty. Formálne jazyky. 1 Automaty. IB110 Podzim

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Nowe technologie baz danych

Matematická analýza II pro kombinované studium. Konzultace první a druhá. RNDr. Libuše Samková, Ph.D. pf.jcu.cz

Stavový popis Stabilita spojitých systémů (K611MSAP) Katedra aplikované matematiky Fakulta dopravní ČVUT. čtvrtek 20. dubna 2006

Shrnutí. Vladimír Brablec

Úvod do umělé inteligence, jazyk Prolog

TVL LED NÁVOD K POUŽITÍ NÁVOD NA POUŽITIE

BAZA DANYCH SIECI HOTELI

Průvodce studiem V této kapitole se budeme zabývat diferenciálním počtem pro funkce více

Úvod do Informatiky (FI:IB000)

Technologie Informacyjne

Informatyka 1. Wyrażenia i instrukcje, złożoność obliczeniowa

Vlastnosti. Příprava. Czech - 2 -

X11R5. .Xresources. Pliki konfiguracyjne X-Windows. Zasada działania X11. .xinitrc. X protocol X server. X client. X library

Komputerowe systemy na rynkach finansowych. wykład 5. MQL4 - funkcje operujące na obiektach wykresu

Programowanie mikrokontrolerów - laboratorium


NÁVOD K POUŽITÍ KEZELÉSI KÉZIKÖNYV INSTRUKCJA OBSŁUGI NÁVOD NA POUŽÍVANIE. Česky. Magyar. Polski. Slovensky

Definice Řekneme, že PDA M = (Q,Σ,Γ,δ,q 0,Z 0,F) je. 1. pro všechna q Q a Z Γ platí: kdykoliv δ(q,ε,z), pak δ(q,a,z) = pro všechna a Σ;

Matematika (KMI/PMATE)

akademia androida Składowanie danych część VI

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1

PODSTAWY BAZ DANYCH 13. PL/SQL

Petr Hasil. c Petr Hasil (MUNI) Nekonečné řady MA III (M3100) 1 / 187

ForPascal Interpreter języka Pascal

Wykład 11 Podtypy a dziedziczenie

Gramatické formalismy pro ZPJ

Zaawansowane aplikacje WWW - laboratorium

Logický agent, výroková logika

OpenPoland.net API Documentation

Cauchyova úloha pro obyčejnou diferenciální rovnici

Katedra aplikované matematiky FEI VŠB Technická univerzita Ostrava

Oferta przetargu. Poland Tender. Nazwa. Miejscowość. Warszawa Numer ogłoszenia. Data zamieszczenia Typ ogłoszenia

OPT Open Power Template. System szablonów OPT. Przykładowy skrypt oraz szablon OPT OPT API

Bazy Danych i Usługi Sieciowe

Obsah. Zobrazení na osmistěn. 1 Zobrazení sféry po částech - obecné vlastnosti 2 Zobrazení na pravidelný konvexní mnohostěn

Transkrypt:

Formální metody - PVS Radek Mařík ČVUT FEL, K13133 September 6, 2011 Radek Mařík (marikr@felk.cvut.cz) Formální metody - PVS September 6, 2011 1 / 27

Obsah 1 PVS system Úvod Syntaxe a sémantika 2 Principy dokazování Sequentový kalkul 3 Příklady Principy řešení Jednoduché praktické příklady Radek Mařík (marikr@felk.cvut.cz) Formální metody - PVS September 6, 2011 2 / 27

PVS system Úvod PVS [COR+ 95] Prototype Verification System SRI Computer Science Laboratory, Specifikační jazyk integrováný s podpůrnými nástroji a dokazovačem vět. Návrh jazyka podporuje efektivní mechanizované dokazovaní vět. Je dán důraz na záznam funkcionality, ne na efektivní implementaci. PVS je implementován v Common Lisp. PVS používá GNU Emacs jako uživatelské rozhraní. SunOS 4.1.3, ReadHat (Debian, SlackWare) Linux, AIX (IBM Risc 6000), Ultrix (DECSystem 5000). 50 megabytů diskového prostoru, minimálně 100 megabytů swap prostoru, minimálně 48 megabytů fyzické paměti. Radek Mařík (marikr@felk.cvut.cz) Formální metody - PVS September 6, 2011 4 / 27

PVS system PVS specifikační jazyk [COR+ 95] Úvod logika vyššího řádu s rozšířeným typovým systémem, predikátové podtypy a závislé typy, parametrizované teorie, mechanismus definování abstraktních datových typů jako seznamy a stromy, PVS specifikace obsahuje několik souborů, každý s jednou či více teoriemi. Teorie může importovat jiné teorie. Specifikační soubory v PVS se identifikují pomocí.pvs Důkazy jsou drženy v souborech s koncovkou.prf Specifikace a soubory s důkazy v daném adresáři tvoří PVS kontext: udržovaný stav specifikace mezi sessions. PVS používá funkcionálního specifikačního stylu: stav systému je předáván jako argument funkcí. Procedurální styl specifikací (např. v Z) má vestavěné rozpoznání stavu. Radek Mařík (marikr@felk.cvut.cz) Formální metody - PVS September 6, 2011 5 / 27

PVS system PVS verifikátor důkazů [COR+ 95] Úvod Dokazovač je interaktivní a vysoce mechanizován. Snaha dokázat vlastnosti specifikací je nejefektivnější cesta k porozumění jejich obsahu a k nalezení chyb: pokusy dokázat reálnou větu prokazující, že algoritmus splňuje daný účel. proces přezkušování specifikací (výzvy) jako část validačního procesu. [ animace specifikace: běh testů - má smysl pouze pokud specifikace mají konstrukční charakter, programy na vysoké úrovni ]. Výzva má tvar je-li tato specifikace správná, potom by mělo platit i následující. Testovací případ ve tvaru domnělé věty: obecné vyjádření o něčem, o čem si mysĺıme, že by mělo platit, za předpokladu platné specifikace. Specifikace je provedena dokázáním vět. Radek Mařík (marikr@felk.cvut.cz) Formální metody - PVS September 6, 2011 6 / 27

Praktické kroky [COR+ 95] PVS system Úvod Vytvoření specifikace. Syntaktická analýza vytvoří interní abstraktní reprezentaci teorie specifikace. Typová kontrola: ověření sémantických chyb, např. nedeklarovaná jména nebo nejasné typy, může vygenerovat podmínky typové správnosti TCCs (Type-Correctness Condition) představující dokazovací povinnosti, které musí být splněny k tomu, aby teorie mohla být považována na typově platnou. Dokazování: Základní úlohou důkazu je generovat strom důkazu, jehož listy jsou triviálně pravdivé. Založeno na sequentech; formule nad čárkovanou čarou jsou nazývány předchůdci a ty pod čarou následníky. Interpretace sequentu je, že konjukce předchůdců implikuje disjunkci následníků. Prázdný předcůdce je ekvivalentní true, a prázdný následník je ekvivalentní false. Radek Mařík (marikr@felk.cvut.cz) Formální metody - PVS September 6, 2011 7 / 27

PVS v praxi [COR+ 95] PVS system Úvod verifikace mikroprocesoru, Collins Commercial Avionics. AAMP5 procesor je založen na mikrokódu a technologii pipeline; obsahuje okolo 500,000 tranzistorů. specifikace protokolu, LSI Logic, fiber channel protocol, aritmetika pohyblivé čárky, NASA Langley Research Center, IEEE 854 Floating Point standard bezpečnost dynamického spojování v Java, Princeton University, protokoly koherentnosti vyrovnávací paměti a paměťové modely, Stanford University, zobecněný problém křížení na železnicích, University of Namur, Belgium odvození číslicových obvodů, Indiana University, analýza požadavků na kritický software vesmírných lodí, Jet Propulsion Laboratory, sonda Cassini vyslaná k Saturnu, 1997 Radek Mařík (marikr@felk.cvut.cz) Formální metody - PVS September 6, 2011 8 / 27

PVS system Syntaxe a sémantika PVS základní syntaktické struktury [COR+ 95] % znak uvozuje komentář, entity a operace, Radek Mařík (marikr@felk.cvut.cz) Formální metody - PVS September 6, 2011 10 / 27

PVS system Syntaxe a sémantika PVS typy [COR+ 95] rozlišitelné typy entit, neinterpretované typy nevíme nic o jejich členech elementy typu N liší od elementů typu P, N: TYPE % names P: TYPE % phone numbers podtypy nat to 10: TYPE = {x:nat x <= 10} enumerované typy color: TYPE = {red, green blue} typy n-tic tuptype: TYPE = [int, bool, [int -> int]] Radek Mařík (marikr@felk.cvut.cz) Formální metody - PVS September 6, 2011 11 / 27

PVS asociace [COR+ 95] PVS system Syntaxe a sémantika páry, n-tice (name, phone number) funkce: PVS je velmi efektivní v manipulaci s funkcemi B: TYPE = [N -> P] Radek Mařík (marikr@felk.cvut.cz) Formální metody - PVS September 6, 2011 12 / 27

PVS funkce [COR+ 95] PVS system Syntaxe a sémantika totální funkce axiomatické řešení n0: P emptybook: B emptyax: AXIOM FORALL (nm: n): emptybook(nm) = n0 definiční řešení - predikátový podtyp GP: TYPE =pn:p pn /= n0 Radek Mařík (marikr@felk.cvut.cz) Formální metody - PVS September 6, 2011 13 / 27

Gentzenův systém [Gal86] Principy dokazování Sequentový kalkul Efektivní způsob testování, zda výrok A je tautologie, spočívá ve snaze najít ohodnocení, při kterém A neplatí. strom, jehož uzly jsou označeny páry konečných seznamů výroků, ohodnocení, při kterém všechny výroky první komponenty páru jsou pravdivé, a všechny výroky druhé komponenty jsou nepravdivé, Sequent je pár (Γ, ) konečných (nebo prázdných) sekvencí Γ =< A 1,, A m >, =< B 1,, B n > výroků. Γ je nazýván předchůdce. je nazýván následník. Sequent se obvykle označuje Γ. Radek Mařík (marikr@felk.cvut.cz) Formální metody - PVS September 6, 2011 15 / 27

Principy dokazování Sequentový kalkul Gentzenův systém - ohodnocení [Gal86] Ohodnocení v, za kterého je pravdivý sequent A 1,, A m B 1,, B n, jestliže v = (A 1 A m ) (B 1 B n ). Ekvivaletně, pro v je sequent nepravdivý, jestliže pro v jsou všechny A 1, A m pravdivé a všechny B 1,, B n nepravdivé. Sequent je pravdivý, jestliže jakýkoliv předchůdce je shodný s nějakým následníkem, jestliže jakýkoliv předchůdce je nepravdivý nebo jestliže kterýkoliv následník je pravdivý [?]. Radek Mařík (marikr@felk.cvut.cz) Formální metody - PVS September 6, 2011 16 / 27

Principy dokazování Sequentový kalkul Inferenční pravidla sequentového kalkulu [Gal86] Γ,, Λ... libovolné sekvence výroků, A, B... výroky Γ, A, B, Λ Γ, A B, Λ [ : left ] Γ, A, Λ Γ, B, Λ Γ, A B, Λ Γ, A, Λ B, Γ, Λ Γ, A B, Λ [ : right ] [ : left ] A, Γ B,, Λ Γ, A B, Λ [ : right ] Radek Mařík (marikr@felk.cvut.cz) Formální metody - PVS September 6, 2011 17 / 27

Jednoduchý příklad v PVS Příklady Principy řešení simpleone: THEORY BEGIN P, Q, R: VAR bool logicth: THEOREM P and (Q and R) IMPLIES (P and Q) and R END simpleone Radek Mařík (marikr@felk.cvut.cz) Formální metody - PVS September 6, 2011 19 / 27

Příklady Příklad: součet přirozených čísel Principy řešení sum: THEORY BEGIN n: VAR nat sum(n): RECURSIVE nat = (IF n = 0 THEN 0 ELSE n + sum(n - 1) ENDIF) MEASURE id closed_form: THEOREM sum(n) = (n * (n + 1))/2 END sum Radek Mařík (marikr@felk.cvut.cz) Formální metody - PVS September 6, 2011 20 / 27

Příklad: součet funkcí Příklady Principy řešení sum2: THEORY BEGIN n : VAR nat f,g : VAR [nat -> nat] sum(f,n) : RECURSIVE nat = IF n = 0 THEN 0 ELSE f(n-1) + sum(f, n - 1) ENDIF MEASURE n sum_plus : LEMMA sum((lambda n : f(n) + g(n)), n) = sum(f,n) + sum(g,n) square(n) : nat = n * n sum_of_squares : LEMMA 6 * sum(square, n+1) = n * (n+1) * (2*n + 1) cube(n) : nat = n * n * n sum_of_cubes : LEMMA 4 * sum(cube, n+1) = n*n*(n+1)*(n+1) END sum2 Radek Mařík (marikr@felk.cvut.cz) Formální metody - PVS September 6, 2011 21 / 27

Příklady Jednoduché praktické příklady Příklad: telefonní seznam - axiomy [COR+ 95] phone_1: THEORY BEGIN N: TYPE % names P: TYPE % phone numbers B: TYPE = [N -> P] % phone books n0: P emptybook: B emptyax: AXIOM FORALL (nm: N): emptybook(nm) = n0 FindPhone: [B, N -> P] FindAx: AXIOM FORALL (bk: B), (nm: N): FindPhone(bk, nm) = bk(nm) AddPhone: [B, N, P -> B] AddAx: AXIOM FORALL (bk: B), (nm: N), (pn: P): AddPhone(bk, nm, pn) = bk WITH [(nm) := pn] FindAdd: CONJECTURE FORALL (bk, B), (nm: N), (pn: P): FindPhone(AddPhone(bk, nm, pn), nm) = pn END phone_1 Radek Mařík (marikr@felk.cvut.cz) Formální metody - PVS September 6, 2011 23 / 27

Příklady Jednoduché praktické příklady Příklad: definiční telefonní seznam [COR+ 95] phone_3: THEORY BEGIN N: TYPE % names P: TYPE % phone numbers B: TYPE = [N -> setof[p]] % phone books nm, x: VAR N pn: VAR P bk: VAR B emptybook(nm): setof[p] = emptyset[p] FindPhone(bk, nm): setof[p] = bk(nm) AddPhone(bk, nm, pn): B = bk WITH [(nm) := add(pn, bk(nm))] DelPhone(bk, nm): B = bk WITH [(nm) := emptyset[p]] DelPhoneNum(bk, nm, pn): B = bk WITH [(nm) := remove(pn, bk(nm))] FindAdd: CONJECTURE member(pn, FindPhone(AddPhone(bk,nm,pn),nm)) DelAdd: CONJECTURE DelPhoneNum(AddPhone(bk, nm, pn), nm, pn) = DelPhoneNum(bk, nm, pn) END phone_3 Radek Mařík (marikr@felk.cvut.cz) Formální metody - PVS September 6, 2011 24 / 27

Příklady Příklad: přístup k dokumentům Jednoduché praktické příklady cvs: THEORY BEGIN Person: TYPE+ Document: TYPE CheckedOut: TYPE = [Document -> Person] Permissions: TYPE = [Document -> setof[person]] nobody: Person RealPerson: TYPE = {p: Person p /= nobody} co: VAR CheckedOut p: VAR RealPerson d: VAR Document db: VAR Permissions Locked?(co, d): bool = co(d) /= nobody Permitted?(db,d,p): bool = member(p,db(d)) CheckOut(db, co, p, d): CheckedOut = IF Locked?(co,d) OR NOT Permitted?(db, d, p) THEN co ELSE co WITH [(d) := p] ENDIF FindPerson(co, d): Person = co(d) FindAddPT: CONJECTURE NOT Locked?(co, d) AND Permitted?(db, d, p) => FindPerson(CheckOut(db,co,p,d),d)=p END cvs Radek Mařík (marikr@felk.cvut.cz) Formální metody - PVS September 6, 2011 25 / 27

Literatura I Příklady Jednoduché praktické příklady Judy Crow, Sam Owre, John Rushby, Natarajan Shankar, and Mandayam Srivas. A tutorial introduction to PVS. In Workshop on Industrial-Strength Formal Specification Techniques (Boca Raton, Florida), April 1995. Jean H. Gallier. Logic for Computer Science, Foundations of Automatic Theorem Proving. Harper & Row, Publishers, New York, 1986. Radek Mařík (marikr@felk.cvut.cz) Formální metody - PVS September 6, 2011 26 / 27

Příklady PVS System demonstration Jednoduché praktické příklady 1 run pvs 2 context yes 3 Esc x ff 4 Enter cvs 5 Select the simpleone theory 1 Esc x tc 2 Select the logicth 3 Esc x pr 4 try again:yes 5 rerun: no 6 (skolem!) 7 (flatten) 8 (split 1) 9 repeat with Esc x xpr to show the prove tree 6 (grind :theories ( cvs )) Radek Mařík (marikr@felk.cvut.cz) Formální metody - PVS September 6, 2011 27 / 27