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.

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

Inverzní Z-transformace

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

Kristýna Kuncová. Matematika B2

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

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

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

Matematika 2, vzorová písemka 1

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

Úvodní informace. 18. února 2019

TGH01 - Algoritmizace

1 Soustava lineárních rovnic

Klasická metodologie testování

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

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

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

Register and win!

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

TGH01 - Algoritmizace

Numerické metody minimalizace

Geometrická nelinearita: úvod

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

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

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

Rovnice proudění Slapový model

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

Programowanie RAD Delphi

Expresivní deskripční logiky

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

5. a 12. prosince 2018

Linea rnı (ne)za vislost

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)

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

Obliczenia i wnioskowanie w systemie Coq

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

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

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

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

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

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

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

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

Ćwiczenia 2 IBM DB2 Data Studio

Informatyka 1. Przetwarzanie tekstów

Programowanie w CLIPS


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

Nowe technologie baz danych

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

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

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

BAZA DANYCH SIECI HOTELI

Shrnutí. Vladimír Brablec

Technologie Informacyjne

Programowanie obiektowe

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

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

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

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

Vlastnosti. Příprava. Czech - 2 -

Programowanie mikrokontrolerów - laboratorium

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

akademia androida Składowanie danych część VI


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

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

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)

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

PODSTAWY BAZ DANYCH 13. PL/SQL

Zaawansowane aplikacje WWW - laboratorium

ForPascal Interpreter języka Pascal

Wykład 11 Podtypy a dziedziczenie

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

Gramatické formalismy pro ZPJ

Úvod do Informatiky (FI:IB000)

Bazy Danych i Usługi Sieciowe

OpenPoland.net API Documentation

Logický agent, výroková logika

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

Úvod do umělé inteligence, jazyk Prolog

Kombinatorika a grafy I

Matematika III Stechiometrie stručný

Matematyka dyskretna - wykład - część Podstawowe algorytmy kombinatoryczne

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

Python. Wprowadzenie. Jolanta Bachan

Transkrypt:

Formální metody - PVS Radek Mařík ČVUT FEL, K13132 October 2, 2014 Radek Mařík (marikr@felk.cvut.cz) Formální metody - PVS October 2, 2014 1 / 28 Obsah 1 Úvod Syntaxe a sémantika 2 Principy dokazování Sequentový kalkul 3 Principy řešení Radek Mařík (marikr@felk.cvut.cz) Formální metody - PVS October 2, 2014 2 / 28

Ú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 October 2, 2014 4 / 28 Úvod PVS specifikační jazyk [COR+ 95] 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 October 2, 2014 5 / 28

Úvod PVS verifikátor důkazů [COR+ 95] 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 October 2, 2014 6 / 28 Úvod Praktické kroky [COR+ 95] 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 October 2, 2014 7 / 28

Úvod PVS v praxi [COR+ 95] 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 October 2, 2014 8 / 28 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 October 2, 2014 10 / 28

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 October 2, 2014 11 / 28 Syntaxe a sémantika PVS asociace [COR+ 95] 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 October 2, 2014 12 / 28

Syntaxe a sémantika PVS funkce [COR+ 95] 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 October 2, 2014 13 / 28 Principy dokazování Sequentový kalkul Gentzenův systém [Gal86] 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 October 2, 2014 15 / 28

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 October 2, 2014 16 / 28 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 October 2, 2014 17 / 28

Jednoduchý příklad v PVS 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 October 2, 2014 19 / 28 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 October 2, 2014 20 / 28

Příklad: součet funkcí 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 October 2, 2014 21 / 28 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 October 2, 2014 23 / 28

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 October 2, 2014 24 / 28 Příklad: přístup k dokumentům 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 October 2, 2014 25 / 28

Literatura I 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 October 2, 2014 26 / 28 PVS System demonstration 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 October 2, 2014 27 / 28

PVS System demonstration 1 run pvs 2 context yes 3 Esc x ff 4 Enter cvs 5 Select the cvs theory 1 Select the FindAddPT 2 Esc x pr 3 try again:yes 4 rerun: no 5 (skolem!) 6 (flatten) 7 (rewrite FindPerson )...(rewrite CheckOut )...(lift-if) 8 (split)...(flatten)...(split)...(flatten)...(simplify) 6 (grind :theories ( cvs )) Radek Mařík (marikr@felk.cvut.cz) Formální metody - PVS October 2, 2014 28 / 28