Pengenalan Dasar
Model Checker
NuSMV
Kuliah (Pengantar) Metode Formal Semester Ganjil 2015-2016M. Arzaki Fakultas Informatika
Telkom University
FIF Tel-U
Acknowledgements
Slide ini disusun berdasarkan materi yang terdapat pada sumber-sumber berikut: Buku:
1 Logic in Computer Science: Modelling and Reasoning about Systems, Edisi 2,
2004,olehM. Huth dan M. Ryan (acuan utama).
2 NuSMV 2.5 tutorial darihttp://nusmv.fbk.eu/dan[email protected]. 3 NuSMV 2.5 user manual darihttp://nusmv.fbk.eu/[email protected].
Slide kuliah:
1 Slide kuliahModel Checking diUniversity of Waikato oleh Robi Malik. 2 Slide kuliahIntroduction to SMV diSoftware Engineering Lab, CMU, oleh
Arie Gur…nkel.
3 Slide kuliahModel Cheking with NuSMV di University of Edinburgholeh
Paul Jackson.
4 Slide kuliahA Hands-on Tutorial on Model Checking –NuSMV – di
Universitas Trento oleh A. Cimmati, M. Pistore, dan M. Roveri.
5 Slide kuliahNuSMV: A Simple Introductiondi UCL oleh F. Raimondi. 6 Slide kuliahThe NuSMV Model Chekcer di IIT Delhi oleh M. Pistore dan M.
Roveri.
7 Slide kuliah Metode Formal diFree University of Bolzano oleh Alessandro
Artale.
8 Slide kuliahIntroduction to Computational Logic diAcademia Sinicaoleh
Bow-Yaw Wang.
Beberapa gambar dapat diambil dari sumber-sumber di atas. Slide ini ditujukan untuk keperluan akademis di lingkungan FIF Telkom University. Jika Anda memiliki saran/ pendapat/ pertanyaan terkait materi dalamslide ini, silakan kirim
Bahasan
1 Apa Itu NuSMV
2 Instalasi dan Cara Memakai NuSMV
3 Sintaks Dasar NuSMV
4 Pemakaian NuSMV terkait Logika Proposisi
5 NuSMV untuk Konsistensi Spesi…kasi Sistem
Bahasan
1 Apa Itu NuSMV
2 Instalasi dan Cara Memakai NuSMV
3 Sintaks Dasar NuSMV
4 Pemakaian NuSMV terkait Logika Proposisi
Apa Itu NuSMV?
SMV:Symbolic Model Veri…er
NuSMV:New Symbolic Model Veri…er
NuSMV atau SMV merupakan sebuah alat bantu (tools) yang menyediakan suatu bahasa untuk mendeskripsikan suatu model sistem yang dijelaskan dalam LTL (Linear Time Temporal Logic) maupun CTL (Computation Tree Logic). NuSMV merupakan suatumodel checker (alat untuk memeriksa suatu model).
SMV awalnya dikembangkan oleh K. L. McMillan dan E. M. Clarke di CMU. Saat ini NuSMV dikembangkan sebagaijoint project dari: FBK-IRST, CMU,University of Genova, danUniversity of Trento.
NuSMV merupakan suatu produkopen source. Untuk mengetahui lebih lanjut tentang NuSMV, silakan lihat dihttp://nusmv.fbk.eu/.
Bahasan
1 Apa Itu NuSMV
2 Instalasi dan Cara Memakai NuSMV
3 Sintaks Dasar NuSMV
4 Pemakaian NuSMV terkait Logika Proposisi
Instalasi NuSMV pada Windows
File yang diperlukan untuk instalasi NuSMV pada sistem operasi Windows maupun Linux dapat diunduh dihttp://nusmv.fbk.eu/. File yang diperlukan juga sudah di-share pada forum diskusi di idea. Silakan hapus ekstensi.pdf pada …le NuSMV.zip.pdfdan lakukan ekstraksi pada…le tersebut.
Instalasi pada Windows dapat dilakukan dengan megikuti langkah-langkah berikut:
1 Lakukan klik ganda (double click)NuSMV-2.5.4-i386-pc-mingw32.exe. 2 Ikuti langkah-langkah instalasi sesuai petunjuk. Usahakan agarpath folder
instalasi tidak mengandung spasi dan karakter non alfanumerik seperti , !, @, #, $, ^, &, *, (, ). Sebagai contoh, instalasi dapat dilakukan pada path C:nNuSMV.
3 NuSMV siap digunakan.
Instalasi telah berhasil dilakukan pada sistem operasi Windows Vista-32 bit dan Windows 7-64 bit.
Catatan
Agar eksekusi …le.smvdapat dilakukan tanpa mengkopi …le tersebut ke direktori bin(contohnyaC:nNuSMVn2.5.4nbin), Anda dapat memodi…kasipathdan environment variable yang ada pada Windows. Padaenvironment variable, tambahkanvariable dengan nama pathdenganvalue direktori bin (contohnya C:nNuSMVn2.5.4nbin).
Instalasi NuSMV pada Linux
Instalasi NuSMV pada Linux dapat dilakukan dengan cara-cara berikut:
1 Lakukan ekstraksi pada …leNuSMV-2.5.4.tar.gz.
2 Pindahkan folder hasil ekstraksi ke direktori yang tidak memakai spasi.
Contohnya: /Documents/NuSMV-2.5.4.
3 NuSMV siap digunakan.
Instalasi telah berhasil dilakukan pada sistem operasi Linux Ubuntu 14.04 (TLS).
Program Pertama
Silakan ketik teks berikut pada teks editor favorit Anda. Gunakan spasi atau tab untuk indensasi. --Example-01 MODULE main VAR p : boolean; q : boolean; phi1: boolean; phi2: boolean; ASSIGN phi1 := !p & q; phi2 := p -> p j q; LTLSPEC phi1 LTLSPEC phi2
Simpan program yang telah Anda buat dengan namaexample-01.smvpada folder bin, contohnya:
C:nNuSMVn2.5.4nbin(pada Windows) /Documents/NuSMV-2.5.4/
NuSMV-2.5.4-x86_64-unknown-linux-gnu/bin(pada Linux)
Jikapathdanenvironment variable sudah ditambahkan pada Windows, maka programexample-01.smvdapat disimpan padafolder apapun selain bin. Selanjutnya eksekusi perintah berikut:
Pada Windows:
1 Gunakancommand prompt (ketikkan cmd padalauncher). Masuk ke
direktoriC:nNuSMVn2.5.4nbin. Hal ini dapat dilakukan dengan perintahcd.
2 KetikC:nNuSMVn2.5.4nbin>NuSMV.exe example-01.smv. Jikapath dan
environment variable sudah ditambahkan, Anda dapat menjalankan program di direktori apapun, contohnyaD:nMyProgramnNuSMVnNuSMV
example-01.smv. Pada Linux:
1 Gunakan terminal (ketikkan terminal padalauncher). Masuk ke direktori bin,
contohnyaarzaki@arzaki-ThinkPad-E455: /Documents/NuSMV-2.5.4/ NuSMV-2.5.4-x86_64-unknown-linux-gnu/bin.
2 Tambahkan perintah./NuSMV example-01.smv.
Jika eksekusi program lancar, makacommand prompt/ terminal akan memberikan keluaran berikut:
*** This is NuSMV 2.5.4 (compiled on Fri Oct 28 13:47:30 UTC 2011) *** Enabled addons are: compass
*** For more information on NuSMV see<http://nusmv.fbk.eu>
*** or email to<[email protected]>. *** Please report bugs to<[email protected]>
*** Copyright (c) 2010, Fondazione Bruno Kessler
*** This version of NuSMV is linked to the CUDD library version 2.4.1 *** Copyright (c) 1995-2004, Regents of the University of Colorado *** This version of NuSMV is linked to the MiniSat SAT solver.
*** See http://www.cs.chalmers.se/Cs/Research/FormalMethods/MiniSat *** Copyright (c) 2003-2005, Niklas Een, Niklas Sorensson
– speci…cation phi1 is false
– as demonstrated by the following execution sequence Trace Description: LTL Counterexample
Trace Type: Counterexample – Loop starts here
->State: 1.1< -p = TRUE q = FALSE phi1 = FALSE phi2 = TRUE ->State: 1.2<
Bahasan
1 Apa Itu NuSMV
2 Instalasi dan Cara Memakai NuSMV
3 Sintaks Dasar NuSMV
4 Pemakaian NuSMV terkait Logika Proposisi
5 NuSMV untuk Konsistensi Spesi…kasi Sistem
Sintaks Dasar NuSMV
Perhatikan kembali program yang sebelumnya telah dibuat. --Example-01 MODULE main VAR p : boolean; q : boolean; phi1: boolean; phi2: boolean; ASSIGN phi1 := !p & q; phi2 := p -> p j q; LTLSPEC phi1 LTLSPEC phi2
Struktur program adalah --Example-01
(nama program yang bersifat opsional, komentar selalu didahului dengan karakter “--”) MODULE main (nama modul). VAR (deklarasi variabel). ASSIGN
(assignment, contohnya untuk membuat proposisi majemuk). LTLSPEC
(pemeriksaan spesi…kasi sistem dalam formula logika tertentu)
LTLSPECdapat diganti denganSPECsaja atauCTLSPEC. Jika diganti dengan SPEC, maka hasilnya akan sama dengan jika kita memakaiCTLSPEC.
Tipe Data
Tipe data pada NuSMV ada beberapa macam, yaitu:
boolean:
system_ok : boolean;
enumeration:
state : {ready, busy, waiting, stopped};
bounded integers:
num : 1..8;
array and bit vectors:
arr : array 0..3 of {red,yellow,green}; bv: signed word[8];
Assignment
immediate assignment: ASSIGN x := <expression>; atau DEFINE x := <expression>; initialization: ASSIGN init(x) := <expression>; progression: ASSIGN next (x) := <expression>;Operator Logika Proposisi
Operator logika proposisi yang dipakai pada NuSMV adalah: Simbol Operator pada NuSMV
: !
^ &
_ j
! ->
$ <->
Sebagai contoh, formulap!q^rdanp$p_ :qpada NuSMV berturut-turut dapat ditulis sebagai:
p -> q & r p <-> p j !q
Bahasan
1 Apa Itu NuSMV
2 Instalasi dan Cara Memakai NuSMV
3 Sintaks Dasar NuSMV
4 Pemakaian NuSMV terkait Logika Proposisi
5 NuSMV untuk Konsistensi Spesi…kasi Sistem
Cara Kerja NuSMV
Secara umum NuSMV bekerja dengan cara memeriksa model yang dimasukkan oleh pengguna. Jika model tersebut salah (false), maka NuSMV akan memberikan suatucounterexample yang menjelaskan kesalahan model tersebut. Lihat kembali keluaran yang diberikan NuSMV untuk masukan programexample-01.smv. – speci…cation phi1 is false
– as demonstrated by the following execution sequence Trace Description: LTL Counterexample
Trace Type: Counterexample – Loop starts here
->State: 1.1< -p = TRUE q = FALSE phi1 = FALSE phi2 = TRUE ->State: 1.2<
Padaexample-01.smv, program NuSMV dibuat untuk memeriksa kebenaran formula 1:=
:p^qdan 2:=p!p_q. NuSMV memberikan keluaran bahwa spesi…kasi (formula) 1dapat salah ketikaI(p) = TdanI(q) = F. Untuk spesi…kasi 2, NuSMV menyatakan bahwa 2 adalah spesi…kasi (formula) yang benar (tidak pernah salah). Jelas bahwa 2 adalah suatu tautologi (bersifat absah/valid).
Dari observasi terhadap keluaran program ini, kita dapat melihat bahwa NuSMV dapat digunakan untuk memeriksafalsi…ability dari suatu formula logika proposisi
. Lebih jauh kita memiliki:
Untuk setiap masukan yang berupa formula logika proposisi , maka NuSMV akan mengeluarkan keluaran berikut:
counterexample berupa interpretasi untuk setiap variabel proposisi atom yang membuatI( ) = Fapabila merupakan formula yangfalsi…able,
pernyataan bahwa “speci…cation is true” apabila bukan merupakan formula yangfalsi…able.
Padaexample-01.smv, program NuSMV dibuat untuk memeriksa kebenaran formula 1:=:p^qdan 2:=
p!p_q. NuSMV memberikan keluaran bahwa spesi…kasi (formula) 1dapat salah ketikaI(p) = TdanI(q) = F. Untuk spesi…kasi 2, NuSMV menyatakan bahwa 2 adalah spesi…kasi (formula) yang benar (tidak pernah salah). Jelas bahwa 2 adalah suatu tautologi (bersifat absah/valid).
Dari observasi terhadap keluaran program ini, kita dapat melihat bahwa NuSMV dapat digunakan untuk memeriksafalsi…ability dari suatu formula logika proposisi
. Lebih jauh kita memiliki:
Untuk setiap masukan yang berupa formula logika proposisi , maka NuSMV akan mengeluarkan keluaran berikut:
counterexample berupa interpretasi untuk setiap variabel proposisi atom yang membuatI( ) = Fapabila merupakan formula yangfalsi…able,
pernyataan bahwa “speci…cation is true” apabila bukan merupakan formula yangfalsi…able.
Padaexample-01.smv, program NuSMV dibuat untuk memeriksa kebenaran formula 1:=:p^qdan 2:=p!p_q.
NuSMV memberikan keluaran bahwa spesi…kasi (formula) 1dapat salah ketikaI(p) = TdanI(q) = F. Untuk spesi…kasi 2, NuSMV menyatakan bahwa 2 adalah spesi…kasi (formula) yang benar (tidak pernah salah). Jelas bahwa 2 adalah suatu tautologi (bersifat absah/valid).
Dari observasi terhadap keluaran program ini, kita dapat melihat bahwa NuSMV dapat digunakan untuk memeriksafalsi…ability dari suatu formula logika proposisi
. Lebih jauh kita memiliki:
Untuk setiap masukan yang berupa formula logika proposisi , maka NuSMV akan mengeluarkan keluaran berikut:
counterexample berupa interpretasi untuk setiap variabel proposisi atom yang membuatI( ) = Fapabila merupakan formula yangfalsi…able,
pernyataan bahwa “speci…cation is true” apabila bukan merupakan formula yangfalsi…able.
Padaexample-01.smv, program NuSMV dibuat untuk memeriksa kebenaran formula 1:=:p^qdan 2:=p!p_q. NuSMV memberikan keluaran bahwa spesi…kasi (formula) 1dapat salah ketikaI(p) = TdanI(q) = F. Untuk spesi…kasi 2,
NuSMV menyatakan bahwa 2 adalah spesi…kasi (formula) yang benar (tidak pernah salah). Jelas bahwa 2 adalah suatu tautologi (bersifat absah/valid).
Dari observasi terhadap keluaran program ini, kita dapat melihat bahwa NuSMV dapat digunakan untuk memeriksafalsi…ability dari suatu formula logika proposisi
. Lebih jauh kita memiliki:
Untuk setiap masukan yang berupa formula logika proposisi , maka NuSMV akan mengeluarkan keluaran berikut:
counterexample berupa interpretasi untuk setiap variabel proposisi atom yang membuatI( ) = Fapabila merupakan formula yangfalsi…able,
pernyataan bahwa “speci…cation is true” apabila bukan merupakan formula yangfalsi…able.
Padaexample-01.smv, program NuSMV dibuat untuk memeriksa kebenaran formula 1:=:p^qdan 2:=p!p_q. NuSMV memberikan keluaran bahwa spesi…kasi (formula) 1dapat salah ketikaI(p) = TdanI(q) = F. Untuk spesi…kasi 2, NuSMV menyatakan bahwa 2 adalah spesi…kasi (formula) yang benar (tidak pernah salah). Jelas bahwa 2 adalah suatu tautologi (bersifat absah/valid).
Dari observasi terhadap keluaran program ini, kita dapat melihat bahwa NuSMV dapat digunakan untuk memeriksafalsi…ability dari suatu formula logika proposisi
. Lebih jauh kita memiliki:
Untuk setiap masukan yang berupa formula logika proposisi , maka NuSMV akan mengeluarkan keluaran berikut:
counterexample berupa interpretasi untuk setiap variabel proposisi atom yang membuatI( ) = Fapabila merupakan formula yangfalsi…able,
pernyataan bahwa “speci…cation is true” apabila bukan merupakan formula yangfalsi…able.
Padaexample-01.smv, program NuSMV dibuat untuk memeriksa kebenaran formula 1:=:p^qdan 2:=p!p_q. NuSMV memberikan keluaran bahwa spesi…kasi (formula) 1dapat salah ketikaI(p) = TdanI(q) = F. Untuk spesi…kasi 2, NuSMV menyatakan bahwa 2 adalah spesi…kasi (formula) yang benar (tidak pernah salah). Jelas bahwa 2 adalah suatu tautologi (bersifat absah/valid).
Dari observasi terhadap keluaran program ini, kita dapat melihat bahwa NuSMV dapat digunakan untuk memeriksafalsi…ability dari suatu formula logika proposisi
. Lebih jauh kita memiliki:
Untuk setiap masukan yang berupa formula logika proposisi , maka NuSMV akan mengeluarkan keluaran berikut:
counterexample berupa interpretasi untuk setiap variabel proposisi atom yang membuatI( ) = Fapabila merupakan formula yangfalsi…able,
pernyataan bahwa “speci…cation is true” apabila bukan merupakan formula yangfalsi…able.
Padaexample-01.smv, program NuSMV dibuat untuk memeriksa kebenaran formula 1:=:p^qdan 2:=p!p_q. NuSMV memberikan keluaran bahwa spesi…kasi (formula) 1dapat salah ketikaI(p) = TdanI(q) = F. Untuk spesi…kasi 2, NuSMV menyatakan bahwa 2 adalah spesi…kasi (formula) yang benar (tidak pernah salah). Jelas bahwa 2 adalah suatu tautologi (bersifat absah/valid).
Dari observasi terhadap keluaran program ini, kita dapat melihat bahwa NuSMV dapat digunakan untuk memeriksafalsi…ability dari suatu formula logika proposisi
. Lebih jauh kita memiliki:
Untuk setiap masukan yang berupa formula logika proposisi , maka NuSMV akan mengeluarkan keluaran berikut:
counterexample berupa interpretasi untuk setiap variabel proposisi atom yang membuatI( ) = Fapabila merupakan formula yangfalsi…able,
pernyataan bahwa “speci…cation is true” apabila bukan merupakan formula yangfalsi…able.
Memeriksa
Satis…ability
dengan NuSMV
Permasalahan
Diberikan formula logika proposisi , apakah kita dapat memeriksa keterpenuhan (satis…ability) dari ? Jika ya, bagaimana caranya?
Untuk mengetahui jawaban dari permasalahan, terlebih dulu eksekusi program .smvberikut. --Example-02 MODULE main VAR p : boolean; q : boolean; r : boolean; s : boolean; phi1: boolean; phi2: boolean; phi3: boolean;
Memeriksa
Satis…ability
dengan NuSMV
Permasalahan
Diberikan formula logika proposisi , apakah kita dapat memeriksa keterpenuhan (satis…ability) dari ? Jika ya, bagaimana caranya?
Untuk mengetahui jawaban dari permasalahan, terlebih dulu eksekusi program .smvberikut. --Example-02 MODULE main VAR p : boolean; q : boolean; r : boolean; s : boolean; phi1: boolean; phi2: boolean; phi3: boolean;
ASSIGN
phi1 := (p j q) & (! q j r) & (! r j s) -> p j s; phi2 := (p j q j r j s); phi3 := !(p j q j r js); LTLSPEC phi1 LTLSPEC phi2 LTLSPEC phi3
NuSMV akan memberikan keluaran berikut:
– speci…cation phi1 is true – speci…cation phi2 is false – as demonstrated by the following execution sequence
Trace Description: LTL Counterexample
Trace Type: Counterexample – Loop starts here
->State: 1.1< -p = FALSE q = FALSE r = FALSE s = FALSE phi1 = TRUE phi2 = FALSE phi3 = TRUE ->State: 1.2<
-– speci…cation phi3 is false – as demonstrated by the following execution sequence
Trace Description: LTL Counterexample
Trace Type: Counterexample – Loop starts here
->State: 2.1< -p = TRUE q = FALSE r = FALSE s = FALSE phi1 = TRUE phi2 = TRUE phi3 = FALSE ->State: 2.2<
Untuk memeriksa apakah bersifat terpenuhi atau tidak kita dapat memakai teorema berikut.
Teorema
Formula logika proposisi terpenuhi (satis…able) jika dan hanya jika: tersalahkan (falsi…able).
Sebagai contoh, pada programexample-02 smvsebelumnya, untuk memeriksa apakahp_q_r_sbersifatsatis…able maka kita dapat melakukannya dengan memeriksa apakah:(p_q_r_s)bersifat falsi…able. Kita melihat bahwa NuSMV meyatakan bahwa:(p_q_r_s)bersifat falsi…abledengan
counterexample berikut:I(p) = T,I(q) = F,I(r) = F, danI(s) = F. Jelas bahwa hal ini berakibatI(:(p_q_r_s)) = F, sehingga
Untuk memeriksa apakah bersifat terpenuhi atau tidak kita dapat memakai teorema berikut.
Teorema
Formula logika proposisi terpenuhi (satis…able) jika dan hanya jika: tersalahkan (falsi…able).
Sebagai contoh, pada programexample-02 smvsebelumnya, untuk memeriksa apakahp_q_r_sbersifat satis…ablemaka kita dapat melakukannya dengan memeriksa apakah:(p_q_r_s)bersifat falsi…able.
Kita melihat bahwa NuSMV meyatakan bahwa:(p_q_r_s)bersifat falsi…abledengan
counterexample berikut:I(p) = T,I(q) = F,I(r) = F, danI(s) = F. Jelas bahwa hal ini berakibatI(:(p_q_r_s)) = F, sehingga
I( ) =I(p_q_r_s) = T.
Untuk memeriksa apakah bersifat terpenuhi atau tidak kita dapat memakai teorema berikut.
Teorema
Formula logika proposisi terpenuhi (satis…able) jika dan hanya jika: tersalahkan (falsi…able).
Sebagai contoh, pada programexample-02 smvsebelumnya, untuk memeriksa apakahp_q_r_sbersifat satis…ablemaka kita dapat melakukannya dengan memeriksa apakah:(p_q_r_s)bersifat falsi…able. Kita melihat bahwa NuSMV meyatakan bahwa:(p_q_r_s)bersifat falsi…abledengan counterexample berikut:
I(p) = T,I(q) = F,I(r) = F, danI(s) = F. Jelas bahwa hal ini berakibatI(:(p_q_r_s)) = F, sehingga
Untuk memeriksa apakah bersifat terpenuhi atau tidak kita dapat memakai teorema berikut.
Teorema
Formula logika proposisi terpenuhi (satis…able) jika dan hanya jika: tersalahkan (falsi…able).
Sebagai contoh, pada programexample-02 smvsebelumnya, untuk memeriksa apakahp_q_r_sbersifat satis…ablemaka kita dapat melakukannya dengan memeriksa apakah:(p_q_r_s)bersifat falsi…able. Kita melihat bahwa NuSMV meyatakan bahwa:(p_q_r_s)bersifat falsi…abledengan
counterexample berikut:I(p) = T,I(q) = F,I(r) = F, danI(s) = F. Jelas bahwa hal ini berakibatI(:(p_q_r_s)) = F, sehingga
I( ) =I(p_q_r_s) = T.
Bahasan
1 Apa Itu NuSMV
2 Instalasi dan Cara Memakai NuSMV
3 Sintaks Dasar NuSMV
4 Pemakaian NuSMV terkait Logika Proposisi
Latihan
Buatlah NuSMV untuk memecahkan masalah-masalah berikut.
1 Periksa apakah spesi…kasi sistem berikut konsisten atau tidak dengan
memakai NuSMV: (1) ketikasystem software di-upgrade, user tidak dapat mengakses…le system; (2) jikauser dapat mengakses …le system, makauser dapat menyimpan…le baru; (3) jikauser tidak dapat menyimpan …le baru, makasystem software tidak sedang di-upgrade.
2 Periksa apakah koleksi formulaA=f:p!q;:p$r;:q$s;:p!sg
konsisten atau tidak.
3 Pecahkan masalah perampokan bank yang dijelaskan pada slide kuliah
3.LogikaProposisi-3.pdfdengan NuSMV.