VYSOK ´
E U ˇ
CEN´I TECHNICK ´
E V BRN ˇ
E
BRNO UNIVERSITY OF TECHNOLOGYFAKULTA INFORMA ˇ
CN´ICH TECHNOLOGI´I
´
USTAV INTELIGENTN´ICH SYST ´
EM ˚
U
FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INTELLIGENT SYSTEMS
N ´
AVRH A IMPLEMENTACE N ´
ASTROJE
PRO FORM ´
ALN´I VERIFIKACI SYST ´
EM ˚
U
SPECIFIKOVAN ´
YCH JAZYKEM RT LOGIKY
DESIGN AND IMPLEMENTATION OF A TOOL FOR FORMAL VERIFICATION OF SYSTEMS SPECIFIED IN RT-LOGIC LANGUAGE
DIPLOMOV ´
A PR ´
ACE
MASTER’S THESIS
AUTOR PR ´
ACE
Bc. JAN FIEDOR
AUTHOR
VEDOUC´I PR ´
ACE
Ing. JOSEF STRNADEL, Ph.D.
SUPERVISOR
Zad´
an´ı pr´
ace
1. Seznamte se s principy form´aln´ı specifikace a verifikace; detailnˇeji prostudujte zejm´ena metody verifikace pˇredpokl´adaj´ıc´ı specifikaci v jazyce logiky pracuj´ıc´ı s re´aln´ym ˇcasem (RT logiky, RTL).
2. Po vz´ajemn´e dohodˇe s Bc. Markem Gachem navrhnˇete blokov´e sch´ema a rozhran´ı n´astroje schopn´eho verifikovat vlastnosti syst´emu specifikovan´eho jazykem RT logiky. 3. Po dohodˇe s vedouc´ım vytvoˇrte v pˇrirozen´em jazyce neform´aln´ı slovn´ı specifikaci
nˇekolika jednoduch´ych syst´em˚u pracuj´ıc´ıch v re´aln´em ˇcase.
4. Syst´emy specifikovan´e v pˇredchoz´ım bodˇe specifikujte form´alnˇe pomoc´ı jazyka RT logiky.
5. N´astroj (blokovˇe navrˇzen´y v bodˇe 2) implementujte a jeho funkˇcnost ovˇeˇrte verifi-kac´ı vhodnˇe vybran´ych vlastnost´ı syst´em˚u specifikovan´ych jazykem RT logiky. Zvaˇzte implementaci metod vedouc´ıch k redukci stavov´eho prostoru.
Abstrakt
Protoˇze komplexnost syst´em˚u poˇr´ad roste a s t´ım tak´e riziko v´yskytu chyb, je potˇreba tyto chyby efektivnˇe a spolehlivˇe opravovat. U ˇrady syst´em˚u re´aln´eho ˇcasu tato potˇreba plat´ı dvojn´asob, jelikoˇz byt’ jedin´a chyba m˚uˇze zp˚usobit jejich ´upln´e zhroucen´ı, kter´e m˚uˇze m´ıt katastrof´aln´ı d˚usledky. Form´aln´ı verifikace, na rozd´ıl od jin´ych metod, umoˇzˇnuje spolehliv´e ovˇeˇrov´an´ı poˇzadavk˚u kladen´ych na urˇcit´y syst´em.
Kl´ıˇcov´
a slova
Form´aln´ı verifikace, Logika re´aln´eho ˇcasu, RTL, QF UFIDL, graf omezen´ı, DFS, n´avrhov´y vzor, CORBA, ANTLR
Abstract
As systems complexity grows, so grows the risk of errors, that’s why it’s necessary to effecti-vely and reliably repair those errors. With most of real-time systems this statement pays twice, because a single error can cause complete system crash which may result in catastro-phe. Formal verification, contrary to other methods, allows reliable system requirements verification.
Keywords
Formal verification, Real-Time Logic, RTL, QF UFIDL, constraint graph, DFS, design pattern, CORBA, ANTLR
Citace
Jan Fiedor: N´avrh a implementace n´astroje pro form´aln´ı verifikaci syst´em˚u specifikovan´ych jazykem RT logiky, diplomov´a pr´ace, Brno, FIT VUT v Brnˇe, 2009
N´
avrh a implementace n´
astroje pro form´
aln´ı verifikaci syst´em˚
u
specifikovan´
ych jazykem RT logiky
Prohl´
aˇsen´ı
Prohlaˇsuji, ˇze jsem tento diplomov´y projekt vypracoval samostatnˇe pod veden´ım pana Ing. Josefa Strnadela, Ph.D.
. . . . Jan Fiedor 24. kvˇetna 2009
c
Jan Fiedor, 2009.
Tato pr´ace vznikla jako ˇskoln´ı d´ılo na Vysok´em uˇcen´ı technick´em v Brnˇe, Fakultˇe in-formaˇcn´ıch technologi´ı. Pr´ace je chr´anˇena autorsk´ym z´akonem a jej´ı uˇzit´ı bez udˇelen´ı opr´ av-nˇen´ı autorem je nez´akonn´e, s v´yjimkou z´akonem definovan´ych pˇr´ıpad˚u.
Obsah
Obsah 2
1 Uvod´ 3
2 Syst´emy re´aln´eho ˇcasu [5] 4
3 Verifikace 5
3.1 Od testov´an´ı k verifikaci . . . 5
3.2 Obecn´e metody verifikace . . . 5
3.2.1 Symbolick´e logiky [1] . . . 5
3.2.2 Automaty a jazyky . . . 9
4 Verifikace syst´em˚u re´aln´eho ˇcasu [2] 11 4.1 Specifikace a bezpeˇcnostn´ı tvrzen´ı . . . 11
4.2 Model typu ud´alost-akce . . . 12
4.3 Logika re´aln´eho ˇcasu (RTL) . . . 12
4.4 Omezen´e RTL formule . . . 14
4.5 Graf omezen´ı . . . 16
4.6 Ovˇeˇren´ı nesplnitelnosti . . . 17
4.7 Prohled´avac´ı strom . . . 18
4.8 Optimalizace . . . 20
5 N´avrh n´astroje pro verifikaci 23 6 Realizace n´astroje pro verifikaci 25 6.1 Implementaˇcn´ı prostˇred´ı . . . 25
6.2 Modularita . . . 26
6.3 Verifik´ator . . . 26
6.3.1 J´adro . . . 26
6.3.2 Proxy j´adra . . . 27
6.3.3 Pl´anovaˇc j´adra . . . 27
6.3.4 Ud´alostn´ı subsyst´em . . . 27
6.3.5 Subsyst´em rozˇs´ıˇren´ı . . . 28
6.3.6 Protokolovac´ı subsyst´em . . . 30
6.3.7 Konfiguraˇcn´ı subsyst´em . . . 31
6.3.8 Komunikaˇcn´ı subsyst´em . . . 32
6.3.9 Modul pro zpracov´an´ı omezen´ych RTL formul´ı . . . 33
6.3.11 Modul pro tvorbu grafu omezen´ı . . . 41
6.3.12 Modul pro tvorbu prohled´avac´ıho stromu . . . 44
6.4 Grafick´e uˇzivatelsk´e rozhran´ı . . . 46
6.4.1 Komponenty . . . 46
6.4.2 J´adro . . . 47
6.4.3 Proxy j´adra . . . 48
6.4.4 Pl´anovaˇc j´adra . . . 48
6.4.5 Ud´alostn´ı subsyst´em . . . 48
6.4.6 Subsyst´em rozˇs´ıˇren´ı . . . 48
6.4.7 Protokolovac´ı subsyst´em . . . 49
6.4.8 Konfiguraˇcn´ı subsyst´em . . . 49
6.4.9 Komunikaˇcn´ı subsyst´em . . . 50
6.4.10 Lokalizaˇcn´ı subsyst´em . . . 50
6.5 Komunikace . . . 51
6.5.1 Implementaˇcn´ı poˇzadavky . . . 51
6.5.2 Pˇrenos ud´alost´ı . . . 52
6.5.3 Konkr´etn´ı implementace . . . 53
7 Z´avˇer a zhodnocen´ı 55 7.1 Smˇery dalˇs´ıho v´yvoje. . . 55
7.2 Z´avˇer . . . 55
Kapitola 1
´
Uvod
Syst´emy re´aln´eho ˇcasu lze naj´ıt ve velk´em mnoˇzstv´ı zaˇr´ızen´ı, od dom´ac´ıch spotˇrebiˇc˚u, pˇres elektroniku a dopravn´ı prostˇredky, aˇz napˇr´ıklad po vesm´ırn´e sondy. Protoˇze komplexnost tˇechto syst´em˚u poˇr´ad roste a s t´ım tak´e riziko v´yskytu chyb, je potˇreba tyto chyby efektivnˇe a spolehlivˇe opravovat. Neˇz m˚uˇze b´yt ovˇsem nˇejak´a chyba opravena, mus´ı b´yt nejdˇr´ıve v˚ubec odhalena. Star´e zp˚usoby hled´an´ı chyb, jako kontrola implementace syst´emu jin´ym ˇ
clovˇekem, jsou pˇri rozs´ahlosti dneˇsn´ıch syst´em˚u velice neefektivn´ı a je tedy potˇreba uplatnit automatizovateln´e metody pro hled´an´ı a pˇr´ıpadnˇe i opravu chyb.
Form´aln´ı verifikace umoˇzˇnuje spolehliv´e ovˇeˇrov´an´ı poˇzadavk˚u kladen´ych na urˇcit´y sys-t´em. Samozˇrejmˇe tato vysok´a spolehlivost a efektivita z hlediska odhalov´an´ı chyb je vykou-pena ˇradou probl´em˚u. Form´aln´ı verifikace vyˇzaduje pro svou ˇcinnost urˇcitou formu popisu specifikace syst´emu a ovˇeˇrovan´ych vlastnost´ı, at’ jiˇz je to popis pomoc´ı logick´ych formul´ı, automat˚u, speci´aln´ıho programovac´ıho jazyka, petriho s´ıt´ı nebo tˇreba procesn´ı algebry. Pouˇzit´y popis tak´e pˇr´ımo ovlivˇnuje moˇznosti ovˇeˇrov´an´ı, urˇcit´a forma popisu m˚uˇze b´yt ve-lice vhodn´a pro ovˇeˇrov´an´ı specifick´e vlastnosti syst´emu, ale z´aroveˇn tak´e nepouˇziteln´a pro ovˇeˇrov´an´ı vlastnost jin´e. Dalˇs´ım probl´emem je sloˇzitost v´ypoˇctu, at’ jiˇz z hlediska ˇcasov´e ˇ
ci prostorov´e n´aroˇcnosti. Pouˇz´ıvan´e metody m´ıvaj´ı ˇcasto exponenci´aln´ı sloˇzitost. ˇCasto se tedy mus´ı u sloˇzitˇejˇs´ıch syst´em˚u pˇristupovat k abstrakci pro zjednoduˇsen´ı sloˇzitosti ˇreˇsen´ych probl´em˚u.
Kapitola 2
Syst´
emy re´
aln´
eho ˇ
casu
[
5
]
Hlavn´ım rozd´ılem mezi standardn´ımi syst´emy a syst´emy re´aln´eho ˇcasu je v poˇzadavc´ıch na korektnost tˇechto syst´em˚u. Hlavn´ım poˇzadavkem u standardn´ıch syst´em˚u je samozˇrejmˇe spr´avnost v´ystup˚u. U syst´em˚u re´aln´eho ˇcasu je ovˇsem situace sloˇzitˇejˇs´ı, nebot’ kromˇe spr´ a-vnosti v´ystup˚u je d˚uleˇzit´y tak´e ˇcas, kdy byly tyto v´ystupy vyprodukov´any.
Syst´em re´aln´eho ˇcasu by mohl b´yt tedy definov´an jako syst´em, kter´y mus´ı reagovat spr´avnˇe a vˇcas na vstupn´ı podnˇety. Je d˚uleˇzit´e si uvˇedomit, ˇze term´ın vˇcas je relativn´ı, nemus´ı vˇzdy znamenat rychle, vyjadˇruje pouze nutnost dodrˇzen´ı urˇcit´ych ˇcasov´ych mez´ı, aby byla splˇnena poˇzadovan´a doba odezvy dan´eho syst´emu.
Syst´emy re´aln´eho ˇcasu lze dˇelit nˇekolika zp˚usoby. Sp´ıˇse neˇz rozdˇelen´ı podle poˇzadavk˚u na dobu odezvy se ale vyuˇz´ıv´a dˇelen´ı podle charakteru selh´an´ı syst´emu, tedy jak´e budou d˚usledky nedodrˇzen´ı poˇzadovan´ych ˇcasov´ych mez´ı. Zde se vyuˇz´ıv´a rozdˇelen´ı do tˇr´ı kategori´ı: 1. Soft RT syst´em - nedodrˇzen´ı ˇcasov´eho omezen´ı m´a za n´asledek pouze degradov´an´ı
v´ykonu syst´emu, ale nezp˚usob´ı jeho selh´an´ı.
2. Firm RT syst´em - nedodrˇzen´ı nˇekolika ˇcasov´ych omezen´ı nevede k ´upln´emu selh´an´ı syst´emu, ovˇsem vetˇs´ı poˇcet nedodrˇzen´ych ˇcasov´ych omezen´ı m˚uˇze v´est k selh´an´ı syst´emu nebo dokonce katastrofˇe.
3. Hard RT syst´em - nedodrˇzen´ı jedin´eho ˇcasov´eho omezen´ı m´a za n´asledek kompletn´ı selh´an´ı syst´emu, kter´e m˚uˇze vy´ustit v katastrofu.
Kapitola 3
Verifikace
3.1
Od testov´
an´ı k verifikaci
Testov´an´ı je pravdˇepodobnˇe jednou z nejstarˇs´ıch technik pro odhalov´an´ı chyb v softwaru nebo hardwaru. Jde o spuˇstˇen´ı testovan´eho syst´emu s vyuˇzit´ım koneˇcn´e mnoˇziny vstup˚u a n´asledn´e ovˇeˇren´ı, zda z´ıskan´e v´ystupy nebo chov´an´ı syst´emu odpov´ıd´a jeho specifikaci. Na rozd´ıl od standardn´ıch syst´em˚u je u syst´em˚u pracuj´ıc´ıch v re´aln´em ˇcase kromˇe hodnot vstup˚u d˚uleˇzit´y tak´e ˇcas, kdy byly tyto vstupy syst´emu pˇredloˇzeny. Stejnˇe tak u ovˇeˇrov´an´ı je, kromˇe korektnosti v´ystup˚u, d˚uleˇzit´y tak´e ˇcas, kdy byly vyprodukov´any. Protoˇze u vˇetˇs´ıch a sloˇzitˇejˇs´ıch syst´em˚u je poˇcet moˇzn´ych vstup˚u obrovsk´y, nˇekdy i nekoneˇcn´y, je tato tech-nika pro celkov´e ovˇeˇren´ı vlastnost´ı syst´emu prakticky nepouˇziteln´a.
Simulace, narozd´ıl od testov´an´ı, pracuje pouze s modelem existuj´ıc´ıho syst´emu. V´yhodou vyuˇzit´ı modelu je moˇznost prov´adˇen´ı test˚u, kter´e by byly u re´aln´eho syst´emu pˇr´ıliˇs ne-bezpeˇcn´e, jako napˇr´ıklad testov´an´ı ˇr´ızen´ı jadern´e elektr´arny, nebo dokonce nemoˇzn´e. Pro jeden re´aln´y syst´em lze vytvoˇrit libovoln´y poˇcet jeho model˚u s r˚uzn´ymi ´urovnˇemi abstrakce. To umoˇzˇnuje pˇri testov´an´ı ignorovat irelevantn´ı ˇc´asti syst´emu, kter´e na ovˇeˇrov´an´ı testovan´e vlastnosti nemaj´ı ˇz´adn´y vliv, a urychlit t´ım celkovou simulaci. Nev´yhodou simulace je, ˇze nen´ı moˇzn´e namodelovat vˇsechny sekvence ud´alost´ı, kter´e mohou v re´aln´em modelu nastat. Pˇredchoz´ı dvˇe techniky jsou dobr´e pro odhalov´an´ı chyb v simulovan´em nebo re´aln´em syst´emu, ale vˇetˇsinou nemohou garantovat, ˇze syst´em splˇnuje poˇzadavky, kter´e jsou na nˇej kladeny. Verifikace dok´aˇze zjistit, zda je ovˇeˇrovan´a vlastnost vˇzdy platn´a nebo zda m˚uˇze doj´ıt k jej´ımu poruˇsen´ı. Nev´yhodou verifikace je, ˇze vyˇzaduje pro svou ˇcinnost popis syst´emu a poˇzadavk˚u kladen´ych na tento syst´em pomoc´ı jazyka, vhodn´eho pro verifikaci.
3.2
Obecn´
e metody verifikace
3.2.1 Symbolick´e logiky [1]
Symbolick´a logika je kolekce jazyk˚u, kter´e pouˇz´ıvaj´ı symboly pro reprezentaci fakt˚u, ud´alost´ı a akc´ı, a poskytuj´ı pravidla umoˇznuj´ıc´ı usuzov´an´ı nad tˇemito symboly. Pokud je k dispozici specifikace syst´emu a jeho poˇzadovan´ych vlastnost´ı ve formˇe logick´ych formul´ı, je moˇzn´e dok´azat, ˇze tyto vlastnosti jsou logick´ym d˚usledkem specifikace tohoto syst´emu. Mezi nej-pouˇz´ıvanˇejˇs´ı logiky pro popis a n´aslednou verifikaci syst´em˚u patˇr´ı v´yrokov´a logika a pre-dik´atov´a logika.
3.2.1.1 V´yrokov´a logika
Z´akladn´ımi prvky v´yrokov´e logiky jsou pravdivostn´ı symboly true a f alse a v´yrokov´e promˇenn´e, kter´ych existuje obecnˇe nekoneˇcn´y poˇcet. Kombinac´ı tˇechto prvk˚u vznikaj´ı v´yroky, oznaˇcovan´e jako formule, jazyka v´yrokov´e logiky.
Bud’ P koneˇcn´a nepr´azdn´a mnoˇzina v´yrokov´ych promˇenn´ych. Pak p je atom pokud p ∈ P nebo p je jeden z pravdivostn´ıch symbol˚u true a f alse. Liter´al l je atom p nebo jeho negace ¬p. Formule F je bud’ samostatn´y liter´al l nebo vznikne aplikac´ı nˇekter´e z n´asleduj´ıc´ıch spojek na formule F1 a F2:
• Negace ¬F1 nebo ¬F2
• Konjunkce F1∧ F2
• Disjunkce F1∨ F2
• Implikace F1 → F2
• Ekvivalence F1 ↔ F2
Interpretace I pˇriˇrazuje kaˇzd´e v´yrokov´e promˇenn´e pr´avˇe jednu pravdivostn´ı hodnotu true nebo f alse a vyjadˇruje tak v´yznam formule sloˇzen´e z tˇechto promˇenn´ych. Pokud je d´ana formule F a j´ı odpov´ıdaj´ıc´ı interpretace I, lze vypoˇc´ıtat v´yslednou pravdivostn´ı hodnotu t´eto formule. Nejjednoduˇsˇs´ı metodou pro urˇcen´ı pravdivostn´ı hodnoty formule F je vyuˇzit´ı pravdivostn´ı tabulky. Pravdivostn´ı tabulka3.1shrnuje pravdivostn´ı hodnoty formul´ı vznikl´ych aplikac´ı jednotliv´ych spojek v´yrokov´e logiky. Hodnota 1 odpov´ıd´a pravdivostn´ı hodnotˇe true, hodnota 0 pravdivostn´ı hodnotˇe f alse.
F1 F2 ¬F1 F1∧ F2 F1∨ F2 F1 → F2 F1↔ F2
0 0 1 0 0 1 1
0 1 1 0 1 1 0
1 0 0 0 1 0 0
1 1 0 1 1 1 1
Tabulka 3.1: Pravdivostn´ı tabulka pro jednoduch´e formule v´yrokov´e logiky
Formule F je splniteln´a, pr´avˇe tehdy kdyˇz existuje interpretace I, pro kterou formule F nab´yv´a hodnoty true, tedy formule F je pˇri dan´em ohodnocen´ı promˇenn´ych pravdiv´a. Pot´e se ˇr´ık´a, ˇze interpretace I je modelem formule F neboli I |= F . Formule F je va-lidn´ı, pr´avˇe tehdy kdyˇz pro vˇsechny interpretace I plat´ı I |= F . Je d˚uleˇzit´e si uvˇedomit, ˇ
ze splnitelnost a validita jsou tzv. du´aln´ı pojmy, tedy ovˇeˇrov´an´ı jedn´e vlastnosti lze jed-noduˇse pˇrev´est na ovˇeˇrov´an´ı druh´e. F je validn´ı, pr´avˇe tehdy kdyˇz ¬F je nesplniteln´a. D´ıky t´eto dualitˇe je moˇzn´e vˇzdy ovˇeˇrovat pouze jednu z dan´ych vlastnost´ı, tedy validitu nebo splnitelnost, podle toho, kter´e ovˇeˇren´ı je z hlediska pouˇzit´eho postupu v´yhodnˇejˇs´ı.
Pro urˇcen´ı, zda formule popisuj´ıc´ı poˇzadovanou vlastnost syst´emu je logick´ym d˚usledkem formul´ı specifikuj´ıc´ıch dan´y syst´em lze vyuˇz´ıt principu rezoluce. Rezoluce vyˇzaduje pˇ reve-den´ı formule do konjunktn´ı norm´aln´ı formy (CNF). CNF formule je tvoˇrena konjunkc´ı klauzul´ı, kde kaˇzd´a klauzule je disjunkc´ı liter´al˚u. Rezoluˇcn´ı princip pot´e ˇr´ık´a, ˇze pokud existuj´ı ve formuli dvˇe klauzule C1 a C2, kde l1 ∈ C1, l2 ∈ C2 a l1∧ l2 nab´yv´a hodnoty f alse, tedy plat´ı, ˇze liter´al l1je negac´ı liter´alu l2, pak logick´ym d˚usledkem, tzv. rezolventou,
klauzul´ı C1 a C2 je klauzule vznikl´a disjunkc´ı klauzul´ı C1 a C2 po odebr´an´ı liter´al˚u l1 a l2 z tˇechto klauzul´ı. Form´alnˇe lze tento pricip zapsat n´asledovnˇe:
a1∨ . . . ∨ ai∨ . . . ∨ an, b1∨ . . . ∨ bj∨ . . . ∨ bm
a1∨ . . . ∨ ai−1∨ ai+1∨ . . . ∨ an∨ b1∨ . . . ∨ bj−1∨ bj+1∨ . . . ∨ bm
kde ai and bj jsou liter´aly ∀i ∈ 1..n, ∀j ∈ 1..m, aije negac´ı bj a oddˇeluj´ıc´ı pˇr´ımka vyjadˇruje je logick´ym d˚usledkem.
Pro ovˇeˇren´ı validity testovan´e vlastnosti syst´emu lze pot´e vyuˇz´ıt rezoluˇcn´ıho teor´emu, kter´y ˇr´ık´a, ˇze mnoˇzina klauzul´ı S je nesplniteln´a, pr´avˇe tehdy kdyˇz je odvozena pr´azdn´a klauzule z t´eto mnoˇziny S. Pokud tedy jakoukoliv aplikac´ı rezoluˇcn´ıho principu nedojde k odvozen´ı pr´azdn´e klauzule, je v´ysledn´a mnoˇzina klauzul´ı, a tedy i formule, kterou tyto klauzule tvoˇr´ı, validn´ı.
Tento postup vyuˇz´ıv´a ˇrada n´astroj˚u pro ovˇeˇrov´an´ı splnitelnosti nebo validity formul´ı v´yrokov´e logiky. Nev´yhodou je exponeci´aln´ı sloˇzitost ˇreˇsen´ı tohoto probl´emu, ikdyˇz existuj´ı efektivn´ı reprezentace a heuristiky pro sn´ıˇzen´ı jak prostorov´e, tak ˇcasov´e sloˇzitosti ˇreˇsen´ı. 3.2.1.2 Predik´atov´a logika
Predik´atov´a logika je logikou 1. ˇr´adu. M´a vˇetˇs´ı vyjadˇrovac´ı s´ılu a je tedy vhodnˇejˇs´ı pro usuzov´an´ı nad urˇcit´ym v´ypoˇctem. Rozˇsiˇruje v´yrokovou logiku o predik´aty, funkce a kvan-tifik´atory.
Z´akladn´ım prvkem jazyka je term. Nejjednoduˇsˇs´ımi termy jsou promˇenn´e a kon-stanty, sloˇzitˇejˇs´ı termy jsou vytv´aˇreny pomoc´ı funkc´ı. N -´arn´ı funkce f pˇrij´ım´a n term˚u jako sv´e argumenty, na konstanty lze tak´e nahl´ıˇzet jako na 0-´arn´ı funkce.
V´yrokov´e promˇenn´e jsou zastoupeny ve formˇe predik´at˚u. N -´arn´ı predik´at p pˇrij´ım´a n term˚u jako sv´e argumenty, 0-´arn´ı predik´at pot´e odpov´ıd´a v´yrokov´e promˇenn´e zn´am´e z v´yrokov´e logiky. Atom je pravdivostn´ı hodnota true nebo f alse, nebo n-´arn´ı predik´at aplikovan´y na n term˚u. Liter´al je atom nebo jeho negace. Formule predik´atov´e logiky je samostatn´y liter´al, nebo vznikne aplikac´ı logick´e spojky ¬, ∧, ∨, →, ↔ na jednu nebo v´ıce formul´ı nebo aplikac´ı kvantifik´atoru na danou formuli. V predik´atov´e logice existuj´ı dva typy kvalifik´ator˚u:
• Univerz´aln´ı kvantifik´ator ∀x.F [x] vyjadˇruj´ıc´ı, ˇze pro vˇsechny x plat´ı formule F . • Existenˇcn´ı kvantifik´ator ∃x.F [x] vyjadˇruj´ıc´ı, ˇze existuje nˇejak´e x, pro kter´e plat´ı
for-mule F .
Promˇenn´a x se pot´e oznaˇcuje jako kvantifikovan´a promˇenn´a a F [x] jako rozsah platnosti kvantifik´atoru. Promˇenn´a x se oznaˇcuje jako v´azan´a ve formuli F [x], pokud se x vyskytuje v rozsahu platnosti kvantifik´atoru ∀ nebo ∃. Promˇenn´a x se oznaˇcuje jako voln´a ve formuli F [x], pokud se ve formuli vyskytuje instance x, kter´a nen´ı v´azan´a ˇz´adn´ym kvantifik´atorem. Pokud formule neobsahuje ˇz´adnou volnou promˇennou, pak se oznaˇcuje jako uzavˇren´a.
Stejnˇe jako u v´yrokov´e logiky i zde mohou formule nab´yvat ohodnocen´ı true nebo f alse. U predik´atov´e logiky je ovˇsem situace trochu sloˇzitˇejˇs´ı, protoˇze ohodnocen´ı term˚u m˚uˇze b´yt kromˇe pravdivostn´ıch hodnot t´emˇeˇr jak´ekoliv, od cel´ych ˇc´ısel aˇz napˇr´ıklad po jm´ena lid´ı.
Interpretace I pˇriˇrazuje term˚um hodnoty z dom´eny DI. Dom´ena DI interpretace I je mnoˇzina hodnot nebo objekt˚u, jako cel´a ˇc´ısla, re´aln´a ˇc´ısla, auta, lidi, nebo pouze abstraktn´ı objekty, kter´ych mohou nab´yvat jednotliv´e termy. |DI| vyjadˇruje kardinalitu mnoˇzity, tedy celkov´y poˇcet tˇechto hodnot. Dom´ena m˚uˇze b´yt koneˇcn´a, spoˇcetnˇe nekoneˇcn´a
nebo nespoˇcetnˇe nekoneˇcn´a, vˇzdy ale mus´ı b´yt nepr´azdn´a. Pˇriˇrazen´ı αI interpretace I pot´e mapuje symboly promˇenn´ych, konstant, funkc´ı a predik´at˚u na prvky, funkce a predik´aty dom´eny DI:
• Kaˇzd´emu symbolu promˇenn´e x je pˇriˇrazena hodnota xI z dom´eny DI
• Kaˇzd´emu symbolu n-´arn´ı funkce f je je pˇriˇrazena n-´arn´ı funkce fI : DIn→ DI
kter´a mapuje n prvk˚u dom´eny DI na jedin´y prvek t´eto dom´eny
• Kaˇzd´e konstantˇe (0-´arn´ı funkˇcn´ı symbol) je pˇrirazena hodnota z dom´eny DI
• Kaˇzd´emu symbolu n-´arn´ıho predik´atu p je pˇriˇzazen n-´arn´ı predik´at pI: DIn→ {true, f alse}
kter´y mapuje n prvk˚u dom´eny DI na pravdivostn´ı hodnotu true nebo f alse
• Kaˇzd´e v´yrokov´e promˇenn´e (0-´arn´ı predik´atov´y symbol) je pˇriˇrazena pravdivostn´ı hod-nota true nebo f alse
Interpretace I : (DI, αI) je tedy dvojic´ı skl´adaj´ıc´ı se z dom´eny hodnot, kter´ych mohou symboly jazyka nab´yvat, a pˇriˇrazen´ı, kter´e mapuje jednotliv´e symboly na tyto hodnoty.
Pˇri pˇr´ıtomnosti kvantifik´ator˚u se situace trochu komplikuje. Nejprve je potˇreba defino-vat x-variantu interpretace I : (DI, αI) jako interpretaci J : (DJ, αJ), takovou, ˇze plat´ı n´asleduj´ıc´ı:
• DI = DJ
• αI[y] = αJ[y] pro vˇsechny konstanty, voln´e promˇenn´e, funkce a predik´atov´e symboly y kromˇe x
tedy interpretace I a J jsou stejn´e aˇz na ohodnocen´ı promˇenn´e x. Z´apis J : I / {x 7→ v} pot´e ˇr´ık´a, ˇze J je x-variantou I, kde αJ[x] = v pro nˇejakou hodnotu v ∈ DI. Pak plat´ı, ˇze:
• I |= ∀x.F pr´avˇe tehdy kdyˇz ∀v ∈ DI, I / {x 7→ v} |= F
• I |= ∃x.F pr´avˇe tehdy kdyˇz ∃v ∈ DI takov´e, ˇze I / {x 7→ v} |= F
neboli I je interpretac´ı ∀x.F , pr´avˇe tehdy kdyˇz vˇsechny jej´ı x-varianty jsou interpretac´ı F . A I je interpretac´ı ∃x.F , pr´avˇe tehdy kdyˇz nˇejak´a x-varianta I je interpretac´ı F .
Pro snaˇzˇs´ı strojovou manipulaci a anal´yzu formul´ı se ˇcasto prov´ad´ı ´uprava tˇechto formul´ı do specifick´eho tvaru. Jedn´ım z ˇcasto vyuˇz´ıvan´ych tvar˚u je tzv. prenexn´ı norm´aln´ı forma, ve kter´e jsou vˇsechny kvantifik´atory pˇresunuty na levou stranu, tedy zaˇc´atek, formule. Form´alnˇe ˇreˇceno, formule F je v prenexn´ı norm´aln´ı formˇe, pr´avˇe tehdy kdyˇz je ve tvaru
(Q1v1)(Q2v2) . . . (Qn−1vn−1)(Qnvn)(M )
kde kaˇzd´y v´yraz (Qivi), pro i = 1..n, je bud’ (∀vi) nebo (∃vi) a M je formule bez jak´ychkoliv kvantifik´ator˚u. (Q1v1) . . . (Qnvn) se oznaˇcuje jako prefix a M jako matice formule F . Matice M m˚uˇze b´yt pot´e upravena do konjunktn´ı norm´aln´ı formy (CNF), kter´a obsahuje pouze konjunkce disjunkc´ı liter´al˚u.
Prenexn´ı CNF m˚uˇze b´yt d´ale upravena do Skolemovy standardn´ı formy procesem ozna-ˇ
covan´ym skolemizace. Pˇri skolemizaci dojde k nahrazen´ı existenˇcn´ıch kvantifik´ator˚u Sko-lemov´ymi funkcemi. Absence existenˇcn´ıch kvantifik´ator˚u ˇcasto usnadˇnuje proces ovˇeˇrov´an´ı platnosti a validity formul´ı a tak´e n´aslednˇe umoˇzˇnuje velice jednoduˇse odstranit i univerz´aln´ı kvantifik´atory.
Necht’ Qi je existenˇcn´ı kvantifik´ator v prefixu (Q1v1) . . . (Qnvn), pro i = 1..n. Pokud se nalevo od Qi nevyskytuje ˇz´adn´y unverz´aln´ı kvantifik´ator, pak lze nahradit vˇsechny v´yrazy vi v matici M novou konstantou c, kter´a se jeˇstˇe nevyskytuje v matici M , a odstranit v´yraz (Qivi) z prefixu. Jestliˇze (Qu1. . . Qum), pro 1 ≤ u1 < . . . < um< i, jsou univerz´aln´ı
kvanti-fik´atory nalevo od Qi, pak se vˇsechny v´yrazy vinahrad´ı novou m-´arn´ı funkc´ı f (vu1, . . . , vum),
kter´a se jeˇstˇe nevyskytuje v matici M , a (Qivi) se odstran´ı z prefixu. V´ysledn´a formule bez existenˇcn´ıch kvantifik´ator˚u je pot´e ve Skolemovˇe norm´aln´ı formˇe. Konstanty a funkce pouˇzit´e pˇri skolemizaci se oznaˇcuj´ı jako Skolemovy konstanty a Skolemovy funkce.
Dalˇs´ı, ˇcasto pouˇz´ıvanou, operac´ı pˇri zpracov´an´ı a ovˇeˇrov´an´ı formul´ı je substituce. Sub-stituce je syntaktick´a operace nad formul´ı, kter´a m˚uˇze v´yraznˇe ovlivnit jej´ı s´emantiku, tedy v´yznam. Umoˇzˇnuje ovˇeˇrovat validitu cel´e mnoˇziny formul´ı pomoc´ı ˇsablon formul´ı. Je tak´e jeden ze z´akladn´ıch n´astroj˚u pro manipulaci s formulemi pˇri jejich ovˇeˇrov´an´ı.
Obecnˇe je substituce σ mapov´an´ı z formule na formuli
σ : {F1 7→ G1, F2 7→ G2, . . . , Fn−17→ Gn−1, Fn7→ Gn}
kde dom´ena substituce σ, domain(σ) je
domain(σ) : {F1, F2, . . . , Fn−1, Fn}
a rozsah substituce σ, range(σ) je
range(σ) : {G1, G2, . . . , Gn−1, Gn}
Aplikace substituce σ na formuli F , F σ, nahrad´ı kaˇzd´y v´yskyt formule Fi z dom´eny σ od-pov´ıdaj´ıc´ı formul´ı Gi z rozsahu σ. Pˇri manipulac´ıch s formulemi se vˇetˇsinou nenahrazuj´ı cel´e formule, ale pouze jednotliv´e termy, pˇrev´aˇznˇe promˇenn´e, za jin´e promˇenn´e, konstanty nebo funkce. Dˇr´ıve zm´ınˇen´a skolemizace je tak´e urˇcitou formou substituce.
Narozd´ıl od v´yrokov´e logiky se u predik´atov´e logiky vetˇsinou nepouˇz´ıvaj´ı obecn´e me-tody pro ovˇeˇrov´an´ı validity a splnitelnosti. Ty jsou ˇcasto velice neefektivn´ı nebo dokonce nepouˇziteln´e. S´emantika formul´ı predik´atov´e logiky je charakterizov´ana pomoc´ı teori´ı. Ty urˇcuj´ı, z jak´ych symbol˚u se dan´e formule mohou skl´adat a jak´e axiomy pro dan´e formule mus´ı platit. Na z´akladˇe pouˇzit´e teorie se pot´e vol´ı vhodn´a metoda pro ovˇeˇren´ı platnosti dan´ych formul´ı.
3.2.2 Automaty a jazyky
Automat je schopen rozhodnout, zda sekvence slov patˇr´ı do specifick´eho jazyka. Tento jazyk se skl´ad´a z mnoˇziny slov nad nˇejakou koneˇcnou abecedou. Pokud tato sekvence slov odpov´ıd´a sekvenc´ı ud´alost´ı a akc´ı, je moˇzn´e sestrojit automat, kter´y bude pˇrij´ımat pouze spr´avn´e sekvence tˇechto ud´alost´ı a akc´ı z hlediska urˇcit´eho syst´emu a t´ımto bude ˇreˇsit verifikaci zadan´eho probl´emu v tomto syst´emu.
Automaty mohou reprezentovat procesy nebo celkov´y syst´em. Pˇresnˇeji specifikaˇcn´ı au-tomat bude reprezentovat poˇzadovanou specifikaci syst´emu a implementaˇcn´ı automat bude
modelovat implementaci, kter´a se snaˇz´ı splnit poˇzadovanou specifikaci. C´ılem je pot´e zjis-tit, zda implementace splˇnuje zadanou specifikaci. Na tento probl´em lze nahl´ıˇzet jako na probl´em inkluze jazyk˚u, tedy jde o zjiˇstˇen´ı, zda jazyk, kter´y je pˇrij´ım´an implementaˇcn´ım automatem je podmnoˇzinou jazyka pˇrij´ıman´eho specifikaˇcn´ım automatem.
Kapitola 4
Verifikace syst´
em˚
u re´
aln´
eho ˇ
casu
[
2
]
Existuj´ı dvˇe formy specifikace syst´em˚u re´aln´eho ˇcasu, prvn´ı zachycuje strukturu a funkcio-nalitu syst´emu, druh´a pak pouze jeho chov´an´ı.
Strukturn´ı a funkcion´aln´ı popis zahrnuje specifikaci mechanick´ych, elektrick´ych a elek-trotechnick´ych komponent syst´emu. Ukazuje jak jednotliv´e komponenty pracuj´ı a jak´e funkce a operace poskytuj´ı. Popisuje tak´e propojen´ı jednotliv´ych komponent a jak akce jedn´e komponenty ovlivˇnuj´ı ostatn´ı komponenty syst´emu.
Popis chov´an´ı specifikuje odezvu syst´emu na r˚uzn´e akce a ud´alosti. Ukazuje tedy pouze jak jednotliv´e komponenty syst´emu reaguj´ı na intern´ı a extern´ı ud´alosti, ne jak takov´yto syst´em sestrojit. Vzhledem k tomu, ˇze u syst´em˚u re´aln´eho ˇcasu jsou zaj´ımav´e hlavnˇe ˇcasov´e vlastnosti, popis chov´an´ı bez zbyteˇcnˇe sloˇzit´e strukturn´ı specifikace ˇcasto postaˇcuje pro verifikaci splnitelnosti vˇetˇsiny ˇcasov´ych omezen´ı kladen´ych na dan´y syst´em. Kromˇe toho redukc´ı komplexnosti specifikace a anal´yzy lze omezit pouˇzit´e specifikaˇcn´ı jazyky tak, aby se zab´yvaly pouze ˇcasov´ymi z´avislostmi.
4.1
Specifikace a bezpeˇ
cnostn´ı tvrzen´ı
Aby bylo moˇzn´e dok´azat, ˇze syst´em splˇnuje urˇcit´a bezpeˇcnostn´ı krit´eria, je potˇreba identifi-kovat vztah specifikace syst´emu k bezpeˇcnostn´ımu tvrzen´ı, kter´e reprezentuje poˇzadovanou vlastnost syst´emu. Samozˇrejmˇe se pˇredpokl´ad´a, ˇze implementace syst´emu odpov´ıd´a pˇ red-loˇzen´e specifikaci. Ikdyˇz specifikace pomoc´ı popisu chov´an´ı neukazuje, jak dan´y syst´em zkonstruovat, nen´ı velk´y probl´em dok´azat, ˇze syst´em implementovan´y na z´akladˇe nˇejak´e strukturn´ı a funkˇcn´ı specifikace splˇnuje poˇzadovan´e chov´an´ı.
Jeden z n´asleduj´ıc´ıch tˇr´ı pˇr´ıpad˚u m˚uˇze b´yt v´ysledkem anal´yzy vztahu mezi specifikac´ı a bezpeˇcnostn´ım tvrzen´ım:
1. Bezpeˇcnostn´ı tvrzen´ı je teor´em odvoditeln´y ze specifikace, takˇze syst´em je bezpeˇcn´y vzhledem k chov´an´ı popsan´emu bezpeˇcnostn´ım tvrzen´ım.
2. Bezpeˇcnostn´ı tvrzen´ı je nesplniteln´e vzhledem ke specifikaci, takˇze syst´em je urˇcitˇe nebezpeˇcn´y, protoˇze specifikace zp˚usob´ı poruˇsen´ı bezpeˇcnostn´ıho tvrzen´ı.
3. Bezpeˇcnostn´ı tvrzen´ı je splniteln´e za urˇcit´ych podm´ınek, je tedy nutn´e pˇridat dalˇs´ı omezen´ı syst´emu pro zaruˇcen´ı bezpeˇcnosti.
Specifikace a bezpeˇcnostn´ı tvrzen´ı mohou b´yt zapsan´e pomoc´ı jednoho z v´ıce speci-fikaˇcn´ıch jazyk˚u re´aln´eho ˇcasu. Volba jazyka urˇcuje, jak´e algoritmy mohou b´yt pouˇzity pro anal´yzu a verifikaci.
4.2
Model typu ud´
alost-akce
Model typu ud´alost-akce zachycuje datov´e z´avislosti a ˇcasov´e uspoˇr´ad´an´ı v´ypoˇcetn´ıch akc´ı, kter´e mus´ı b´yt provedeny jako odezvy na ud´alosti v syst´emech re´aln´eho ˇcasu. Skl´ad´a se ze ˇ
ctyˇr z´akladn´ıch prvk˚u:
• Akce - pl´anovateln´a jednotka pr´ace, m˚uˇze b´yt jednoduch´a nebo sloˇzen´a. Jednoduch´e akce jsou atomick´e, nemohou nebo nemus´ı b´yt rozdˇeleny na nˇekolik jednoduˇsˇs´ıch akc´ı pro potˇreby anal´yzy. Jejich vykon´an´ı spotˇrebuje omezen´e mnoˇzstv´ı ˇcasu. Sloˇzen´e akce jsou ˇc´asteˇcnˇe uspoˇr´adan´e jednoduch´e nebo sloˇzen´e akce. Stejn´a akce se m˚uˇze vysky-tovat v jedn´e sloˇzen´e akci i v´ıcekr´at. Rekurzivn´ı akce nebo cyklicky ˇretˇezen´e akce, kde jedna akce je podakc´ı sv´eho pˇredch˚udce v dan´em ˇretˇezu ´uloh, nejsou povoleny. Sekvenˇcn´ı proveden´ı dvou akc´ı se oznaˇcuje z´apisem A; B a vyjadˇruje, ˇze akce A je n´asledov´ana akc´ı B. Paraleln´ı proveden´ı dvou akc´ı je oznaˇcuje z´apisem A k B a vy-jadˇruje, ˇze akce A je provedena soubˇeˇznˇe s akc´ı B.
• Stavov´y predik´at - tvrzen´ı o stavu specifikovan´eho syst´emu.
• Ud´alost - ˇcasov´a znaˇcka oznaˇcuj´ıc´ı bod v ˇcase, kter´y je v´yznamn´y pro popis chov´an´ı syst´emu, existuj´ı ˇctyˇri typy ud´alost´ı:
– Extern´ı ud´alost - zp˚usobena ud´alost´ı mimo specifikovan´y syst´em. – Spouˇstˇec´ı ud´alost - oznaˇcuje poˇc´atek nˇejak´e akce.
– Koncov´a ud´alost - oznaˇcuje konec nˇejak´e akce.
– Pˇrechodov´a ud´alost - oznaˇcuje zmˇenu nˇejak´e vlastnosti syst´emu. • ˇCasov´e omezen´ı - tvrzen´ı o ´upln´em ˇcasov´an´ı ud´alost´ı v syst´emu.
4.3
Logika re´
aln´
eho ˇ
casu (RTL)
Z´apis specifikace podle modelu typu ud´alost-akce nen´ı ovˇsem vhodn´y, protoˇze tento po-pis je obt´ıˇznˇe zpracovateln´y poˇc´ıtaˇcem. Jako ˇreˇsen´ı totoho probl´emu byla vytvoˇrena lo-gika re´aln´eho ˇcasu (real-time logic) neboli RTL. RTL je logika 1. ˇr´adu speci´alnˇe rozˇs´ıˇren´a o moˇznosti zachycen´ı ˇcasov´ych poˇzadavk˚u specifikovan´eho syst´emu a pˇritom umoˇzˇnuj´ıc´ı jednoduch´e mechanick´e zpracov´an´ı t´eto specifikace.
RTL je zaloˇzena na modelu typu ud´alost-akce, ale je rozˇs´ıˇrena o nˇekolik nov´ych vlast-nost´ı jako funkce v´yskytu @, kter´a pˇriˇrazuje ˇcasov´e hodnoty v´yskyt˚um ud´alost´ı. Z´apis @(E, i) = x znamen´a, ˇze k i-t´emu v´yskytu ud´alosti E dojde v ˇcase x. RTL rozliˇsuje celkem tˇri typy konstant - akce, ud´alosti a cel´a ˇc´ısla. Akce jsou definov´any stejnˇe jako v modelu typu ud´alost-akce, aby se odliˇsily od promˇenn´ych pouˇz´ıvaj´ı se pro jejich z´apis velk´a p´ısmena. Subakce Bisloˇzen´e akce A se pot´e oznaˇcuje A.Bi. Ud´alosti slouˇz´ı jako ˇcasov´e znaˇcky a stejnˇe jako u modelu typu ud´alost-akce existuj´ı ˇctyˇri typy tˇechto ud´alost´ı:
• Spouˇstˇec´ı ud´alost oznaˇcuje zaˇc´atek dan´e akce a je uvozena znakem ↑ • Koncov´a ud´alost oznaˇcuje konec dan´e akce a je uvozena znakem ↓ • Pˇrechodov´a ud´alost oznaˇcuje zmˇenu urˇcit´e vlastnosti syst´emu • Extern´ı ud´alost je uvozena znakem Ω
Pro snaˇzˇs´ı pochopen´ı pˇredkl´adan´ych metod a postup˚u budou jednotliv´e kroky verifikace ilustrov´any na jednoduch´em pˇr´ıkladu ˇzelezniˇcn´ıho pˇrejezdu. Pˇrejezd obsahuje pouze jedinou kolej, v urˇcit´y ˇcas tedy m˚uˇze proj´ıˇzdˇet pouze jedin´y vlak. Cel´y syst´em se bude skl´adat z komponent vlaku, vlakov´eho senzoru, ovladaˇce z´avor a samotn´ych z´avor. ´Ukolem ovladaˇce z´avor je zajistit, aby v dobˇe pr˚ujezdu vlaku ˇzelezniˇcn´ım pˇrejezdem se na kˇr´ıˇzen´ı cesty a kolej´ı nevyskytovalo ˇz´adn´e auto. Pro zjednoduˇsen´ı situace lze pˇredpokl´adat, ˇze tento ´ukol je vˇzdy splnˇen, pokud jsou z´avory v dobˇe pr˚ujezdu vlaku sklopeny.
Specifikace syst´emu (SP) v pˇrirozen´em jazyce vypad´a n´asledovnˇe:
• Kdyˇz se vlak pˇribl´ıˇz´ı k vlakov´emu senzoru a je zachycen t´ımto senzorem, je zasl´an sign´al ovladaˇci z´avor, kter´y zaˇcne pomalu skl´apˇet z´avory pˇred ˇzelezniˇcn´ım pˇrejezdem. – Z´avora bude sklopena do 30 sekund od doby, kdy se vlak pˇribl´ıˇzil a byl zachycen
senzorem.
– Sklopen´ı z´avory trv´a alespoˇn 15 sekund.
Bezpeˇcnostn´ı tvrzen´ı (SA) v pˇrirozen´em jazyce lze pak vyj´adˇrit n´asledovnˇe:
• Pokud vlak potˇrebuje alespoˇn 45 sekund pro uraˇzen´ı cesty od senzoru k ˇzelezniˇcn´ımu pˇrejezdu a pr˚ujezd vlaku je dokonˇcen do 60 sekund od doby, kdy byl vlak zachycen senzorem, pak je zajiˇstˇeno, ˇze v dobˇe doraˇzen´ı vlaku k ˇzelezniˇcn´ımu pˇrejezdu jsou z´avory sklopeny a vlak opust´ı ˇzelezniˇcn´ı pˇrejezd bˇehem 45 sekund od doby, kdy bylo dokonˇceno skl´apˇen´ı z´avor.
Pro potˇreby poˇc´ıtaˇcov´eho zpracov´an´ı a verifikace je nyn´ı potˇreba pˇrev´est v´yˇse uvedenou specifikaci a bezpeˇcnostn´ı tvrzen´ı na z´apis v RTL.
Specifikace syst´emu v RTL:
∀x @(T rainApproach, x) ≤ @(↑ Downgate, x) ∧ @(↓ Downgate, x) ≤ @(T rainApproach, x) + 30 ∀y @(↑ Downgate, y) + 15 ≤ @(↓ Downgate, y) Bezpeˇcnostn´ı tvrzen´ı v RTL:
∀t∀u @(T rainApproach, t) + 45 ≤ @(Crossing, u) ∧ @(Crossing, u) < @(T rainApproach, t) + 60 →
@(↓ Downgate, t) ≤ @(Crossing, u) ∧ @(Crossing, u) ≤ @(↓ Downgate, t) + 45
Pro dok´az´an´ı, ˇze bezpeˇcnostn´ı tvrzen´ı je teor´em odvoditeln´y ze specifikace syst´emu, lze pouˇz´ıt existuj´ıc´ı metody pro dokazov´an´ı teor´em˚u. Ovˇsem z´apis v jazyce RTL nen´ı pro tyto metody pˇr´ıliˇs vhodn´y. Proto je potˇreba nejprve pˇrev´est RTL formule v´yˇse do diferenˇcn´ı logiky, kter´a je mnohem vhodnˇejˇs´ı a pˇrevod mezi tˇemito logikami je jednoduch´y a dobˇre automatizovateln´y. C´ılovou logikou zde bude celoˇc´ıseln´a diferenˇcn´ı logika (IDL) s neinter-pretovan´ymi funkcemi.
Specifikace syst´emu v diferenˇcn´ı logice:
∀y g1(y) + 15 ≤ g2(y) Bezpeˇcnostn´ı tvrzen´ı v diferenˇcn´ı logice:
∀t∀u f (t) + 45 ≤ h(u) ∧ h(u) < f (t) + 60 → g2(t) ≤ h(u) ∧ h(u) ≤ g2(t) + 45
V tˇechto formul´ıch, t, u, x a y jsou promˇenn´e a f , g1, g2 a h jsou neinterpretovan´e celoˇc´ıseln´e funkce. f odpov´ıd´a funkci v´yskytu ud´alosti T rainApproach, g1 odpov´ıd´a funkci v´yskytu oznaˇcuj´ıc´ı poˇc´atek akce Downgate, g2 odpov´ıd´a funkci v´yskytu oznaˇcuj´ıc´ı konec akce Downgate a h odpov´ıd´a funci v´yskytu ud´alosti Crossing.
Probl´em zjiˇstˇen´ı, zda bezpeˇcnostn´ı tvrzen´ı vypl´yv´a ze specifikace syst´emu je obecnˇe nerozhodnuteln´y pro celkovou mnoˇzinu RTL formul´ı, takˇze n´e vˇzdy lze naj´ıt ˇreˇsen´ı. Pro specifickou podmnoˇzinu RTL formul´ı je ale tento probl´em rozhodnuteln´y, ovˇsem ˇreˇsen´ı m´a exponenci´aln´ı sloˇzitost.
Existuje nˇekolik zp˚usob˚u, jak lze zv´yˇsit efektivitu ˇreˇsen´ı. Prvn´ım zp˚usobem je pouˇzit´ı aproximace pro z´ısk´an´ı jednoduˇsˇs´ı mnoˇziny specifikace syst´emu a bezpeˇcnost´ıch tvrzen´ı. Druh´ym zp˚usobem je zamˇeˇren´ı anal´yzy pouze na ˇc´ast specifikace syst´emu, kter´a se t´yk´a nebo m˚uˇze ovlivnit platnost bezpeˇcnostn´ıho tvrzen´ı. Tˇret´ım zp˚usobem je omezen´ı speci-fikaˇcn´ıho jazyka tak, ˇze bude m´enˇe obecn´y, ale m˚uˇze b´yt pouˇzita efektivnˇejˇs´ı anal´yza.
4.4
Omezen´
e RTL formule
Jedna tˇr´ıda omezen´ych RTL formul´ı vych´az´ı ze skuteˇcnosti, ˇze ve specifikaci mnoha syst´em˚u re´aln´eho ˇcasu:
1. se RTL formule skl´adaj´ı z aritmetick´ych nerovnost´ı zahrnuj´ıc´ıch dva termy a celoˇ c´ı-selnou konstantu, kde term m˚uˇze b´yt bud’ promˇenn´a nebo funkce
2. RTL formule neobsahuj´ı aritmetick´e v´yrazy obsahuj´ıc´ı funkce, kter´e berou jako argu-ment instanci sebe sama
Takov´ato tˇr´ıda omezen´ych RTL formul´ı umoˇzˇnuje potenci´aln´ı vyuˇzit´ı pˇr´ıstup˚u zn´am´ych z teorie graf˚u pro jejich anal´yzu. Napˇr´ıklad lze vyuˇz´ıt algoritmus hled´an´ı nejkratˇs´ı cesty z urˇcit´eho bodu do vˇsech ostatn´ıch a ˇreˇsit jednoduch´y probl´em celoˇc´ıseln´eho programov´an´ı, kde kaˇzd´a nerovnost je ve tvaru xi−xj ≤ ±aij kde xia xj jsou promˇenn´e a aij je celoˇc´ıseln´a konstanta. Nebo lze vyuˇz´ıt grafu omezen´ı pro reprezentaci mnoˇziny nerovnost´ı. Kaˇzd´a promˇenn´a bude pot´e reprezentovat uzel v grafu a nerovnost xi ± aij ≤ xj bude reprezen-tovat orientovanou hranu s v´ahou aij jdouc´ı z uzlu xi do uzlu xj. Pot´e mnoˇzina nerovnost´ı reprezentov´ana takov´ymto grafem je nesplniteln´a, pr´avˇe tehdy kdyˇz existuje v grafu cyklus kladnou celkovou v´ahou.
Na z´akladˇe pˇredchoz´ıch pozorov´an´ı je tedy potˇreba omezit RTL formule tak, aby obsa-hovaly aritmetick´e nerovnosti v n´asleduj´ıc´ı formˇe:
f unkce v ´yskytu ± celoˇc´ıseln´a konstanta ≤ f unkce v ´yskytu
kdy formule @(E1, i) ± I < @(E2, j) lze zapsat jako @(E1, i) ± I + 1 ≤ @(E2, j) a formule ¬(@(E1, i) ± I ≤ @(E2, j)) lze zapsat jako @(E2, j) ± I + 1 ≤ @(E1, i).
Vˇsechny formule, kter´e se vyskytuj´ı v dˇr´ıve uveden´em pˇr´ıkladˇe, splˇnuj´ı v´yˇse popsan´a omezen´ı a patˇr´ı tedy do definovan´e tˇr´ıdy omezen´ych RTL formul´ı. Ovˇsem napˇr´ıklad formule
kter´a se nevyskytuje v pˇredchoz´ım pˇr´ıkladˇe, nepatˇr´ı do t´eto tˇr´ıdy omezen´ych RTL formul´ı, protoˇze prvn´ı argument nerovnosti ≤ je sumou funkce a promˇenn´e.
Aby bylo moˇzn´e sestrojit graf omezen´ı, kter´y umoˇzn´ı anal´yzu ˇreˇsen´eho probl´emu, je nej-prve potˇreba transformovat RTL formuli F na odpov´ıdaj´ıc´ı formuli F0 v diferenˇcn´ı logice1.
Kaˇzd´a funkce v´yskytu @(E, i) je nahrazena funkc´ı fE(i) kde E je ud´alost a i je ˇc´ıslo nebo promˇenn´a. D´ale je nutn´e pˇrev´est formuli F0 na formuli F00 v klauz´aln´ı formˇe. V´ysledn´a formule F00 je pak ve formˇe
C1∧ C2∧ . . . ∧ Cn−1∧ Cn kde Ci pro i = 1..n je disjunktn´ı klauzule ve tvaru
L1∨ L2∨ . . . ∨ Lm−1∨ Lm
a Lj pro j = 1..m je liter´al ve tvaru
v1± I ≤ v2
kde v1 a v2 jsou neinterpretovan´e celoˇc´ıseln´e funkce odpov´ıdaj´ıc´ı funkc´ım v´yskytu a I je celoˇc´ıseln´a konstanta.
Pokud jsou k dispozici specifikace syst´emu SP a bezpeˇcnostn´ı tvrzen´ı SA vyj´adˇren´e pomoc´ı omezen´ych RTL formul´ı, zb´yv´a dok´azat, ˇze SA je teor´em odvoditeln´y z SP , tedy ovˇeˇrit validitu v´yroku SP → SA. Ovˇeˇrov´an´ı validity formul´ı u logik 1. ˇr´ad˚u je ˇcasto pro-blematick´e, lze ovˇsem vyuˇz´ıt dualitu validity a splnitelnosti uvedenou v kapitole 3.2.1.1. Ovˇeˇren´ı validity formule SP → SA lze pak jednoduˇse pˇrev´est na odpov´ıdaj´ıc´ı probl´em ovˇeˇren´ı nesplnitelnosti formule ¬(SP → SA). Protoˇze formule SP → SA lze zapsat jako ¬SP ∨ SA, staˇc´ı tedy dok´azat, ˇze jej´ı negace, formule SP ∧ ¬SA, je nesplniteln´a. Proces verifikace se tedy m´ısto potvrzen´ı platnosti bezpeˇcnostn´ıho tvrzen´ı bude snaˇzit vyvr´atit jeho opak.
Pro vˇetˇs´ı n´azornost pˇredloˇzen´ych postup˚u a ´uprav budou jednotliv´e kroky demon-strov´any na pˇr´ıkladˇe d´ale. Ten bude navazovat na pˇr´ıklad z minul´e kapitoly, jehoˇz v´ysledkem byl z´apis specifikace syst´emu a bezpeˇcnostn´ıho pravidla ve formˇe RTL formul´ı. Nyn´ı je potˇreba pˇrev´est tyto formule do klauz´aln´ıho tvaru, kter´y nav´ıc splˇnuje podm´ınky a ome-zen´ı prob´ıran´e v t´eto kapitole.
Specifikace syst´emu je vetˇsinou tvoˇrena celou mnoˇzinou formul´ı, kter´e popisuj´ı jeho chov´an´ı. Vˇsechny tyto formule samozˇrejmˇe mus´ı platit z´aroveˇn, specifikaci cel´eho syst´emu lze tedy popsat jedinou formul´ı, kter´a vznikne konjunkc´ı vˇsech formul´ı z t´eto mnoˇziny. Specifikace syst´emu v pˇr´ıkladˇe z pˇredchoz´ı kapitoly obsahuje pouze dvˇe formule, v´ysledn´a formule popisuj´ıc´ı cel´y syst´em bude vypadat n´asledovnˇe:
f (x) ≤ g1(x) ∧ g2(x) ≤ f (x) + 30 ∧ g1(y) + 15 ≤ g2(y)
Je patrn´e, ˇze tato formule je jiˇz v klauz´aln´ı formˇe, tedy v tomto ohledu jiˇz nejsou potˇreba ˇ
z´adn´e ´upravy. Ovˇsem druh´a klauzule st´ale nesplˇnuje omezen´ı kladen´e na tvar aritmetick´e nerovnosti klauzul´ı. Je tedy potˇreba prov´est jej´ı ´upravu. Prvn´ı klauzule tvar aritmetick´e nerovnosti splˇnuje, hodnota celoˇc´ıseln´e konstanty je zde jednoduˇse 0, ekvivalentnˇe by mohla b´yt zaps´ana ve tvaru f (x) + 0 ≤ g1(x), coˇz odpov´ıd´a poˇzadavk˚um. V´ysledn´a upraven´a formule se bude skl´adat celkem ze tˇr´ı klauzul´ı:
f (x) ≤ g1(x) 1
g2(x) − 30 ≤ f (x) g1(y) + 15 ≤ g2(y)
Bezpeˇcnostn´ı tvzen´ı je vyj´adˇreno vˇzdy jedinou, ˇcasto sloˇzitˇejˇs´ı, formul´ı. Ikdyˇz nic neb-r´an´ı existenci v´ıce samostatn´ych bezpeˇcnostn´ıch tvrzen´ı, z pohledu anal´yzy se neprov´ad´ı ovˇeˇrov´an´ı vˇsech tˇechto tvrzen´ı z´aroveˇn. Je sice moˇzn´e slouˇcit tato tvrzen´ı do jedin´e formule, jak se to dˇel´a u specifikace syst´emu, z hlediska efektivity a pamˇet’ov´e n´aroˇcnosti je ovˇsem v´yhodnˇejˇs´ı ovˇeˇrovat kaˇzd´e tvrzen´ı samostatnˇe. Protoˇze popsan´a verifikace se snaˇz´ı vyvr´atit opak bezpeˇcnostn´ıho tvrzen´ı, pracuje se d´ale s negac´ı tohoto tvrzen´ı, coˇz je formule
¬(∀t∀u f (t) + 45 ≤ h(u) ∧ h(u) < f (t) + 60 → g2(t) ≤ h(u) ∧ h(u) ≤ g2(t) + 45)
Tato formule obsahuje implikaci, takˇze urˇcite nen´ı v klauz´aln´ı formˇe. Nejprve je tedy potˇreba pˇrev´est formuli do t´eto formy. Po odstranˇen´ı implikace vznikne formule
¬(∀t∀u ¬(f (t) + 45 ≤ h(u) ∧ h(u) < f (t) + 60) ∨ (g2(t) ≤ h(u) ∧ h(u) ≤ g2(t) + 45))
Po proveden´ı negac´ı z˚ustane formule
∃t∃u (f (t) + 45 ≤ h(u) ∧ h(u) < f (t) + 60) ∧ (h(u) < g2(t) ∨ g2(t) + 45 < h(u))
Pro koneˇcn´e pˇreveden´ı formule do klauz´aln´ı formy je tˇreba eliminovat existenˇcn´ı kvan-tifik´atory, coˇz lze jednoduˇse prov´est pomoc´ı skolemizace uveden´e v kapitole 3.2.1.2, kde promˇenn´e t a u budou nahrazeny skolemov´ymi konstantami T a U . V´ysledn´a formule
f (T ) + 45 ≤ h(U ) ∧ h(U ) < f (T ) + 60 ∧ (h(U ) < g2(T ) ∨ g2(T ) + 45 < h(U ))
je jiˇz formul´ı v klauz´aln´ı formˇe, ovˇsem nˇekter´e klauzule opˇet nesplˇnuj´ı omezen´ı tvaru aritme-tick´e nerovnosti. Po patˇriˇcn´ych ´uprav´ach obsahuje v´ysledn´a formule tˇri n´asleduj´ıc´ı klauzule:
f (T ) + 45 ≤ h(U ) h(U ) − 59 ≤ f (T )
h(U ) + 1 ≤ g2(T ) ∨ g2(T ) + 46 ≤ h(U )
Tyto klauzuje jiˇz splˇnuj´ı veˇsker´a omezen´ı. Specifikace syst´emu i bezpeˇcnostn´ı tvrzen´ı jsou tedy nyn´ı ve tvaru, kter´y je potˇrebn´y pro konstrukci grafu omezen´ı.
4.5
Graf omezen´ı
Algoritmus konstrukce grafu omezen´ı vyˇzaduje, aby formule zahrnuj´ıc´ı specifikaci syst´emu a bezpeˇcnostn´ı tvrzen´ı splˇnovaly poˇzadavky uveden´e v kapitole 4.4. Pro kaˇzd´y liter´al ve tvaru v1± I ≤ v2 se pot´e zkonstruuje uzel oznaˇcen´y v1, uzel oznaˇcen´y v2 a hrana hv1, v2i s v´ahou ±I smˇeˇruj´ıc´ı z uzlu v1 do uzlu v2. Algoritmus pro konstrukci grafu omezen´ı je n´asleduj´ıc´ı:
Vstup: Mnoˇzina klauzul´ı S V´ystup: Graf omezen´ı G Metoda:
• Pro kaˇzdou klauzuli Ci∈ S, pro kaˇzd´y liter´al Lj ∈ Ci, kde Lj je ve tvaru v1± I ≤ v2:
1. Najdi shluk s funkˇcn´ım symbolem termu v1. Pokud takov´yto shluk neexistuje, vytvoˇr nov´y.
2. Najdi uzel oznaˇcen´y v1 ve shluku nalezen´em nebo vytvoˇren´em v bodˇe 1. Pokud takov´yto uzel neexistuje, pˇridej uzel oznaˇcen´y v1 do tohoto shluku.
3. Opakuj body 1 a 2 pro term v2.
4. Vytvoˇr orientovanou hranu hv1, v2i s v´ahou ±I jdouc´ı z uzlu v1 do uzlu v2.
Mnoˇzina klauzul´ı, kterou vyuˇz´ıv´a algoritmus, se odv´ıj´ı od zp˚usobu ovˇeˇrov´an´ı platnosti bezpeˇcnostn´ıho tvrzen´ı. Zde se vyuˇz´ıv´a pˇr´ıstup vyvr´acen´ı platnosti opaku tohoto tvrzen´ı, tedy ovˇeˇren´ı platnosti formule F00 = SP ∧ ¬SA. Mnoˇzina klauzul´ı v tomto pˇr´ıpadˇe bude tedy obsahovat klauzule obsaˇzen´e ve formuli SP a znegovan´e formuli SA. Na obr´azku 4.1
je zobrazen graf omezen´ı pro prob´ıran´y pˇr´ıklad.
f(x) f(T) g2(x) g1(x) g2(T) h(U) shluk f shluk g2 0 15 1 46 45 -59 30
Obr´azek 4.1: Graf omezen´ı
4.6
Ovˇ
eˇ
ren´ı nesplnitelnosti
Pro ovˇeˇren´ı nesplnitelnosti formule F00lze nyn´ı vyuˇz´ıt zkonstruovan´y graf omezen´ı G, kter´y tuto formuli reprezentuje. D˚ukaz nesplnitelnosti formule F00 se prov´ad´ı pomoc´ı identifikace kladn´ych cykl˚u v grafu G. Pro nalezen´ı tˇechto cykl˚u je potˇreba nejprve definovat proces unifikace a pojmy cesta a cyklus v tomto typu grafu.
Unifikace: Unifikac´ı vi a vi0 se oznaˇcuje pˇr´ıpad, kdy existuje substituce σ takov´a, ˇze viσ = vi0σ, kde viσ a vi0σ jsou termy vznikl´e aplikac´ı substituce σ na vi a vi0.
Cesta: Cestou z uzlu v0 do uzlu vn v grafu G se oznaˇcuje sekvence hran
pro kterou plat´ı, ˇze existuje substituce σ, pomoc´ı n´ıˇz lze prov´est p´arovou unifikaci vi a v0i pro vˇsechna 1 ≤ i < n. Tedy pro kaˇzd´y p´ar vi a v0i, kde 1 ≤ i < n, mus´ı platit, ˇze uzly vi a vi0 jsou totoˇzn´e nebo se n´ach´azej´ı ve stejn´em shluku.
Cyklus: Cyklem v grafu G se oznaˇcuje sekvence hran
hv0, v1i, hv10, v2i, hv02, v3i, . . . , hvn−20 , vn−1i, hv0n−1, vni
kter´a je cestou vytvoˇrenou na z´akladˇe substituce σ a z´aroveˇn lze pomoc´ı t´eto substituce σ prov´est unifikaci v0 a vn. Opˇet mus´ı platit, ˇze uzly v0 a vn jsou totoˇzn´e nebo se n´ach´azej´ı ve stejn´em shluku. Cyklus je tedy jednoduˇse cesta, pro kterou lze unifikovat jej´ı poˇc´ateˇcn´ı a koncov´y uzel. V´aha cesty nebo cyklu je pot´e definov´ana jako suma vˇsech vah hran, kter´e tato cesta nebo cyklus obsahuj´ı.
Nyn´ı lze jiˇz dok´azat, ˇze pokud existuje v grafu G, kter´y odpov´ıd´a formuli F00, pozi-tivn´ı cyklus, pak formule, kter´a je sloˇzena s konjunkc´ı liter´al˚u odpov´ıdaj´ıc´ıch jednotliv´ym hran´ach v tomto cyklu, je nesplniteln´a. Aplikov´an´ım substituce σ na kaˇzd´y liter´al (nerov-nost) Li v cyklu, tedy na formuli tvaru:
v0σ + I0 ≤ v1σ ∧ v01σ + I1 ≤ v2σ ∧ .. . vn−20 σ + In−2 ≤ vn−1σ ∧ v0n−1σ + In−1≤ vnσ a slouˇcen´ım tˇechto nerovnost´ı vznikne formule
I0+ I1+ . . . + In−1+ In≤ 0
kter´a je oˇcividnˇe nesplniteln´a, protoˇze souˇcet I0+I1+. . .+In−1+Inje suma vah jednotliv´ych hran cyklu, a tato suma u kladn´eho cyklu nem˚uˇze b´yt menˇs´ı ani rovna nule. Nesplnitelnost t´eto nerovnosti znamen´a, ˇze tak´e p˚uvodn´ı RTL nerovnosti, odpov´ıdaj´ıc´ı tˇemto hran´am, jsou nesplniteln´e.
4.7
Prohled´
avac´ı strom
Pokud kaˇzd´a hrana kladn´eho cyklu odpov´ıd´a liter´alu, kter´y n´aleˇz´ı jednotkov´e klauzuli, tedy klauzule je tvoˇrena pouze t´ımto liter´alem, pak mus´ı b´yt formule F00 nesplniteln´a a bezpeˇcnostn´ı tvrzen´ı SA odvoditeln´e ze specifikace syst´emu SP . Ovˇsem pokud hrana v nˇejak´em cyklu odpov´ıd´a liter´alu, kter´y je souˇc´ast´ı nejednotkov´e klauzule, je potˇreba uk´azat, ˇze zbyl´e liter´aly t´eto klauzule odpov´ıdaj´ı hran´am z jin´ych kladn´ych cykl˚u. Potˇreba tohoto d˚ukazu jednoduˇse plyne z faktu, ˇze klauzule jsou disjunktn´ı, takˇze pro dok´az´an´ı nesplnitelnosti cel´e klauzule je potˇreba uk´az´at, ˇze vˇsechny jej´ı liter´aly (disjunkty) jsou ne-splniteln´e. Napˇr´ıklad negace bezpeˇcnostn´ıho tvrzen´ı obsahuje klauzuli
h(U ) + 1 ≤ g2(T ) ∨ g2(T ) + 46 ≤ h(U )
Jestliˇze existuje pozitivn´ı cyklus obsahuj´ıc´ı hranu odpov´ıdaj´ıc´ı nerovnosti h(U )+1 ≤ g2(T ), pak je nav´ıc potˇreba uk´az´at, ˇze existuje jin´y kladn´y cyklus, kter´y obsahuje hranu od-pov´ıdaj´ıc´ı nerovnosti g2(T ) + 46 ≤ h(U ).
Samozˇrejmˇe, ˇze s poˇctem hran pozitivn´ıch cykl˚u, jejichˇz odpov´ıdaj´ıc´ı liter´aly n´aleˇz´ı nejednotkov´ym klauzul´ım, roste kombinatoricky tak´e potˇreba identifikace dalˇs´ıch kladn´ych cykl˚u. Probl´em ovˇeˇren´ı nesplnitelnosti F00 je N P -´upln´y. Z d˚uvodu sloˇzitosti ˇreˇsen´ı tohoto probl´emu je d˚uleˇzit´e proces verifikace maxim´alnˇe zefektivnit.
Jeden z algoritm˚u, kter´y efektivnˇeji ˇreˇs´ı popsan´y probl´em, vyuˇz´ıv´a tzv. prohled´avac´ıho stromu. Tento algoritmus vych´az´ı z n´asleduj´ıc´ıch pozorov´an´ı. Mˇejme formuli F00 v kon-junktn´ı formˇe, tedy ve tvaru
C1∧ C2∧ . . . ∧ Cn−1∧ Cn
kde kaˇzd´a klauzule Ci, i = 1..n, je v disjunktn´ı formˇe, tedy ve tvaru
Lk,1∨ Lk,2∨ . . . ∨ Lk,mk−1∨ Lk,mk
kde liter´aly v ruzn´ych klauzul´ıch mohou b´yt stejn´e. Z´apis Xi,1, Xi,2, . . . , Xi,ni−1, Xi,ni
bude oznaˇcovat nerovnosti odpov´ıdaj´ıc´ı hran´am v i-t´em kladn´em cyklu grafu G, kde Xi,j je liter´al odpov´ıdaj´ıc´ı j-t´e hranˇe v i-t´em kladn´em cyklu a kaˇzd´a nerovnost Xi,j se vyskytuje alespoˇn v jedn´e klauzuli Ck. Necht’
Pi= Xi,1∧ Xi,2∧ . . . ∧ Xi,ni−1∧ Xi,ni
Z kapitoly 4.6 je jiˇz zn´amo, ˇze formule Pi je nesplniteln´a. Pak F00 je ale splniteln´a pr´avˇe tehdy kdyˇz F00∧¬Pi je splniteln´a. Ve vysledku je tedy existence kladn´eho cyklu ekvivalentn´ı pˇrid´an´ı klauzule
¬Pi = ¬Xi,1∨ ¬Xi,2∨ . . . ∨ ¬Xi,ni−1∨ ¬Xi,ni
do formule F00, coˇz procesu verifikace umoˇzˇnuje vyuˇz´ıt nav´ıc klauzuli ¬Pi pˇri ovˇeˇrov´an´ı nesplnitelnosti F00.
Protoˇze popis algoritmu ve formˇe form´aln´ıho z´apisu ˇci pseudok´odu nen´ı pˇr´ıliˇs srozumi-teln´y, bude jeho ˇcinnost pops´ana n´azornˇe na praktick´em pˇr´ıkladˇe. Pro vˇetˇs´ı pˇrehlednost konstruovan´eho prohled´avac´ıho stromu se nejprve pˇriˇrad´ı kaˇzd´emu liter´alu z mnoˇziny klau-zul´ı S formule F00 p´ısmeno abecedy, kter´e bude tento liter´al reprezentovat. Odpov´ıdaj´ıc´ı pˇriˇrazen´ı jsou n´asleduj´ıc´ı:
A = f (x) ≤ g1(x) B = g2(x) − 30 ≤ f (x) C = g1(y) + 15 ≤ g2(y) D = f (T ) + 45 ≤ h(U ) E = h(U ) − 59 ≤ f (T ) F ∨ G = h(U ) + 1 ≤ g2(T ) ∨ g2(T ) + 46 ≤ h(U )
Pot´e je potˇreba vytvoˇrit klauzule ¬Pi reprezentuj´ıc´ı kladn´e cykly v grafu G, kter´e budou pˇrid´any ke klauzul´ım formule F00, mnoˇzina SC tˇechto klauzul´ı obsahuje:
¬F ∨ ¬G ¬B ∨ ¬D ∨ ¬F ¬A ∨ ¬C ∨ ¬G ∨ ¬E
Algoritmus n´aslednˇe vytv´aˇr´ı prohled´avac´ı stromu s vyuˇzit´ım klauzul´ı z mnoˇziny SC a pˇri jeho konstrukci ovˇeˇruje nesplnitelnost klauzul´ı z mnoˇzin S a SC. Kaˇzd´a nov´a ´uroveˇn tvoˇren´eho stromu je v´ysledkem anal´yzy dalˇs´ı klauzule z mnoˇziny SC, tedy anal´yzy dalˇs´ıho kladn´eho cyklu v grafu G. kaˇzd´y uzel stromu je bud’ samostatn´y liter´al nˇejak´e klauzule z mnoˇziny SC nebo konjunkce liter´al˚u z r˚uzn´ych klauzul´ı mnoˇziny SC. Na obr´azku 4.2 je nejhorˇs´ı pˇr´ıpad vytvoˇren´eho prohl´edavac´ıho stromu ilustrovan´eho pˇr´ıkladu, kde jsou pro-zkoum´any vˇsechny konjunkce jednotliv´ych liter´al˚u. Prvn´ı ´uroveˇn stromu je tvoˇrena od-pov´ıdaj´ıc´ımi liter´aly prvn´ı klauzule z mnoˇzity SC, tedy liter´aly ¬F a ¬G. Pro vytvoˇren´ı dalˇs´ı ´urovnˇe se pˇridaj´ı ke vˇsem uzl˚um aktu´aln´ı ´urovnˇe liter´aly dalˇs´ı, jeˇstˇe neanalyzovan´e, klauzule. V tomto pˇr´ıpadˇe se pˇridaj´ı liter´aly druh´e klauzule, tedy liter´aly ¬B, ¬D a ¬F . Tento postup se opakuje, dokud se neanalyzuj´ı vˇsechny klauzule z mnoˇziny SC, tedy veˇsker´e kladn´e cykly. Z obr´azku 4.2 je patrn´e, ˇze strom nar˚ust´a exponenci´alnˇe s poˇctem klauzul´ı mnoˇziny SC. Naˇstˇest´ı v praxi nen´ı potˇreba velk´e mnoˇzstv´ı uzl˚u v˚ubec analyzovat, tedy ani vytv´aˇret. Metody pro redukci stavov´eho prostoru budou obsahem dalˇs´ı kapitoly.
Pro d˚ukaz, ˇze konjunkce klauzul´ı z mnoˇzin S a SC, tedy formule F00, je nesplniteln´a, je potˇreba uk´az´at, ˇze kaˇzd´y listov´y uzel stromu splˇnuje jednu z n´asleduj´ıc´ıch podm´ınek:
1. Konjunkce liter´al˚u listov´eho uzlu a alespoˇn jedn´e klauzule z mnoˇziny S je nesplniteln´a, tedy nab´yv´a ohodnocen´ı f alse.
2. Konjunkce liter´al˚u listov´eho uzlu je sama nesplniteln´a.
Prvn´ı podm´ınka vych´az´ı z jednoduch´e logick´e ´uvahy. Pokud existuje formule Ck∧ ¬Ck, kde Ck je klauzule z mnoˇziny S a ¬Ck je konjunkc´ı liter´al˚u v listov´em uzlu stromu, tedy formule je ve tvaru
(Lk,1∨ Lk,2∨ . . . ∨ Lk,mk−1∨ Lk,mk) ∧ (¬Lk,1∧ ¬Lk,2∧ . . . ∧ ¬Lk,mk−1∧ ¬Lk,mk)
pak je tato formule vˇzdy nesplniteln´a. Staˇc´ı tedy jednoduˇse uk´azat, ˇze nˇekter´y z liter´al˚u Liv klauzuli ¬Ckje nesplniteln´y, tedy ˇze existuje komplement´arn´ı liter´al ¬Li, kter´y je vˇzdy splniteln´y. Napˇr´ıklad nesplnitelnost prvn´ıho listov´eho uzlu v prob´ıran´em pˇrikladˇe obsahuj´ıc´ı konjunkci ¬F ∧ ¬B ∧ ¬A m˚uˇze b´yt dok´az´ana pomoc´ı jedn´e z klauzul´ı A nebo B z mnoˇziny S. Obˇe tyto klauzule obsahuj´ı jedin´y liter´al, kter´y tedy mus´ı b´yt vˇzdy splnˇen, z´aroveˇn ale m´a b´yt splnˇen i v´yraz v listov´em uzlu, kter´y vyˇzaduje platnost opaku obou tˇechto liter´al˚u. Konjunkce listov´eho uzlu s jednou z tˇechto klauzul´ı, tedy napˇr. A ∧ (¬F ∧ ¬B ∧ ¬A), je tedy urˇcitˇe nesplniteln´a. Protoˇze pro kaˇzd´y listov´y uzel lze naj´ıt alespoˇn jednu klauzuli z mnoˇziny S, kter´a dok´aˇze jeho nesplnitelnost, lze ˇr´ıci, ˇze klauzule z mnoˇzin S a SC jsou nesplniteln´e, a tedy i formule F00 je nesplniteln´a.
4.8
Optimalizace
Jak jiˇz bylo ˇreˇceno v pˇredchoz´ı kapitole, v nejhorˇs´ım pˇr´ıpadˇe je prohled´avac´ı strom vytvoˇren anal´yzou vˇsech kladn´ych cykl˚u. ˇCasov´a sloˇzitost tohoto algoritmu je bohuˇzel exponenci´aln´ı s ohledem na poˇcet kladn´ych cykl˚u. Pokud graf omezen´ı G obsahuje celkem n kladn´ych cykl˚u a kaˇzd´y cyklus obsahuje m hran, pak mnoˇzina SC obsahuje celkem n klauzul´ı, kde kaˇzd´a klauzule je disjunkc´ı m liter´al˚u. Pak prohled´avac´ı strom vytvoˇren´y z t´eto mnoˇziny klauzul´ı bude obsahovat celkem mnlistov´ych uzl˚u, kter´e, v nejhorˇs´ım pˇr´ıpadˇe, bude potˇreba vˇsechny ovˇeˇrit. Ikdyˇz je v´ypoˇcetn´ı sloˇzitost algoritmu exponenci´aln´ı, existuj´ı r˚uzn´e moˇznosti optimalizace, kter´e ˇcasto v´yraznˇe redukuj´ı velikost stavov´eho prostoru, tedy poˇcet uzl˚u stromu, a t´ım i ˇcasovou n´aroˇcnost ovˇeˇrov´an´ı.
¬F ¬G ¬F ∧ ¬B ¬F ∧ ¬D ¬F ¬G ∧ ¬B ¬G ∧ ¬D ¬G ∧ ¬F ¬F ∧ ¬B ∧ ¬A ¬F ∧ ¬B ∧ ¬C ¬F ∧ ¬B ∧ ¬G ¬F ∧ ¬B ∧ ¬E ¬F ∧ ¬D ∧ ¬A ¬F ∧ ¬D ∧ ¬C ¬F ∧ ¬D ∧ ¬G ¬F ∧ ¬D ∧ ¬E ¬F ∧ ¬A ¬F ∧ ¬C ¬F ∧ ¬G ¬F ∧ ¬E ¬G ∧ ¬B ∧ ¬A ¬G ∧ ¬B ∧ ¬C ¬G ∧ ¬B ¬G ∧ ¬B ∧ ¬E ¬G ∧ ¬D ∧ ¬A ¬G ∧ ¬D ∧ ¬C ¬G ∧ ¬D ¬G ∧ ¬D ∧ ¬E ¬G ∧ ¬F ∧ ¬A ¬G ∧ ¬F ∧ ¬C ¬G ∧ ¬F ¬G ∧ ¬F ∧ ¬E J J J J J J J J J J , , , , , , , , l l l l l l l l , , , , , , , , l l l l l l l l ((((( hhhhh H H H HH (((( ( hhhhh H H H HH ((((( hhhhh H H H HH (((( ( hhhhh H H H HH (((( ( hhhhh H H H HH ((((( hhhhh H H H HH
¬B ¬D ¬F ¬F ¬F ∧ ¬G ¬F ∧ ¬A ¬F ∧ ¬C ¬F ∧ ¬G ¬F ∧ ¬E J J J J J J J J J J , , , , , , , , (((( ( hhhhh H H H HH
Obr´azek 4.3: Prohled´avac´ı strom pˇri pouˇzit´ı optimalizac´ı
Prvn´ı moˇznost´ı redukce prohled´avac´ıho stromu je zastaven´ı generov´an´ı nov´ych uzl˚u z uzlu, jeˇz s´am ˇcin´ı mnoˇzinu klauzul´ı S nesplnitelnou. Protoˇze uzly obsahuj´ı konjunkce negac´ı liter´al˚u, mus´ı b´yt pro celkovou platnost tohoto uzlu platn´e vˇsechny tyto liter´aly. Pokud se dok´aˇze neplatnost nˇekter´e negace liter´alu v uzlu, pak pˇrid´an´ım dalˇs´ıch liter´al˚u k tomuto uzlu, tedy vygenerov´an´ım synovsk´ych uzl˚u, budou tyto uzly opˇet nesplniteln´e, nem´a tedy smysl je v˚ubec generovat. Napˇr´ıklad synovsk´e uzly uzlu ¬F ∧ ¬B nen´ı potˇreba jiˇz generovat, protoˇze konjunkce tohoto uzlu s klauzul´ı B z mnoˇziny S je nesplniteln´a, tedy tento uzel jiˇz zneplatˇnuje mnoˇzinu S, vˇsechny synovsk´e uzly vygenerovan´e z tohoto uzlu by opˇet vyˇzadovaly platnost ¬F ∧ ¬B, kter´a urˇcitˇe nikdy nebude splnˇena.
Druhou moˇznost´ı optimalizace je pˇreskupen´ı poˇrad´ı anal´yzy klauzul´ı z mnoˇziny SC tak, aby bylo moˇzn´e aplikovat prvn´ı optimalizaci ˇc´ım jak nejdˇr´ıve. ˇC´ım bl´ıˇze koˇreni stromu se generov´an´ı uzl˚u zastav´ı, t´ım vˇetˇs´ı bude v´ysledn´a redukce tohoto stromu. Nev´yhodou t´eto op-timalizace je nutnost vyuˇzit´ı r˚uzn´ych heuristik, kter´e urˇc´ı poˇrad´ı anal´yzy klauzul´ı z mnoˇziny SC, nebo backtrackingu v pˇr´ıpadˇe zjiˇstˇen´ı, ˇze dan´e poˇrad´ı nevede k pˇr´ınosn´e redukci. V pˇredchoz´ım pˇr´ıkladˇe jiˇz zm´ınˇen´y uzel ¬F ∧¬B zp˚usoboval zneplatnˇen´ı mnoˇziny S, protoˇze jeho konjunkce s klauzul´ı B je nesplniteln´a. Je zˇrejm´e, ˇze liter´al ¬F jinak nepˇrisp´ıv´a k zne-platnˇen´ı mnoˇziny S. Je tedy moˇzn´e odloˇzit anal´yzu prvn´ı klauzule z mnoˇziny SC a pˇ rednost-nˇe zaˇc´ıt anal´yzou druh´e klauzule, kter´a v´ıce napom´ah´a ovˇeˇrov´an´ı neplatnosti. Pˇrehozen´ı poˇrad´ı anal´yzy prvn´ıch dvou klauzul´ı zp˚usob´ı, ˇze jiˇz na prvn´ı ´urovni stromu lze zastavit generov´an´ı synovsk´ych uzl˚u pro uzly ¬B a ¬D, protoˇze tyto uzly jiˇz zajiˇst’uj´ı nesplnitel-nost mnoˇziny S. Pouˇzit´ı obou zm´ınˇen´ych optimalizac´ı m´a za n´asledek v´yraznou redukci prohled´avac´ıho stromu do podoby na obr´azku4.3.
Tˇret´ı optimalizace vyuˇz´ıv´a dˇr´ıve vygenerovan´ych uzl˚u, kter´e jiˇz byly oznaˇceny jako nesplniteln´e. Tedy novˇe vygenerovan´y uzel v je nesplniteln´y, jestliˇze jiˇz nˇekdy dˇr´ıve byl vygenerov´an uzel oznaˇcen´y v. Napˇr´ıklad nejniˇzˇs´ı uzel ¬F ∧ ¬G ve stromu na obr´azku 4.3
se jiˇz nemus´ı ovˇeˇrovat, protoˇze tento stejn´y uzel byl jiˇz vygenerov´an a ovˇeˇren dˇr´ıve jako listov´y uzel.
Kapitola 5
N´
avrh n´
astroje pro verifikaci
Protoˇze metod verifikace je obecnˇe velk´e mnoˇzstv´ı a ˇrada metod m˚uˇze vyuˇz´ıvat r˚uzn´e optimalizace a heuristiky, je vhodn´e, aby byl n´astroj dobˇre rozˇsiˇriteln´y. Samozˇrejmˇe je d˚uleˇzit´e, aby samotn´y n´astroj byl rychl´y a efektivn´ı, ale pokud moˇzno jednoduch´y pro pouˇzit´ı. Na obr´azku 5.1 je zobrazen n´avrh blokov´eho sch´ematu n´astroje s pˇrihl´ednut´ım k v´yˇse uveden´ym z´akladn´ım poˇzadavk˚um.
GUI SettingsPH Search Tree VisualizerPH Constraint Graph VisualizerPH LogsPH OutputPH InputPH Observer
Settings Constraint Graph
Visualizer
Search Tree Visualizer Input Output Logs
Verifier CorePH07 CorePH08 CorePH06 CorePH05 CorePH04 CorePH03 CorePH02 CorePH01 Observer Core Formula Parser Constraint Graph Builder Formula Converter Search Tree Builder Optimalizator External Graphical Representation Observer Other Tool
Input Output Logs Settings
Obr´azek 5.1: Blokov´e sch´ema n´astroje
N´astroj se skl´ad´a ze dvou z´akladn´ıch ˇc´ast´ı, verifik´ator (Verifier ) a grafick´e uˇzivatelsk´e rozhran´ı (GUI ). Verifik´ator ˇreˇs´ı samotn´e ovˇeˇrov´an´ı vlastnost´ı syst´em˚u popsan´ych ve formˇe RTL formul´ı. Jako implementaˇcn´ı jazyk t´eto ˇc´asti lze pouˇz´ıt napˇr. jazyk C++, kter´y
umoˇzˇnuje celkem snadnou tvorbu i sloˇzitˇejˇs´ıch program˚u, zat´ımco si zachov´av´a sluˇsnou rychlost a efektivitu. Nav´ıc existuje pro tento jazyk ˇrada knihoven, kter´e mohou b´yt uˇziteˇ c-n´e, napˇr. knihovny pro vizualizaci graf˚u a strom˚u, nebo knihovny pro paralelizaci v´ypoˇct˚u. Jednotliv´e ˇc´asti procesu ovˇeˇrov´an´ı u metody popsan´e v kapitole 4 jsou zde zastoupeny ve formˇe modul˚u. Prvn´ı modul, Formula Parser, zajiˇst’uje zpracov´an´ı vstupn´ıch formul´ı a jejich pˇreveden´ı do intern´ı reprezentace. Druh´y modul, Formula Converter, pˇrev´ad´ı for-mule do diferenˇcn´ı logiky, kter´a je vyˇzadov´ana pro konstrukci grafu omezen´ı. Tˇret´ı modul, Constraint Graph Builder, vytv´aˇr´ı samotn´y graf omezen´ı. ˇCtvrt´y modul, Search Tree Buil-der, pak vytv´aˇr´ı prohled´avac´ı strom a prov´ad´ı ovˇeˇrov´an´ı jeho uzl˚u. Tento modul m˚uˇze nav´ıc vyuˇz´ıvat r˚uzn´e optimalizaˇcn´ı moduly. Nastaven´ı programu se m˚uˇze naˇc´ıtat napˇr. z extern´ıch XML soubor˚u. Verifik´ator lze spouˇstˇet jako samostatn´y program z pˇr´ıkazov´e ˇr´adky, ˇc´ımˇz poskytuje moˇznosti skriptov´an´ı a nez´avislost na grafick´ych rozhran´ıch.
Grafick´e uˇzivatelsk´e rozhran´ı slouˇz´ı k zjednoduˇsen´ı pouˇzit´ı verifik´atoru. Jako imple-mentaˇcn´ı jazyk lze pouˇz´ıt napˇr. jazyk Java, kter´y umoˇzˇnuje jednoduˇse vytvoˇrit uˇzivatelsk´e rozhran´ı, kter´e je snadno pˇrenositeln´e mezi r˚uzn´ymi operaˇcn´ımi syst´emy. Kromˇe ovl´ad´an´ı verifik´atoru, tedy nastaven´ı parametr˚u programu a zpracov´an´ı vstup˚u, v´ystup˚u a z´aznam˚u o ˇcinnosti, zde jsou i dalˇs´ı moduly. Modul Constraint Graph Visualizer slouˇz´ı k zobrazen´ı vytvoˇren´eho grafu omezen´ı a modul Search Tree Visualizer k zobrazen´ı prohled´avac´ıho stromu. Tyto moduly mohou b´yt uˇziteˇcn´e napˇr. pˇri kontrole spr´avnosti procesu ovˇeˇrov´an´ı nebo pro ilustraci ˇcinnosti ovˇeˇrovac´ı metody pro studijn´ı ´uˇcely.
Posledn´ı d˚uleˇzitou ˇc´ast´ı n´avrhu je zp˚usob komunikace. Komunikace mezi jednotliv´ymi moduly je celkem bezprobl´emov´a, jelikoˇz je to komunikace mezi ˇc´astmi implementovan´ymi ve stejn´em jazyce. Lze napˇr´ıklad vyuˇz´ıt rozhran´ı v jazyce Java a virtu´aln´ı metody v jazyce C++. Komunikace mezi samotn´ym verifik´atorem a grafick´ym uˇzivatelsk´ym rozhran´ım je jiˇz sloˇzitˇejˇs´ı. Jednou z moˇznost´ı, kter´a se zde nab´ız´ı, je vyuˇzit´ı syst´emu CORBA. CORBA poskytuje univerz´aln´ı rozhran´ı pro vol´an´ı metod objekt˚u, jej´ı implementace je k dispo-zici pro velkou ˇradu jazyk˚u, vˇcetnˇe jazyk˚u Java a C++. Umoˇzˇnuje tedy standardizovanou komunikaci nez´avislou na pouˇzit´em jazyce, coˇz je pˇresnˇe to, co je zde potˇreba. CORBA se vyuˇz´ıv´a hlavnˇe u distribuovan´ych aplikac´ı, kde ˇc´asti aplikace mohou b´yt situov´any na r˚uzn´ych poˇc´ıtaˇc´ıch. Tato vlasnost je zde tak´e pˇr´ınosn´a, protoˇze m˚uˇze b´yt velice v´yhodn´e, a ˇcasto i nezbytn´e, aby verifik´ator pracoval na jin´em stroji neˇz samotn´e grafick´e uˇzivatelsk´e rozhran´ı. Jednotliv´e ˇc´asti obsahuj´ı modul Observer, kter´y zajiˇst’uje realizaci komunikace a v pˇr´ıpadˇe grafick´eho uˇzivatelsk´eho rozhran´ı tak´e koordinuje komunikaci mezi jednotliv´ymi moduly, nav´ıc tento modul umoˇzˇnuje zprostˇredkov´an´ı komunikace s extern´ımi programy a t´ım jednoduch´e vyuˇzit´ı verifik´atoru dalˇs´ımi n´astroji.
Kapitola 6
Realizace n´
astroje pro verifikaci
Tato kapitola se zab´yv´a celkovou realizac´ı n´astroje pro verifikaci. N´astroj se skl´ad´a ze dvou celk˚u, z verifik´atoru, programu ovˇeˇruj´ıc´ıho zadan´e vlastnosti vloˇzen´eho syst´emu, a z gra-fick´eho rozhran´ı, aplikace, jenˇz slouˇz´ı pro snadnˇejˇs´ı a uˇzivatelsky pˇr´ıvˇetivˇejˇs´ı pouˇzit´ı ve-rifik´atoru. N´asleduj´ıc´ı podkapitoly popisuj´ı koneˇcn´y n´avrh obou tˇechto celk˚u a zab´yvaj´ı se ˇreˇsen´ım jednotliv´ych krok˚u verifikaˇcn´ıho procesu a dalˇs´ıch d˚uleˇzit´ych implementaˇcn´ıch probl´em˚u.
6.1
Implementaˇ
cn´ı prostˇ
red´ı
Vhodn´y v´ybˇer implementaˇcn´ıho prostˇred´ı v´yraznˇe ovlivˇnuje rychlost a efektivnost jak samotn´eho v´yvoje, tak i vytvoˇren´eho programu. Je tak´e d˚uleˇzit´e uvˇedomit si rozd´ıln´e poˇzadavky obou celk˚u n´astroje.
Z pohledu verifik´atoru je d˚uleˇzit´a hlavnˇe rychlost v´ypoˇctu, implementaˇcn´ı prostˇred´ı mus´ı tedy poskytovat vysokou rychlost a efektivitu, ale z´aroveˇn tak´e konstrukce na vyˇsˇs´ı ´
urovni abstrakce, aby byl ˇreˇsen´y probl´em zvl´adnuteln´y. Vˇsechny tyto poˇzadavky nejl´epe splˇnuje jazyk C++, kter´y byl tak´e vybr´an jako implementaˇcn´ı jazyk verifik´atoru. Jazyk C++ je objektovˇe orientovan´y programovac´ı jazyk umoˇzˇnuj´ıc´ı napˇr´ıklad polymorfismus, pˇretˇeˇzov´an´ı metod a oper´ator˚u nebo pouˇzit´ı vyj´ımek. Protoˇze jde o kompilovan´y jazyk, programy v tomto jazyce jsou velice v´ykonn´e, narozd´ıl od vyˇsˇs´ıch programovac´ıch jazyk˚u. Moˇznou nev´yhodou tohoto jazyka je vˇsak horˇs´ı pˇrenositelnost program˚u na jin´e architektury a operaˇcn´ı syst´emy. Tento probl´em lze ovˇsem vyˇreˇsit podm´ınˇen´ym pˇrekladem a z´ıskan´a rychlost a efektivita st´ale v´yraznˇe pˇrevyˇsuj´ı tuto, trochu nepˇr´ıjemnou, skuteˇcnost.
Grafick´e rozhran´ı si klade ´uplnˇe jin´e priority z hlediska potˇreb implementace. Jelikoˇz cel´y verifikaˇcn´ı proces vykon´av´a verifik´ator, grafick´e rozhran´ı v˚ubec nevyˇzaduje rychl´y a efek-tivn´ı chod. Nejd˚uleˇzitˇejˇs´ım poˇzadavkem je zde dobr´a pˇrenostitelnost aplikace. Tato apli-kace slouˇz´ı jako grafick´a n´adstavba nad verifik´atorem, jenˇz m´a za ´ukol pouze shromaˇzd’ovat vstupn´ı data, zjednoduˇsit konfiguraci a vhodnˇe interpretovat a zobrazovat data v´ystupn´ı. K tomuto ´uˇcelu lze s v´yhodou vyuˇz´ıt platforem .NET nebo Java. Obˇe platformy kompiluj´ı vytvoˇren´e programy pouze to speci´aln´ıho mezik´odu, kter´y n´aslednˇe interpretuj´ı. D˚usledkem je moˇznost spuˇstˇen´ı jiˇz zkompilovan´eho programu kdekoliv, kde je k dispozici dan´a plat-forma, tedy nez´avisle na architektuˇre nebo operaˇcn´ım syst´emu, na kter´ych tato platforma bˇeˇz´ı. Kromˇe t´eto nez´avislosti nav´ıc poskytuj´ı obˇe tyto platformy moˇznosti pro tvorbu grafick´eho uˇzivatelsk´eho rozhran´ı a obsahuj´ı velk´e mnoˇzstv´ı vestavˇen´ych knihoven. Ce-nou za veˇsker´e tyto v´yhody je v´yrazn´e zpomalen´ı chodu program˚u, k´od totiˇz mus´ı b´yt
interpretov´an. Nepom´ahaj´ı zde ani r˚uzn´e optimalizace za chodu, jenˇz tyto platformy ˇcasto prov´ad´ı a zvyˇsuj´ı tak rychlost interpretace. Jelikoˇz platforma .NET st´ale nen´ı pˇr´ıliˇs rozˇs´ıˇren´a v operaˇcn´ıch syst´emech jako je Linux, byla pro implementaci grafick´eho rozhran´ı zvolena platforma Java a jej´ı stejnojmenn´y jazyk.
6.2
Modularita
Protoˇze je implementovan´y program znaˇcnˇe rozs´ahl´y a sloˇzit´y je vhodn´e jej vystavˇet mo-dul´arnˇe. Modularitu lze pozorovat na dvou ´urovn´ıch:
• Intern´ı modularita programu - C´ılem je rozdˇelit vnitˇrn´ı strukturu programu na jednotliv´e ˇc´asti, kter´e se vyznaˇcuj´ı vysokou nez´avislost´ı. Zde jsou tyto ˇc´asti repre-zentovan´e subsyst´emy, kter´e pln´ı vˇzdy urˇcitou ´ulohu bez vˇetˇs´ı n´avaznosti na zbytek programu. V´yhodou je zjednoduˇsen´ı a zpˇrehlednˇen´ı k´odu a urˇcit´a centralizace speci-fick´ych sluˇzeb. Pˇri nutnosti modifikace jedn´e sluˇzby pak nehroz´ı nebezpeˇc´ı zavleˇcen´ı chyb do jin´ych ˇc´ast´ı programu. V pˇr´ıpadˇe potˇreby nov´e sluˇzby se jednoduˇse pˇrid´a nov´y subsyst´em a definuje se interakce tohoto subsyst´emu s ostatn´ımi ˇc´astmi pro-gramu, pokud je to potˇreba.
• Extern´ı modularita programu - C´ılem je zajistit jednoduchou rozˇsiˇritelnost pro-gramu bez nutnosti rekompilace nebo dokonce modifikace zdrojov´eho k´odu programu. Tato modularita je zajiˇstˇena z´asuvn´ymi moduly. Tyto moduly jsou reprezentov´any po-moc´ı dynamick´ych knihoven, sd´ılen´ych objekt˚u nebo speci´aln´ıch arch´ıv˚u v z´avislosti na pouˇzit´em implementaˇcn´ım prostˇren´ı a jsou dynamicky naˇc´ıt´any za chodu pro-gramu.
6.3
Verifik´
ator
Jak jiˇz bylo zm´ınˇeno v kapitole 6.1, verifik´ator je naps´an v jazyce C++. N´avrh je vysoce modul´arn´ı s c´ılem zajistit jednoduchou modifikovatelnost k´odu, snadnou rozˇsiˇritelnost pro-gramu a ˇc´asteˇcnou nez´avislost na konkr´etn´ıch implementac´ıch jednotliv´ych ˇc´ast´ı. K dosaˇzen´ı tˇechto c´ıl˚u v´yraznˇe pˇrisp´ıv´a vyuˇzit´ı velk´eho poˇctu n´avrhov´ych vzor˚u[3]. Blokov´e sch´ema na obr´azku6.1 zachycuje detailn´ı strukturu verifik´atoru.
Verifik´ator se skl´ad´a celkem z ˇsesti ˇc´ast´ı - j´adra a pˇeti subsyst´em˚u. J´adro a t´emˇeˇr vˇsechny subsyst´emy jsou inicializov´any pˇri startu verifik´atoru. Jedinou vyj´ımkou je komunikaˇcn´ı subsyst´em, kter´y je nastartov´an pouze, pokud je verifik´ator spuˇstˇen v tzv. m´odu serveru, jinak totiˇz nen´ı potˇreba.
6.3.1 J´adro
J´adro je reprezentov´ano tˇr´ıdou Core, jenˇz obsahuje vˇsechny subsyst´emy. Tato tˇr´ıda je im-plementov´ana jako n´avrhov´y vzor singleton[3], vˇzdy tedy existuje pouze jedin´a instance t´eto tˇr´ıdy a k t´eto instanci je umoˇznˇen pˇr´ıstup v cel´em programu.
Hlavn´ım ´ukolem j´adra je inicializace a konfigurace vˇsech potˇrebn´ych subsyst´em˚u. J´adro zajiˇst’uje registraci intern´ıch a naˇcten´ı extern´ıch z´asuvn´ych modul˚u, zpracov´an´ı konfigurace a nastaven´ı jednotliv´ych subsyst´em˚u podle t´eto konfigurace. Umoˇzˇnuje tak´e spustit samotn´y proces verifikace.