Készítette: Vadász Péter B Formal Method Készítette: Vadász Péter
Tartalom Bevezetés Absztrakt gépek Specifikáció/finomító/implementáció gép Jelölések Műveletek Vezérlési szerkezetek Helyességbizonyítás
Bevezetés (1985) Jean-Raymond Abrial Edgar Dijkstra, Tony Hoare: leggyengébb előfeltétel Ralf Back, Carroll Morgan: finomítási módszerek J-R. Abrial: Z módszer (1985-1988) Oxfordi kutatások (1992) ipari felhasználás
Bevezetés (1994) B-t támogató programcsomag (B-Core: B-Toolkit, ClearSky: Atelier B) (1998 október) párizsi metró B konferenciák
B módszer lépései Specifikáció Finomítás Implementáció Programkód levezetés Finomítás levezetés Implementáció automatikus kódgenerálás Programkód
Absztrakt gépek Objektumalapú, de nem objektumelvű nyelv Absztrakt gépek – nem osztályok, objektumok, de képesek azok szimulálására Absztrakt gépek fajtái: specifikáció gépek (kötelezően 1 db) finomító gépek (bármennyi, akár 0) Implementáció gépek (maximum 1 db)
Absztrakt gépek leírása (Abstract machine notation - AMN) Deklarációs rész állapotleírás változók, konstansok, halmazok invariánsok, tulajdonságok Kompozíciós rész gépek közti kapcsolat változók és műveletek láthatósága Műveleti rész inicializáció műveletek (elő- utófeltételes forma)
Lexikális egységek Általános leírónyelv a programozónak, de könnyen átfordítható GSL-re (Generalized Substitution Language) Kis és nagybetű különböző Egybetűs azonosítók nem támogatottak Nem kötelező nyelvi elemek sorrendje tetszőleges (fejléc + adatok) 3 gépfajtára különböző használható elemek
Specifikáció gép (paraméterek) MACHINE a gép neve paraméterek zárójelben utána MACHINE halmaz(maxelem) CONSTRAINTS paraméterekre megszorítások CONSTRAINTS maxelem: NAT & maxelem > 0
Specifikáció gép 2 (láthatási jogok, hozzáférés gépekhez) INCLUDES ([név.]gépnév) halmazok, konstansok, gép aktuális paraméterei ismertek változók is de csak műveleteken keresztül érhetőek el átnevezéssel többszöri felhasználás USES([név.]gépnév) máshol INCLUDES-al hívott gépre hozzáférés mint fent, de nem módosíthatóak, és nem érhetőek el a paraméterek SEES([név.]gépnév) mint USES, de nem használható változó, konstans, halmaz az invariánsban
Specifikáció gép 3 (műveletek átvétele) PROMOTES paraméterben egy lista, az átvett műveleteket tartalmazza EXTENDS paramétere azon gépek listája, ami minden műveletét átvesszük PROMOTES-al, és INCLUDES szabályai szerint használunk
Specifikáció gép 4 (adatok) SETS CONSTANTS ABSTRACT_CONSTANTS (absztrakt), CONCRETE_CONSTANTS (végleges) is lehet PROPERTIES halmazokra és konstansokra megszorítások (paraméter használható) VARIABLES (ABSTRACT_, CONCRETE_) INVARIANT változókra megszorítások (PROPERTIES használható), minden váltózóra kötelező megszorítást tenni
Specifikáció gép 5 ASSERTIONS DEFINITIONS INITIALIZATION OPERATIONS tulajdonságok (invariáns, környezeti információ) DEFINITIONS bal_oldal=jobb_oldal minkettő B formula INITIALIZATION minden változóra kötelező, rekurzív OPERATIONS műveletek leírása END kötelező zárás
Finomító gép REFINEMENT REFINES a gép neve REFINES mely gépet finomítja SEES, SETS, CONSTANTS, PROPERTIES, VARIABLES, INVARIANT, ASSERTIONS, DEFINITIONS, INITIALIZATION, OPERATIONS, END a specifikació géphez hasonlóan
Implementáció gép IMPLEMENTATION REFINES a gép neve REFINES melyik gépet finomítja SETS, CONCRETE_CONSTANTS, CONCRETE_VARIABLES, PROPERTIES, INVARIANT, ASSERTIONS, DEFINITIONS, INITIALIZATION, OPERATIONS, END mint a specifikáció gépnél VALUES konstans, halmaz értékek
Implementáció gép 2 (láthatóság, hozzáférés gépekhez) SEES konstansok, halmazok, változók láthatóak, de nem módosíthatóak IMPORTS felhasznált gépek listája konstans, halmaz, változó részévé válik, de változó csak műveleten keresztül hivatkozható PROMOTES IMPORTS-al hivatkozott gép műveletei felsorolva, melyek ennek részeivé válnak
Jelölések Jelentés Matematikai jelölés B-s jelölésmód Konjunkció P Q Diszjunkció P Q P or Q Implikáció P Q P => Q Ekvivalencia P Q P <=> Q Negáció P not P Univerzális kvantor z (P Q) !(z).(P => Q) Egzisztenciális kvantor z (P Q) #(z).(P & Q) Helyettesítés [G] P Egyenlőség E = F Nem egyenlő E F E /= F
Jelölések Jelentés Matematikai jelölés B-s jelölésmód Egyelemű halmaz Halmaz felsorolása (többelemű) {E, F} Üres halmaz { } P tulajdonágú elemek halmaza { z | P } Unió S T S \/ T Metszet S T S /\ T Különbség S – T Rendezett pár (E, F) E |-> F Direktszorzat S T S * T Hatványhalmaz P(S) POW (S)
Műveletek OPERATIONS név = BEGIN Helyettesítések felsorolása END név (paraméterek) = PRE Előfeltétel BEGIN Helyettesítések felsorolása END
Műveletek OPERATIONS visszatérésiérték <-- függvénynév (paraméterek) = PRE Előfeltétel THEN Helyettesítések felsorolása az utolsó kötelezően: visszatérésiérték := … alakú END
Helyettesítési műveletek skip Hatás nélküli művelet. BEGIN S END Programblokk definiálása. Ekvivalens S-el. x := E Egyszerű értékadás. Az x változó az E kifejezés értékét kapja. x, y := E, F Szimultán értékadás. Az implementálás során egyszerű értékadásokkal kell helyettesíteni. r(x) := E Reláció értékadó művelet. Az r reláció x argumentumhoz tartozó értéke az E kifejezés.
Vezérlési szerkezetek IF felt THEN S1 ELSE S2 END Elágazás. Ha a feltétel igaz S1, különben S2 végrehajtása. x := bool (P) Ekvivalens IF P THEN x := true ELSE x := false END programmal (x BOOL típusú, ahol BOOL={igaz, hamis}). CHOICE S OR T OR …. OR U END Az alapgépben (és a finomító gépekben) használatos korlátozott választás (S vagy T vagy … vagy U teljesül). Az implementáció során nem lehet nemdeterminisztikus. SELECT P THEN S … WHEN Q THEN T ELSE U END A korlátozott választás másik szintaktikai alakja feltételekkel bővítve. Az ELSE ág akkor hajtódik végre, ha egyik feltétel sem teljesül.
Vezérlési szerkezetek 2 CASE E OF EITHER l THEN S … OR p THEN T ELSE U END Speciális SELECT. Egy kifejezést értékel ki és ennek eredménye (1, .., p) alapján hajtja végre a megfelelő helyettesítést(S, …, T,U) ANY z WHERE P THEN S END Alapgépeknél (és finomításoknál) ezzel lehet korlátlan választási lehetőséget leírni. A P tulajdonságú tetszőleges z változóra végrehajtjuk az S programot. x : E Értékkiválasztás. Az x az E egy tetszőleges eleme lesz.
Vezérlési szerkezetek 3 VAR x IN S END Változó (x) deklarálása helyettesítésbe (S). LET x, …, y BE x = E … y = F IN S END S helyettesítés x, …, y változóval (amelyek függetlenek egymástól és a kifejezésekben található változóktól), és őrfeltételekkel (x=E, …, y=F) WHILE P DO G VARIANT E INVARIANT Q Ciklus leírása. P a feltétel, G a ciklusmag, E a termináló függvény, Q az invariáns tulajdonság. Csak implemetáció gépben használható.
Helyességbizonyítás Elsősorban ez a célja Nagyon jó arány (akár 10000 bizonyítás 4-5 emberi a többi automatikus) Specifikációtól implementációig, finomítási lépésenként képes bizonyítani Párizsi metró
Egyéb tulajdonságok Nincs kivételkezelés Párhuzamosság, I/O műveletek előre definiált gépekkel (BT_IO) érhetőek el, körülbelül megfelel a könyvtári egységeknek. Több lépéses fordítás (GSL, Java/C/stb.) Beépített típusok vannak, pl. NAT, BOOL
Felhasznált irodalom J-R. Abrial The B-Book Cambridge University Press, 1996 Balázs Zoltán B formális módszer a gyakorlatban diplomamunka, 2004 http://quasar.inf.elte.hu/egyeb/temavezetes/balazs_zoltan Papp Olga, Vadász Péter Tervminták megvalósítása B formális nyelven TDK, 2005