====== Systems Verification Lab ====== ---- ===== News ===== * The page of the same course held in Academic Year **2019/2020** can be found at this [[http://didattica.cs.unicam.it/doku.php?id=didattica:magistrale:svl:ay_1920:main|link]]. * **28/09/2020**: The course page is online. The course will be held in the second semester (from 1st March 2021). ---- ===== General Info ===== **Teacher**: * [[http://docenti.unicam.it/pdett.aspx?ids=N&tv=d&UteId=572&ru=RU|Luca Tesei]] **ESSE3 Link** * [[https://didattica.unicam.it/Guide/PaginaADErogata.do?ad_er_id=2020*N0*N0*S2*16797*9988&ANNO_ACCADEMICO=2020&mostra_percorsi=N|Systems Verification Lab - AY 2020/2021]] **Lectures schedule**: * From March 3rd 2021 - Wednesdays from 2.00pm to 4.00pm - Fridays from 11.00am to 1.00pm **Recording of Lectures and other material**: * The recordings and other material will be given on the **Google Classroom** platform: [[https://classroom.google.com/c/MjkxNDU4MTYwNjA5?cjc=557nyk5]] (login with @studenti.unicam.it credentials) **Webex Room for Lecture Streaming** * [[http://unicam.webex.com/meet/luca.tesei/|Luca Tesei's room]] **Office hours**: * Take an appointment with the teacher via email. Office hours can be online (webex) or in presence. **Acronym**: * The course official acronym is **SVL2021** ---- ===== Course Objectives ===== See [[https://didattica.unicam.it/Guide/PaginaADErogata.do?ad_er_id=2020*N0*N0*S2*16797*9988&ANNO_ACCADEMICO=2020&mostra_percorsi=N|ESSE3 link]]. ---- ===== Course Contents ===== See [[https://didattica.unicam.it/Guide/PaginaADErogata.do?ad_er_id=2020*N0*N0*S2*16797*9988&ANNO_ACCADEMICO=2020&mostra_percorsi=N|ESSE3 link]]. ---- ===== Lectures ===== * The recordings and other material will be given on the **Google Classroom** platform: [[https://classroom.google.com/c/MjkxNDU4MTYwNjA5?cjc=557nyk5]] (login with @studenti.unicam.it credentials) ---- ===== Material ===== ==== Verification Tools ==== * [[http://spinroot.com/spin/whatispin.html| SPIN Model Checker]] * [[https://spinroot.com/spin/Doc/SpinTutorial.pdf| Spin Tutorial]] * [[http://didawiki.cli.di.unipi.it/lib/exe/fetch.php/magistraleinformatica/mvs/mvs-spin-01.pdf|Introduction to SPIN]] * [[http://didawiki.cli.di.unipi.it/lib/exe/fetch.php/magistraleinformatica/mvs/mvs-spin-02.pdf|PROMELA 1]] * [[http://didawiki.cli.di.unipi.it/lib/exe/fetch.php/magistraleinformatica/mvs/mvs-spin-03.pdf|PROMELA 2]] * [[http://didawiki.cli.di.unipi.it/lib/exe/fetch.php/magistraleinformatica/mvs/mvs-spin-04.pdf|Properties 1]] * [[http://didawiki.cli.di.unipi.it/lib/exe/fetch.php/magistraleinformatica/mvs/mvs-spin-05.pdf|Properties 2]] * [[http://didawiki.cli.di.unipi.it/lib/exe/fetch.php/magistraleinformatica/mvs/mvs-spin-06.pdf|Properties 3]] * [[https://code.google.com/archive/p/jspin/downloads|JSpin (Java GUI for Spin) Download Site]] * [[http://www.se.rit.edu/~swen-220/resources/SPIN/jSPIN%20Installation.pdf|JSpin Installation Instructions]] * [[http://www.inf.u-szeged.hu/~gombas/HSRV/jspin-user.pdf|JSpin User Guide]] * [[http://nusmv.fbk.eu/| NuSMV Model Cheker]] * [[http://nusmv.fbk.eu/courses/icaps03/icaps03-mct.pdf|NuSMV Slides (together with generic introduction to model checking)]] * [[http://nusmv.fbk.eu/gnusmv/|gNuSMV, GUI for NuSMV]] * [[http://nusmv.fbk.eu/gnusmv/dload/unix/README-linux.html|gNuSVM Linux installation instructions]], [[http://nusmv.fbk.eu/gnusmv/dload/unix/?C=N;O=D|gNuSMV Linux installation files]] * [[http://nusmv.fbk.eu/gnusmv/dload/win32/README_win32.html|gNuSMV Windows installation instructions and files]] * [[https://www.mcrl2.org/web/user_manual/index.html|mCRL2]] * [[http://www.uppaal.org/| UPPAAL Model Checker]] * [[http://www.prismmodelchecker.org/| PRISM Model Checker]] * Other Model Checkers for Timed CTL: * [[https://www-verimag.imag.fr/DIST-TOOLS/TEMPO/kronos/index-english.html|KRONOS Model Checker]] * [[https://sourceforge.net/projects/redlib/|RED Model Checker]] ==== Reactive Systems ==== **Transition Systems and Modelling Languages for Reactive Systems** * {{ :didattica:magistrale:svl:ay_1920:1_-_introduction_to_model_checking.pdf | Introduction to Model Checking}} * {{ :didattica:magistrale:svl:ay_1920:2_-_transition_systems.pdf |Transition Systems}} * {{ :didattica:magistrale:svl:ay_1920:3_-_modelling_hardware_circuits.pdf |Modelling Hardware Circuits}} * {{ :didattica:magistrale:svl:ay_1920:4_-_program._graphs.pdf |Program Graphs}} * {{ :didattica:magistrale:svl:ay_1920:5_-_guarded_commands_language.pdf |Guarded Command Languages}}, [[https://link.springer.com/chapter/10.1007/978-1-4612-6315-9_14|Original Dijkstra's paper]] * {{ :didattica:magistrale:svl:ay_1920:6_-_parallelism._interleaving_for_ts.pdf |Parallelism: Interleaving for Transition Systems}} * {{ :didattica:magistrale:svl:ay_1920:7_-_parallelism._interleaving_for_program_graphs.pdf |Parallelism: Interleaving for Program Graphs}} * {{ :didattica:magistrale:svl:ay_1920:8_-_parallelism_and_communication._synchronous_message_passing.pdf |Parallelism and Communication: Synchronous Message Passing}} * {{ :didattica:magistrale:svl:ay_1920:9_-_parallelism_and_communication._channel_systems.pdf |Parallelism and Communication: Channel Systems}} * {{ :didattica:magistrale:svl:ay_1920:10_-_parallelism_and_communication._synchronous_product.pdf |Parallelism and Communication: Synchronous Product}} * {{ :didattica:magistrale:svl:ay_1920:11_-_nanopromela_semantics.pdf |Structural Operational Semantics of NanoPROMELA}} **Linear Time Properties** * {{ :didattica:magistrale:svl:ay_1920:1_-_linear_time_properties._introduction.pdf |Introduction to Linear Time Properties}} * {{ :didattica:magistrale:svl:ay_1920:2_-_linear_time_properties._definition_and_satisfaction._trace_equivalence.pdf |Definition and Satisfaction, Trace Equivalence}} * {{ :didattica:magistrale:svl:ay_1920:3_-_linear_time_properties._invariants_and_invariant_checking.pdf |Invariants and Invariant Checking}} * {{ :didattica:magistrale:svl:ay_1920:4_-_linear_time_properties._safety_properties._bad_prefixes_and_prefix_closure.pdf |Safety Properties}} * {{ :didattica:magistrale:svl:ay_1920:5_-_linear_time_properties._liveness_properties.pdf |Liveness Properties}} * {{ :didattica:magistrale:svl:ay_1920:6_-_linear_time_properties._decomposition_theorem.pdf |Decomposition Theorem}} * {{ :didattica:magistrale:svl:ay_1920:linear_time_properties._regular_safety_properties.pdf |Regular Safety Properties}} * {{ :didattica:magistrale:svl:ay_1920:7_-_linear_time_properties._fairness.pdf |Fairness}} **Linear Time Logic (LTL)** * {{ :didattica:magistrale:svl:ay_1920:1_-_ltl_syntax_and_semantics.pdf |Syntax and Semantics of LTL}} * {{ :didattica:magistrale:svl:ay_1920:2_-_ltl_equivalences_and_laws.pdf |Equivalences and Laws of LTL}} * {{ :didattica:magistrale:svl:ay_1920:3_-_ltl_expressing_fairness.pdf |Expressing Fairness in LTL}} * {{ :didattica:magistrale:svl:ay_2021:4-5_soft_-_ltl_general_picture_of_automata-based_model_checking.pdf | General picture of LTL model checking}} **Computation Tree Logic (CTL)** * {{ :didattica:magistrale:svl:ay_1920:1_-_ctl_syntax_semantics_equivalences_and_normal_forms.pdf |Syntax, Semantics, Equivalences and Normal Forms of CTL}} * {{ :didattica:magistrale:svl:ay_2021:3_-_ctl_model_checking.pdf | Model Checking of CTL}} * {{ :didattica:magistrale:svl:ay_1920:2_-_ctl_vs_ltl.pdf |CTL versus LTL}} * {{ :didattica:magistrale:svl:ay_1920:4_-_ctl_with_fairness.pdf |CTL with Fairness}} ==== Timed Systems ==== **Timed Automata** * {{ :didattica:magistrale:svl:ay_1920:1_-_timed_automata.pdf |Timed Automata}} * {{ :didattica:magistrale:svl:ay_1920:2_-_timed_paths_divergence_timelocks_zenoness.pdf |Timed Paths, Divergence, Timelocks, Zenoness}} * {{ :didattica:magistrale:svl:ay_1920:3_-_timed_ctl.pdf |Timed CTL}} * [[http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf|UPPAAL Tutorial]] ==== Exercises ==== **Exercises with (some) solutions** * {{ :didattica:magistrale:svl:ay_1920:exsolmodelsandmodelling.pdf |Transition Systems and Modelling Languages for Reactive Systems}} * {{ :didattica:magistrale:svl:ay_1920:exsollineartime.pdf |Linear Time Properties}} * {{ :didattica:magistrale:svl:ay_1920:exsolltlctl_with_exercises_from_book.pdf |Regular Properties, LTL and CTL}} - **NOTE 1:** some of the exercises on Regular Properties and on LTL require to calculate the product between the transition system and the non-Deterministic Buechi Automaton (NBA) corresponding to the formula - ignore that part and justify your answer by providing the counterexample without providing the product construction. **NOTE 2:** some of the exercises on CTL require to show the steps of the Sat algorithm for deciding the satisfaction of the formula by a state or by a transition system: ignore this request and provide, if possible, an informal justification; if not possible ignore the exercise. ==== Sample Past Written Tests with Solutions ==== * {{ :didattica:magistrale:svl:ay_1920:svl1819appello1.pdf |Text1}}, {{ :didattica:magistrale:svl:ay_1920:svl1819appello1solutionwithnotes.pdf |Text1 with Solutions}} * {{ :didattica:magistrale:svl:ay_1920:svl1819appello2.pdf |Text2}}, {{ :didattica:magistrale:svl:ay_1920:svl1819appello2withsolution.pdf |Text2 with Solutions}} * {{ :didattica:magistrale:svl:ay_1920:svl1819appello3.pdf |Text3}}, {{ :didattica:magistrale:svl:ay_1920:svl1819appello3_with_solutions.pdf |Text3 with Solutions}} * ==== Textbooks ==== * Christel Baier, Joost-Pieter Katoen, “Principles of Model Checking”, The MIT Press, 2008. **Reference books** * Michael Huth, Mark Ryan, "Logic in Computer Science", Second Edition, Cambridge University Press, 2004. ISBN: 9780521543101. * Luca Aceto, Anna Ingólfsdóttir, Kim Guldstrand Larsen, Jiri Srba, "Reactive Systems", Cambridge University Press, 2007. ---- ===== Project ===== * The project for 2020/2021 will be given on the **Google Classroom** platform during the course: [[https://classroom.google.com/c/MjkxNDU4MTYwNjA5?cjc=557nyk5]] (login with @studenti.unicam.it credentials) ---- ===== Exams ===== **Exam Dates A.Y. 2020/2021** Dates of Partial Exams "SVL2021 Sess. XXX - Project Delivery" and "SVL2021 Sess. XXX - Written Test" can be found in the [[https://didattica.unicam.it|ESSE3 Career System]] after login. **Exam rules** The exam consists of a written test, containing open-answer questions, together with one project, realised with the tools introduced in the course (see section "Projects" above). The Written Test and the Project are two independent Partial Exams (see the exam sessions in the ESSE3 career system) and can be passed in different exam sessions. The final grade, which is the average of the grades of the two Partial Exams, can be obtained and registered only if both the Partial Exams have been passed with a grade of at least 18/30. **Registration for the written tests** must be done using the Student Career System ESSE3 [[https://didattica.unicam.it|here]]. Please note that the registration **deadline** is usually **3 working days before** the written test date. During the exercise sessions throughout the course samples of the written test questions will be presented with solutions. **During the written test students can consult a hand-written A4 paper of their production for reference.** **Instructions for Sending Projects** Students must create a folder in Google Drive, using the Google account associated to their email name.surname@studenti.unicam.it The folder must contain all the files relative to the project and a written report, in English, which describes all the phases of the developing of the project. The use of screenshots is encouraged to show, within the report, the runs and the results of the project. The folder must be named SVL2021-Project-N-APP-X-Surname-Name where N is the number of the realised project (according to the section "Projects" above) and X is the number of the exam session (Appello) as specified for each date of the written test above. The folder must be shared (using Google Drive facilities) with luca.tesei@unicam.it and andrea.polini@unicam.it by 11.59pm of the day before the written test scheduled for the selected session X. Students that send the project must also register to the Partial Exam "SVL2021 Sess. XXX - Project Delivery" in ESSE3, specified for each exam session. ** Exam Results ** * The results will be communicated through this site or by email (depending on the number of students). * Contextually to the communication of the results, students will be invited to accept or reject the evaluation. * A positive evaluation (>=18/30) of each Partial Exam (Written Test and Project) remains valid for **one year** or **until the student retries** the Partial Exam. * If both grades (Written Test and Project) are accepted, the final grade will be registered in ESSE3. ----