Să se modeleze și verifice în SMV un protocol care asigură consistența unei baze de date accesată de două calculatoare.
Sistemul e compus din 5 module: un manager unic pentru baza de date, iar pe fiecare din cele 2 calculatoare, un proces de interfață cu baza de date și un program aplicație. Pe lângă execuția altor instrucțiuni, o aplicație poate transmite procesului de interfață cereri de citire sau scriere de înregistrări din/în baza de date, și așteaptă până când aceste cereri pot fi satisfăcute.
Procesul de interfață are la dispoziție un număr limitat de zone tampon pentru a păstra înregistrări în memorie. Fiecare zonă tampon e etichetată cu una din 3 valori posibile: consistent, dacă înregistrarea nu a fost modificată de la citirea din baza de date; modificat, în caz contrar; și invalid dacă tamponul nu conține o înregistrare. O cerere de scriere de la aplicație are ca efect doar modificarea înregistrării în tampon; scrierea în baza de date intervine doar atunci când este necesar (de exemplu când tamponul trebuie reutilizat pentru altă înregistrare).
Procesul de interfață poate emite spre managerul bazei de date 3 tipuri de cereri relativ la o înregistrare: citire, scriere și invalidare. O cerere de invalidare este emisă ca efect al unei cereri de scriere din partea aplicației, dacă ar exista posibilitatea ca sistemul celălalt să aibe în folosință o valoare veche a aceleiași înregistrări; în acest caz, protocolul trebuie să asigure invalidarea acesteia.
Pentru a realiza un model abstractizat și simplificat al sistemului se va ține seama de următoarele indicații. (Corectitudinea simplificărilor descrise se poate argumenta formal; pentru moment, le vom accepta ca atare.)
Celălalte detalii de modelare (dialogul între procesele de interfață și manager, (a)sincronia dintre diversele module, etc.) se lasă la latitudinea proiectantului. Se recomandă ca managerul să servească nedeterminist, dar echitabil cererile celor două procese de interfață.
Sistemul va fi proiectat pentru a verifica următoarele proprietăți: