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

(13) Fourierovy řady

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 B3

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

Kristýna Kuncová. Matematika B2

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

TGH01 - Algoritmizace

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

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

Úvodní informace. 18. února 2019

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

Tvarová optimalizace pro 3D kontaktní problém

(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

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

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

Klasická metodologie testování

5. a 12. prosince 2018

1 Soustava lineárních rovnic

Matematika 2, vzorová písemka 1

Linea rnı (ne)za vislost

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

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

Register and win!

Numerické metody minimalizace

Kristýna Kuncová. Matematika B2 18/19. Kristýna Kuncová (1) Vzorové otázky 1 / 36

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

Geometrická nelinearita: úvod

Expresivní deskripční logiky

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

Paralelní implementace a optimalizace metody BDDC

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

Rovnice proudění Slapový model

Katedra kybernetiky skupina Inteligentní Datové Analýzy (IDA) Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Edita Pelantová, katedra matematiky / 16

Programowanie RAD Delphi

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

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

Obliczenia i wnioskowanie w systemie Coq

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

Metodologie testování

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

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

MiniZinc. Technologie programistyczne,

Martin Pergel. 26. února Martin Pergel

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)

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

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

Ćwiczenia 2 IBM DB2 Data Studio

IEL Přechodové jevy, vedení

Úvod do umělé inteligence, jazyk Prolog

Informatyka 1. Przetwarzanie tekstów

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

Programowanie w CLIPS

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

Úvod do Informatiky (FI:IB000)

Vlastnosti. Příprava. Czech - 2 -

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


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

Matematické Základy Informatiky (FI: IB000)

Nowe technologie baz danych

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

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

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

podle přednášky doc. Eduarda Fuchse 16. prosince 2010

BAZA DANYCH SIECI HOTELI

Technologie Informacyjne

Shrnutí. Vladimír Brablec

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

Programowanie obiektowe

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

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

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

Zadání: Vypočítejte hlavní momenty setrvačnosti a vykreslete elipsu setrvačnosti na zadaných


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)

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

Whirlpool Serie 300. Pharo Whirlpool. Pharo Whirlpool Moneva 300 R

PODSTAWY BAZ DANYCH 13. PL/SQL

Transkrypt:

Formální metody - PVS Radek Mařík ČVUT FEL Katedra telekomunikační techniky, K13132 6. prosince 2017 Radek Mařík (radek.marik@fel.cvut.cz) Formální metody - PVS 6. prosince 2017 1 / 28

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 (radek.marik@fel.cvut.cz) Formální metody - PVS 6. prosince 2017 2 / 28

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 (radek.marik@fel.cvut.cz) Formální metody - PVS 6. prosince 2017 4 / 28

PVS system Ú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 (radek.marik@fel.cvut.cz) Formální metody - PVS 6. prosince 2017 5 / 28

PVS system Ú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 (radek.marik@fel.cvut.cz) Formální metody - PVS 6. prosince 2017 6 / 28

PVS system Ú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 (radek.marik@fel.cvut.cz) Formální metody - PVS 6. prosince 2017 7 / 28

PVS system Ú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ět 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 (radek.marik@fel.cvut.cz) Formální metody - PVS 6. prosince 2017 8 / 28

PVS system Syntaxe a sémantika PVS základní syntaktické struktury [COR+ 95] % znak uvozuje komentář, entity a operace, Radek Mařík (radek.marik@fel.cvut.cz) Formální metody - PVS 6. prosince 2017 10 / 28

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 (radek.marik@fel.cvut.cz) Formální metody - PVS 6. prosince 2017 11 / 28

PVS system 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 (radek.marik@fel.cvut.cz) Formální metody - PVS 6. prosince 2017 12 / 28

PVS system 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 (radek.marik@fel.cvut.cz) Formální metody - PVS 6. prosince 2017 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 (radek.marik@fel.cvut.cz) Formální metody - PVS 6. prosince 2017 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 (radek.marik@fel.cvut.cz) Formální metody - PVS 6. prosince 2017 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 (radek.marik@fel.cvut.cz) Formální metody - PVS 6. prosince 2017 17 / 28

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 (radek.marik@fel.cvut.cz) Formální metody - PVS 6. prosince 2017 19 / 28

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 (radek.marik@fel.cvut.cz) Formální metody - PVS 6. prosince 2017 20 / 28

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 (radek.marik@fel.cvut.cz) Formální metody - PVS 6. prosince 2017 21 / 28

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 (radek.marik@fel.cvut.cz) Formální metody - PVS 6. prosince 2017 23 / 28

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 (radek.marik@fel.cvut.cz) Formální metody - PVS 6. prosince 2017 24 / 28

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 (radek.marik@fel.cvut.cz) Formální metody - PVS 6. prosince 2017 25 / 28

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 (radek.marik@fel.cvut.cz) Formální metody - PVS 6. prosince 2017 26 / 28

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 (radek.marik@fel.cvut.cz) Formální metody - PVS 6. prosince 2017 27 / 28

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 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 (radek.marik@fel.cvut.cz) Formální metody - PVS 6. prosince 2017 28 / 28