KOMPUTER-ALGEBRA RENDSZEREK VERIFIKÁCIÓJA

Hasonló dokumentumok
Komputeralgebra rendszerek

Komputeralgebra Rendszerek

A szemantikus elemzés helye. A szemantikus elemzés feladatai. A szemantikus elemzés feladatai. Deklarációk és láthatósági szabályok

Komputeralgebra Rendszerek

Szoftverminőségbiztosítás

Programozási nyelvek a közoktatásban alapfogalmak II. előadás

Programozási nyelvek (ADA)

Programozási nyelvek (ADA)

Modell alapú tesztelés mobil környezetben

Verifikáció és validáció Általános bevezető

Modellellenőrzés a vasút automatikai rendszerek fejlesztésében. XIX. Közlekedésfejlesztési és beruházási konferencia Bükfürdő

Programok értelmezése

Részletes szoftver tervek ellenőrzése

Kaposi Ambrus. University of Nottingham Functional Programming Lab. Hackerspace Budapest január 6.

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

FUNKCIONÁLIS PROGRAMOZÁS

Programozási nyelvek Java

Komputeralgebra rendszerek

2005. évi OTKA zárójelentés: OTKA T Vezető kutató: Dr. Horváth Zoltán

Modellezési alapismeretek

GPU Lab. 4. fejezet. Fordítók felépítése. Grafikus Processzorok Tudományos Célú Programozása. Berényi Dániel Nagy-Egri Máté Ferenc

Imperatív programozás

Modellezési alapismeretek

Programozás alapjai (ANSI C)

A fejlesztési szabványok szerepe a szoftverellenőrzésben

Formális szemantika. Kifejezések szemantikája. Horpácsi Dániel ELTE Informatikai Kar

Mi a típuselmélet? BIT-CON szakmai nap május 3. Diszciplináris Informatika és Számítástudomány műhely. Mi a típuselmélet?

Programfejlesztési Modellek

Nagy bonyolultságú rendszerek fejlesztőeszközei

Kiterjesztések sek szemantikája

Szoftver-modellellenőrzés absztrakciós módszerekkel

Komputeralgebra Rendszerek

Programozás módszertan p.1/46

S0-02 Típusmodellek (Programozás elmélet)

GPU Lab. 5. fejezet. A C++ fordítási modellje. Grafikus Processzorok Tudományos Célú Programozása. Berényi Dániel Nagy-Egri Máté Ferenc

Intervenciós röntgen berendezés teljesítményszabályozójának automatizált tesztelése

Formális módszerek GM_IN003_1 Bevezetés

Komputeralgebra rendszerek

A szoftver-folyamat. Szoftver életciklus modellek. Szoftver-technológia I. Irodalom

Tartalom A verifikáció és validáció tervezése Szoftver vizsgálatok Automatizált statikus analízis Cleanroom szoftverfejlesztés

A Feldspar fordító, illetve Feldspar programok tesztelése

és az instanceof operátor

Digitális Technika. Dr. Oniga István Debreceni Egyetem, Informatikai Kar

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

SZOFTVERFEJLESZTÉS. Földtudományi mérnöki mesterszak / Geoinformatikus-mérnöki szakirány. 2017/18 II. félév. A kurzus ebben a félévben nem indult

Adatbázis Rendszerek II. 5. PLSQL Csomagok 16/1B IT MAN

Bevezetés. Dr. Iványi Péter

Számítógép és számítástechnika használata matematikai modellezéshez

Kifejezések. Kozsik Tamás. December 11, 2016

Memóriagazdálkodás. Kódgenerálás. Kódoptimalizálás

Programtervező informatikus MSc nappali tagozat ajánlott tanterv 2018

Programtervező informatikus MSc nappali tagozat ajánlott tanterv 2018

4. Programozási nyelvek osztályozása. Amatőr és professzionális

1. Bevezetés szeptember 9. BME Fizika Intézet. Szám. szim. labor ea. Tőke Csaba. Tudnivalók. feladat. Tematika. Moodle Házi feladatok

Funkcionális és logikai programozás. { Márton Gyöngyvér, 2012} { Sapientia, Erdélyi Magyar Tudományegyetem }

... S n. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak.

Programozás alapjai. 2. előadás

Szkriptnyelvek. 1. UNIX shell

Programozási nyelvek Java

Korlátos modellellenőrzés. dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Szoftver karbantartási lépések ellenőrzése

IK Algoritmusok és Alkalmazásaik Tsz, TTK Operációkutatás Tsz. A LEMON C++ gráf optimalizálási könyvtár használata

