420 likes | 551 Views
student: Branko Kalanović 213/07. FORMALNA VERIFIKACIJA. profesor: dr Zoran Ognjanović. Sadržaj predavanja. primene formalnih jezika verifikacija klasični metod provere ispravnosti provera modela. Primene formalnih jezika. prevo đ enje programskih jezika pretraživanje teksta
E N D
student: Branko Kalanović 213/07 FORMALNA VERIFIKACIJA profesor: dr Zoran Ognjanović
Sadržaj predavanja • primene formalnih jezika • verifikacija • klasični metod provere ispravnosti • provera modela
Primeneformalnihjezika • prevođenje programskih jezika • pretraživanje teksta • skraćivanje komandi (rm ~, dir m*) • otkrivanje grešaka na štampanim pločama • prepoznavanje grafičke reprezentacije vrsta hromozoma
Verifikacija • provera korektnosti nekog programa ili logičkog kola – ispunjavanje nekih unapred zadatih zahteva • sigurnost verifikacije nije apsolutna, ne može se garantovati potpuna korektnost, zbog uticaja spoljnih faktora na posmatrani sistem • verifikacija znatno utiče na povećanje pouzdanosti i skraćivanje ciklusa razvoja
Verifikacija • cena savremenih programskih sistema za verifikaciju je poprilično velika • cena grešaka koje želimo izbeći primenom verifikacije još veća • poznati slučajevi grešaka: • pad satelita koji je NASA 1999. godine slala na Mars • pad evropske svemirske letelice Ariana • greške Intel procesora pri računici u pokretnom zarezu
Klasični model provere ispravnosti • analiziranje rezultata za sve moguće ulazne vrednosti • nije primenljivo u opštem slučaju zbog velike složenosti objekata koji se testiraju
Klasični model provere ispravnosti Primer - konvertovanje neoznačenih binarnih u dekadne brojeve #include <stdio.h> main(){ unsigned x = 0; int input; while( (input = getchar()) != EOF ) { if( input == ’0’ ) x = x*2; else if( input == ’1’ ) x = x*2+1; else if( input == ’\n’ ) { printf( "%u\n", x ); x = 0; }}}
Klasični model provere ispravnosti • greška je moguća zbog ograničene dužine registra na 32 bita • sve aritmeticke operacije po modulu 2³² • klasični metod – provera redom svih binarnih nizova • dugo trajanje provere čak i u ovako jednostavnom primeru, u složenijim slučajevima vreme potrebno za proveru nije prihvatljivo
Klasični model provere ispravnosti • varijanta klasičnog modela provere – ne koriste se svi ulazni podaci, već na inteligentan način odabrati test primere • pronalaženje pravilnosti u pojavama grešaka je često teško • formalna verifikacija nekih logičkih kola i programa se vrši programima kod kojih složenost izračunavanja ostaje dovoljno mala bez obzira na rast veličine problema
Klasični model provere ispravnosti • ulazni podaci takvog programa su opisi objekata čiju korektnost proveravamo i odgovarajućeg zahteva • zahtev bi u našem primeru bila formula kojom se kaže da je izlaz uvek jednak dekadnoj vrednosti ulaznih bitova • automatski prevodilac transformiše programski kod u jednostavniju strukturu pogodniju za manipulaciju
Klasični model provere ispravnosti • formalni opis programa zavisi od računara na kome se program izvršava • greška koju smo razmatrali u našem primeru se odnosi na pojavu 33. bita kod računara sa registrima dužine 32 bita • kod računara sa dužinom registra 64 bita pojava 33. bita ne bi prouzrokovala pojavljivanje greške
Proveramodela • relativno novija oblast primene teorijskog računarstva • rešavanje opšteg problema: za dati model nekog sistema automatski proveriti da li ispunjava određeni zahtev • provera modela koristeći konačne automate – za reči beskonačne dužine • postoje različiti pristupi u kojima se specifikacija zahteva vrši sredstvima različitih temporalnih logika (CTL – Computational Tree Logic, LTL – Linear Time Logic itd)
Proveramodela • LTL – Linear Time Logic – vremenska logika omogućava da se rezonuje o promeni nekog iskaza tokom vremena što je jedna od karakteristika prirodnog jezika • pored klasičnih logičkih veznika (¬, ∧, ∨, →, ↔) uvedeni su i temporalni operatori G, F, O, U • vreme se shvata kao da je diskretno i linearno sa početnim trenutkom
Proveramodela • jedan takav model bi se definisao kao • – linearan diskretan skup vremenskih trenutaka ,,... • – valuacija koja svakom iskaznom slovu, a time i svakoj iskaznoj formuli dodeljuje istinitosnu vrednost u svakom vremenskom trenutku
Proveramodela • relacija zadovoljivosti se definiše: • |= Gα ako i samo ako za svaki trenutak ,j ≥ 0, važi |= α • |= F α ako i samo ako za neki trenutak ,j ≥ 0, važi |= α • |= Oα ako i samo ako |= α • |= βU α ako i samo ako postoji k ≥ i tako da • |= α i za svako j za koje je i ≤ j < k, |= β
Proveramodela • kaže se da model zadovoljava formulu ako formula važi u početnom trenutku • linearna diskretna vremenska logika – pogodna za opisivanje skupa svih izvršavanja nekog objekta i proučavanja njegovih osobina koje važe pri svim izvršavanjima • objekat je korektan ako sva njegova izvršavanja zadovoljavaju postavljene zahteve
Proveramodela • formule koje se u verifikaciji često sreću: • α → F β - ako je α zadovoljena u nekom momentu, formula β će eventualno biti zadovoljena nakon tog momenta • G(α → F β) pojačava prethodni iskaz, tj. kaže se da prethodna formula važi u svakom svetu - posle svakog trenutka u kome važi α će postojati trenutak u kome će važiti β
Proveramodela • GF α znači da će α važiti u beskonačno mnogo trenutaka • FG α znači da će α eventualno, u nekom budućem momentu, početi da zauvek važi • G(α → Gα) znači da ako α bude važila u nekom trenutku, onda će nakon njega važiti zauvek
Proveramodela • (¬β)U α znači da β neće važiti u bilo kom momentu koji prethodi prvom momentu u kome važi α
Proveramodela • Primer – dozvole za nedeljive resurse na operativnom sistemu • procesi koji traže resurs čekaju na “semaforu” • ako proces dovoljno dugo čeka - crveno svetlo, pre ili kasnije će dobiti pristup resursu - zeleno svetlo • neka je formula α zahtev za resursom a formula β realizacija zahteva
Proveramodela • G(α → F β) znači da će svaki zahtev za resursom biti opslužen • neka je formula α početak rada procesa A a formula β kraj rada procesa B • (¬α) U β znači da završetak rada procesa B mora prethoditi početku rada procesa A
Proveramodela • Koraci provere modela su: • modeliranje sistema • zapisivanje osobine koja se proverava jezikom temporalne logike • ispitivanje da li model zadovoljava tu formulu
Proveramodela • formalan opis objekata se najčešće vrši pomoću mašina sa konačnim skupom stanja • tipični problemi provere modela su: • verifikacija elektronskih kola • komunikacijski protokoli • sistemi za kontrolu procesa (kontrolni aspekt u prvom planu, ne obrada podataka)
Proveramodela • Osobine sistema koji se proveravaju dele se na: • dostižnost (reachability) – iskazuje da se neka situacija može ostvariti (vrednost promenljive će biti manja od 0) • sigurnost (safety) – iskazuje da se, pod određenim uslovima, nešto neće nikada dogoditi (proces A neće započeti sa radom ako se proces B ne završi)
Proveramodela • dogodivost (liveness) – iskazuje da se, pod određenim uslovima, nešto ostvaruje pre ili kasnije, pri čemu se ne zna tačno kad (upućen zahtev za resursom će biti ispunjen) • pravičnost (fairness) – iskazuje da se, pod određenim uslovima, nešto ostvaruje ili ne ostvaruje beskonačno često (proces će neprestano zahtevati neki resurs)
Proveramodela • sve ove osobine se mogu pogodno opisati sredstvima temporalne logike • na kraju je potrebno povezati opis objeka i opis zahteva • u tu svrhu ćemo koristiti teoriju apstraktnih mašina – automati nad beskonačnim rečima
Proveramodela • automati nad baskonačnim rečima – Buhi automati – konačni automati • ispituju beskonačne reči, pa mogu izraziti eventualnost, važenje zauvek ili stalno ponavljanje neke osobine • beskonačne reči – njihovo prihvatanje se ne definiše kao zaustavljanje u nekom od završnih stanja
Proveramodela • broj stanja konačan, a dužina reči beskonačna – postoje stanja u kojima se automat nalazi beskoknačno mnogo puta • kriterijum prepoznavanja reči je da se među stanjima koja se beskonačno mnogo puta ponavljaju nalazi bar jedno završno stanje
Proveramodela • u nedeterminističkom slučaju – dovoljno je da postoji bar jedno izvršavanje u kome se bar jedno završno stanje pojavljuje beskonačno mnogo puta • od posebnog je značaja što je odlučiv problem da li je jezik prazan i ako automat prihvata beskonačne reči
Proveramodela • Primer – Buhijev automat • je i početno i završno stanje • prihvata reči u kojima se nakon svakog pojavljivanja znaka a mora pojaviti i znak b
Proveramodela • razmotrimo sad neki LTL model– svakom trenutku se može pridružiti skup iskaznih slova koja su u tom trenutku tačna • svaka formula α ima konačan broj iskaznih slova Prop(α) • ceo model se može shvatiti kao beskonačna reč na alfabetu P(Prop(α)) (P je oznaka za partitivni skup)
Proveramodela • dokazano je da se za proizvoljno α može konstruisati Buhijev automat Aα koji prihvata tačno one reči koje opisuju modele koji zadovoljavaju α
Proveramodela • Primer – nedeterministički Buhijev automat • automat za formulu FGp – ako i samo ako počev od nekog momenta važi p
Proveramodela Primer - konvertovanje neoznačenih binarnih u dekadne brojeve (Buhijev automat) #include <stdio.h> main(){ unsigned x = 0; int input; while( (input = getchar()) != EOF ) { if( input == ’0’ ) x = x*2; else if( input == ’1’ ) x = x*2+1; else if( input == ’\n’ ) { printf( "%u\n", x ); x = 0; }}}
Proveramodela • mašina sa konačnim skupom stanja - četvorka oblika • – konačan skup stanja (opisuje stanja u kojima se objekat može naći tokom rada) • ∈– početno stanje • – relacija dostižnosti između stanja (način prelaska iz jednog u drugo stanje)
Proveramodela • :→P(ø) – interpretacija – svakom stanju pridružuje skup iskaznih slova koja važe u njemu • pretpostavlja se da ako se izvršavanje nekog objekta završava, onda zauvek ostaje u stanju u kom se našao na kraju rada • neka jebeskonačni niz stanja tako da važi i za
Proveramodela • tada je izračunavanje za • izračunavanje u zadovoljava formulu α ako |= α • zadovoljava α ako sva izračunavanja za zadovoljavaju α • se može shvatiti i kao nedeterministički Buhijev automat oblika Ap =[ , , , P(ø), δ] • funkcija prelaza je definisana tako da važi • s`∈ δ(s, a) ako i samo ako (s, s`) ∈ , a = v(s)
Proveramodela • Primer - konvertovanje neoznačenih binarnih u dekadne brojeve – jedna implementacija • stanja su sve moguće vrednosti promenljive x • za svaku vrednost v funkcija prelaza vodi do stanja 2v, 2v+1, 0 i v u zavisnosti od toga da li je učitani znak input jednak 0, 1, \n ili bilo kom drugom znaku
Proveramodela • kako je skup završnih stanja jednak skupu svih stanja – svakim beskoknačnim nizom stanja prihvata se neka beskonačna reč alfabeta P(ø) tj. neko izračunavanje od • zato je L(Ap) skup svih izračunavanja za – skup potencijalnih modela nekih formula
Proveramodela • formalizam Buhijevih automata povezuje opis zahteva i opis objekta za koji se proverava da li zahtev važi • problem verifikacije se odnosi na ispitivanje da li sistem opisan mašinom sa konačnim skupom stanja zadovoljava neku formulu α • što se svodi na proveru da li izračunavanja koja prihvata Ap zadovoljavaju formulu α
Proveramodela • odnosno da li je L(Ap)L(Aα) • što se može preformulisati u L(Ap ) ∩ L(Aα ) = L(Ap ) ∩ L(A¬α ) = ∅ • što je odlučiv problem
Proveramodela • dokazano je da se provera modela za logiku LTL može izvršiti u vremenu • - veličina modela • - veličina formule • je veoma velik, a relativno mala pa je vreme provere je prihvatljivo • vreme provere za CTL logiku linearno zavisi odi , tj izračunava se kao