Komputeralgebra Rendszerek

Laborgyakorlat 3 A modul ellenőrzése szimulációval. Dr. Oniga István

Feldspar: Nyelv digitális jelfeldolgozáshoz

Modellellenőrzés. dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Digitális Technika. Dr. Oniga István Debreceni Egyetem, Informatikai Kar

Clang Static Analyzer belülről

Java-ról Kotlinra. Ekler Péter AutSoft BME AUT. AutSoft

2018, Funkcionális programozás

Pénzügyi algoritmusok

Ismerkedés a Python programnyelvvel. és annak micropython változatával

CLIPS (C Language Integrated Production System)

Alapok. tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók

Rendszermodellezés. Modellellenőrzés. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

A kódgenerálás helye a fordítási folyamatban. Kódgenerálás I. (kifejezések és vezérlési szerkezetek) A kódgenerálás feladata. Ebben az előadásban...

Maximum kiválasztás tömbben

Szoftver-technológia II. Szoftver újrafelhasználás. (Software reuse) Irodalom

Szoftver értékelés és karbantartás

Autóipari beágyazott rendszerek. Komponens és rendszer integráció

Alap-ötlet: Karl Friedrich Gauss ( ) valószínűségszámítási háttér: Andrej Markov ( )

Komputeralgebra Rendszerek

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Digitális eszközök típusai

Java programozási nyelv

NEM-DETERMINISZTIKUS PROGRAMOK HELYESSÉGE. Szekvenciális programok kategóriái. Hoare-Dijkstra-Gries módszere

Python tanfolyam Python bevezető I. rész

Biztonsági folyamatirányító. rendszerek szoftvere

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

BPEL nyelvű üzleti folyamatok modellezése és formális ellenőrzése

ködös határ (félreértés, hiba)

Aspektus-orientált nyelvek XML reprezentációja. Kincses Róbert Debreceni Egyetem, Informatikai Intézet

Bánsághi Anna 2014 Bánsághi Anna 1 of 33

Podoski Péter és Zabb László

Komputeralgebra Rendszerek

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Szoftverminőségbiztosítás

Komputeralgebra Rendszerek

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Programozási nyelvek a közoktatásban alapfogalmak I. előadás

Átírás:

KOMPUTER-ALGEBRA RENDSZEREK VERIFIKÁCIÓJA Szoftver Verifikáció és Validáció, 2015 Ősz Vaitkus Márton

Tartalom Motiváció Maple MiniMaple MiniMaple típusellenőrzése MiniMaple formális specifikációja MiniMaple verifikációja Why3-ben

Motiváció Komputer-algebra rendszerek Szimbolikus számítások automatizálása Egyenletrendezés, egyszerűsítés Paraméteres egyenletmegoldás (algebrai/ode/pde) Deriválás, integrálás Absztrakt algebra, számelmélet Vizualizáció, interaktív ábrák Stb. Kezdetek: 60-as évek, LISP-alapon MATHLAB, mumath, Reduce, Derive, Macsyma (Maxima)

Motiváció Komputer-algebra rendszerek - kommerciális

Motiváció Komputer-algebra rendszerek - akadémiai

Motiváció Muhammad T. Khan: Formal Specification of Computer Algebra Software, (2014). PhD Disszertáció, JKU Linz, Konzulens: W. Schreiner. Maple programok formális specifikációja és verifikációja Maple MiniMaple MiniMaple típusellenőrző MiniMaple formális specifikációja MiniMaple formális szemantikája DifferenceDifferential csomag formális verifikálása: Why3 (+ Coq, Alt-Ergo, Z3)

Maple Imperatív programnyelv + könyvtárak + IDE Pascal nyomán Kezdetek: 1980 University of Waterloo 1988-tól kommerciális Több mint 5000 beépített függvény: szimbolikus algebra numerikus számítások, optimalizálás absztrakt algebra (csoportelmélet, kommutatív algebra) vizualizáció Interfész számos más nyelvhez: MATLAB, Fortran, Excel, VB, C, C#, Java, Python, Haskell,

Maple V&V - Áttekintés

MiniMaple

MiniMaple Khan munkája A Maple nyelv egy leszűkített részhalmaza DifferenceDifferential [Dönch, 2009] csomaghoz igazodva Nyelvtan formálisan specifikálva (BNF) Parser automatikusan generálva ANTLR segítségével

MiniMaple - BNF

MiniMaple - Példaprogram

MiniMaple statikus típusellenőrzése

MiniMaple statikus típusellenőrzése Dinamikusan típusos nyelv statikus típusellenőrzés?? [Fritzon, 1997]: Statikus típusellenőzés Mathematicahoz [Monagan, 1993]: Gauss csomag paraméterezett típusok, absztrakt típusok (futásidőben) domains csomag [Carette-Kucera, 2007]: Részleges kiértékelés

MiniMaple statikus típusellenőrzése Kihívások statikus analízis szempontjából: Dinamikusan típusos nyelv - nincs statikus típusrendszer! Nem-standard típusok: szimbólumok, kiértékeletlen kifejezések, stb.! Deklaráció ~ értékadás! Típusinformáció felhasználható elágazáshoz! Polimorf típusrendszer típushierarchia!

MiniMaple típusrendszere A Maple típusannotációit használjuk statikus típusellenőrzésre Típus hierarchia: pl. integer < rational < < anything Típusteszt: pl. if type(x, integer) then Típusannotációnal figyelembe kell venni (ld. a disszertációt) Külön global és local kontextus: global: új változót értékadással hozzuk létre, típusa futásidőben változhat local: új változót csak deklaráljuk, típusát csak specializálni lehet a típushierarchia szerint

MiniMaple típusellenőrzése Parser által generált AST alapján Khan által írt Java program: 100 osztály, 10K LOC

MiniMaple formális specifikációja

MiniMaple formális specifikációja Formális specifikációs nyelv Maple-hez Elsőrendű logika Maple szintaxis kiegészítése Eljárás specifikálása: Ciklus specifikálása: Típus annotált specifikált program típushelyessége ellenőrizhető, mint előbb!

MiniMaple formális specifikációja Példaprogram:

Why3

Why3 Verifikációs eszköz a Why3ML nyelvhez INRIA/LRI/CRNS (Franciao.) Why3ML: funkcionális, ML-alapú nyelv Why3ML kód verifikációs feltételek Verifikációs feltételek Why-kód: logikai specifikációs nyelv Why-kód Tételbizonyítók/ SMT megoldók Coq Alt-Ergo Z3 Stb.

Why3

MiniMaple formális szemantikája Why3ML-re való fordításhoz definiálni kell a szemantikát! Nincs formálisan definiált szemantika Maple-hez az implementációt kell alapul venni. Jellegzetességek: Vannak mellékhatások (nem funkcionális jellegű nyelv!) Denotációs szemantika Statikus scoping Részleteket ld. a disszertációban!

MiniMaple Why3ML MiniMaple fordítása Why3ML-re kihívások: MiniMaple-ben van return, Why3ML-ben nincs! Megoldható kivételkezeléssel Why3ML csak néhány típust (integer, real, string, tuple, list) támogat Minden MiniMaple típus axiomatizálható MiniMaple támogat egy Unió-típust (Or) Pattern matchinggel implementálható Fordítás helyessége rigorózusan bizonyított ld. A disszertációt! Khan implementációja: Java-ban 80+ osztály, 5K+ LoC

MiniMaple fordítása Why3ML-re

Verifikáció Why3-vel

Verifikáció Why3-vel - Példaprogram Hiányzó lemmák (4 db) Manuálisan kell hozzáadni Interaktív bizonyítás Coq-kal Verifikáció automatikus tételbizonyítókkal Alt-Ergo Z3

DifferenceDifferential csomag verifikációja DifferenceDifferential Maple csomag Hilbertpolinom számítása differenciális ideálokra (relatív Gröbner bázis) Alacsony és magas szintű eljárások Típusellenőrzés: Annotációk hozzáadása manuálisan Ellenőrző nem talált súlyos hibát, csak azonosított potenciálisan veszélyes kódrészeket Deklarált, de nem használt változók Globális és lokális scope-ban duplán deklarált változók

DifferenceDifferential csomag verifikációja Formális specifikáció:

DifferenceDifferential csomag verifikációja Verifikáció Why3-vel: 80%-ban automatikus Z3 CVC3 Alt-Ergo 20%-ban interaktív (alacsony szint: hiányzó lemmák, magas szint: minden) Coq

DifferenceDifferential csomag verifikációja Why3

Összefoglalás Komputer-algebra programok verifikációja nyitott probléma Khan: az első eredmények Maple verifikációjára Maple+Specifikáció Típusellenőrzés Why3ML kód Verifikáció Why3-vel Nyitott kérdések, problémák: Automatikus verifikáció hiányzó lemmák automatikus generálása Kiterjesztés Mathematica-ra szabály alapú nyelv! Konverzió procedurális nyelvre? http://www.risc.jku.at/people/mtkhan/dk10/software.html

Köszönöm a figyelmet!