<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="et">
	<id>http://courses.cs.taltech.ee/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=DeepakPal</id>
	<title>Kursused - Kasutaja kaastöö [et]</title>
	<link rel="self" type="application/atom+xml" href="http://courses.cs.taltech.ee/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=DeepakPal"/>
	<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/pages/Eri:Kaast%C3%B6%C3%B6/DeepakPal"/>
	<updated>2026-04-09T11:09:09Z</updated>
	<subtitle>Kasutaja kaastöö</subtitle>
	<generator>MediaWiki 1.35.9</generator>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6727</id>
		<title>Software Synthesis and Verification</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6727"/>
		<updated>2018-05-13T07:24:35Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: /* Labs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8531 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039;: http://courses.cs.ttu.ee/pages/ITI0130&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lab assistant&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Deepak Pal &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: deepak.pal ätt ttu.ee, &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous courses: [http://vana.cs.ttu.ee/tiki-index.php?page=ITI0060 2014]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Thursdays 10:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 12:00, ICT-122 - Deepak Pal&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exams: &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Thursday May 1, 10:00, room ICT-A2 &amp;lt;br&amp;gt;&lt;br /&gt;
* Thursday May 8, 10:00, room ICT-A2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_18_Intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_18_transition_systems.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_18_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_18_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_18_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1 (see Exercises 1 below)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;15.03.2018&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
** [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: Model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_6.1_18_Specifications.pdf|Lecture 7.1]]: Program specifications&lt;br /&gt;
* [[Media:ITI8531_Lecture_6.2_18_verification.pdf|Lecture 7.2]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI8531_Lecture_7_18_proving (2).pdf|Lecture 8]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI8531_Lecture_8_18_total_correctness.pdf|Lecture 9]]: Proving total correctness of while-programs &lt;br /&gt;
* [[Media:ITI8531_Lecture_9_2017_parallel_programs.pdf|Lecture 14]]: Verifying nondeterministic and parallel programs&lt;br /&gt;
* Practicing for Test 2 (26.04.2018): Deductive verification of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:ITI8531_Genzen_1st_order_calculus.pdf|Genzen 1st order calculus]]: Genzen 1st order sequent calculus (proof rules)&lt;br /&gt;
* Test 2 (03.05.2018, 12.00): Deductive verification of sequential, non-deterministic and parallel programs&lt;br /&gt;
* [[Media:ITI8531_synthesis1_2017.pdf|Lecture 8]]: Program synthesis I&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 9]]: Program synthesis II&lt;br /&gt;
* Test 3 (17.05.2018): Program synthesis&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &lt;br /&gt;
** Slides: [[Media:UPPAAL Tutorial.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:LightController.xml|Light Controller Model]]&lt;br /&gt;
** Query: [[Media:LightControllerQuery.q|Light Controller Query]]&lt;br /&gt;
** For More reading, refer below links:&lt;br /&gt;
*** [http://www.uppaal.org/ UPPAAL website]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Small tutorial on UPPAAL]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf Tutorial on UPPAAL]&lt;br /&gt;
&lt;br /&gt;
* Lab 2: Validation (simulation) and verification (automatic model-checking) in UPPAAL &lt;br /&gt;
** Slides: [[Media:New_Lab2_MODEL_CHECKING.pdf|Model Checking introduction]]&lt;br /&gt;
** Model: [[Media:Atm_system.xml|ATM System Model]]&lt;br /&gt;
** Query: [[Media:Atm_system_query.q|ATM System Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 3: Understanding of Clocks and State Space Explosion in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lab3_Lab_Lecture.pdf|Uppaal Modelling Language]]&lt;br /&gt;
** Model: [[Media:Jobber.xml|JobShop Model with three possible scenarios]]&lt;br /&gt;
** Query: [[Media:Jobber_Query1.q|JobShop Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 4-5: Implementation of Mutual Exclusion Algorithms in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lecture_5.pdf|The Mutual Exclusion Problem and Algorithms]]&lt;br /&gt;
** Model: [[Media:Attempt1_Model.xml|First Attempt Algorithm Model]]&lt;br /&gt;
** Query: [[Media:Attempt1_query.q|First Attempt Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Lab Assignment: ATM System, JobShop, Implementation of Mutual Exclusion Algo. &lt;br /&gt;
** Slides: [[Media:Lab_Assignments.pdf|Tasks and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7-8: Assignment: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Assignment: Elevator Control&lt;br /&gt;
** Slides: [[Media:ElevatorControl_V1_29062017.pdf|Example and explanation]]&lt;br /&gt;
** Slides: [[Media:ModellingRequirement.pptx|Modelling Requirements]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Final Assessment on 17 May 2018&lt;br /&gt;
** Lab defending of all given assignment.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 4: Assignment 1: Coffee Machine&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab1_Coffee_machine_2015.pdf|Example and explanation]]&lt;br /&gt;
** Model: [[Media:ITI0130_Coffee.xml|Coffee machine]]&lt;br /&gt;
** Query: [[Media:ITI0130_Coffee.q|Coffee machine]]&lt;br /&gt;
* Lab 6: Assignment 3: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12]]&lt;br /&gt;
* Lab 7: Lab Exam&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 7: KeY Introduction&lt;br /&gt;
** Installation: [[Media:ITI0130_Lab7_2016_KeY.pdf|KeY Installation]]&lt;br /&gt;
** Bank example: [[Media:ITI0130_Lab7_2016_Bank.zip|Bank example]]&lt;br /&gt;
** Bank JML: [[Media:ITI0130_Lab7_2016_Bank_JML.zip|Bank JML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Design-by-Contract&lt;br /&gt;
** [https://github.com/nhatminhle/cofoja Contracts for Java (Cofoja)]&lt;br /&gt;
** [https://code.google.com/p/cofoja/w/list Cofoja wiki page]&lt;br /&gt;
** [[Media:ITI0130_Lab5_cofoja_setup.pdf|Installation instructions]]&lt;br /&gt;
** [[Media:ITI0130_Lab5_FM_cofoja.zip|Sample code]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_db2.zip|Secure Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 8: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab8_Key_Instruction.pdf|Installation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
* Lab 11: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab11_Key_practise.zip|JML]]&lt;br /&gt;
** [[Media:ITI0130_Lab11_summax.zip|SumAndMax Example]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab12_Key_assignment.zip|Key assignment]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab13_Bank_example_solution.zip|Solution to Bank example]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Test 1_2017for practicing.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&lt;br /&gt;
* [[Media:Exercises_2.pdf|Exercises 2]]: Partial correctness of WHILE-programs&lt;br /&gt;
** [[Media:while_program_example_2015.pdf|Example 1]]: Partial correctness of WHILE-loop&lt;br /&gt;
** [[Media:DEDUCTIVE_VERIFICATION_Example_2.pdf|Example 2]]: Partial correctness of FOR-loop&lt;br /&gt;
* Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Exercises__3.pdf|Exercises 3.1]]: Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Test3_exercises_solutions.pdf|Exercises 3.2]]: Partial correctness of non-deterministic and parallel programs &lt;br /&gt;
** [[Media:Harjutused_3.pdf|Exercises 3.3]]: Parallel programs with message passing&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://www.fmeurope.org/ Formal Methods Europe]&lt;br /&gt;
* [[Media: 1st_order_proof_rules.pdf|Genzen&amp;#039;s proof system for 1st order logic]]: &lt;br /&gt;
* [[Media: Proof_rules_of_Hoare_logic.pdf|HL proof rules for sequential and parallel programs]]:&lt;br /&gt;
* [[Media: Invariants.pdf|Some guidlines how to find invariants]]&lt;br /&gt;
* Mike Gordon&amp;#039;s lecture notes on Hoare logic [http://www.lsv.ens-cachan.fr/~demri/Gordon14.pdf]&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6726</id>
		<title>Software Synthesis and Verification</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6726"/>
		<updated>2018-05-13T07:23:43Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: /* Labs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8531 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039;: http://courses.cs.ttu.ee/pages/ITI0130&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lab assistant&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Deepak Pal &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: deepak.pal ätt ttu.ee, &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous courses: [http://vana.cs.ttu.ee/tiki-index.php?page=ITI0060 2014]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Thursdays 10:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 12:00, ICT-122 - Deepak Pal&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exams: &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Thursday May 1, 10:00, room ICT-A2 &amp;lt;br&amp;gt;&lt;br /&gt;
* Thursday May 8, 10:00, room ICT-A2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_18_Intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_18_transition_systems.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_18_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_18_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_18_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1 (see Exercises 1 below)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;15.03.2018&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
** [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: Model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_6.1_18_Specifications.pdf|Lecture 7.1]]: Program specifications&lt;br /&gt;
* [[Media:ITI8531_Lecture_6.2_18_verification.pdf|Lecture 7.2]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI8531_Lecture_7_18_proving (2).pdf|Lecture 8]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI8531_Lecture_8_18_total_correctness.pdf|Lecture 9]]: Proving total correctness of while-programs &lt;br /&gt;
* [[Media:ITI8531_Lecture_9_2017_parallel_programs.pdf|Lecture 14]]: Verifying nondeterministic and parallel programs&lt;br /&gt;
* Practicing for Test 2 (26.04.2018): Deductive verification of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:ITI8531_Genzen_1st_order_calculus.pdf|Genzen 1st order calculus]]: Genzen 1st order sequent calculus (proof rules)&lt;br /&gt;
* Test 2 (03.05.2018, 12.00): Deductive verification of sequential, non-deterministic and parallel programs&lt;br /&gt;
* [[Media:ITI8531_synthesis1_2017.pdf|Lecture 8]]: Program synthesis I&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 9]]: Program synthesis II&lt;br /&gt;
* Test 3 (17.05.2018): Program synthesis&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &lt;br /&gt;
** Slides: [[Media:UPPAAL Tutorial.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:LightController.xml|Light Controller Model]]&lt;br /&gt;
** Query: [[Media:LightControllerQuery.q|Light Controller Query]]&lt;br /&gt;
** For More reading, refer below links:&lt;br /&gt;
*** [http://www.uppaal.org/ UPPAAL website]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Small tutorial on UPPAAL]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf Tutorial on UPPAAL]&lt;br /&gt;
&lt;br /&gt;
* Lab 2: Validation (simulation) and verification (automatic model-checking) in UPPAAL &lt;br /&gt;
** Slides: [[Media:New_Lab2_MODEL_CHECKING.pdf|Model Checking introduction]]&lt;br /&gt;
** Model: [[Media:Atm_system.xml|ATM System Model]]&lt;br /&gt;
** Query: [[Media:Atm_system_query.q|ATM System Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 3: Understanding of Clocks and State Space Explosion in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lab3_Lab_Lecture.pdf|Uppaal Modelling Language]]&lt;br /&gt;
** Model: [[Media:Jobber.xml|JobShop Model with three possible scenarios]]&lt;br /&gt;
** Query: [[Media:Jobber_Query1.q|JobShop Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 4-5: Implementation of Mutual Exclusion Algorithms in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lecture_5.pdf|The Mutual Exclusion Problem and Algorithms]]&lt;br /&gt;
** Model: [[Media:Attempt1_Model.xml|First Attempt Algorithm Model]]&lt;br /&gt;
** Query: [[Media:Attempt1_query.q|First Attempt Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Lab Assignment: ATM System, JobShop, Implementation of Mutual Exclusion Algo. &lt;br /&gt;
** Slides: [[Media:Lab_Assignments.pdf|Tasks and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7-8: Assignment: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Assignment: Elevator Control&lt;br /&gt;
** Slides: [[Media:ElevatorControl_V1_29062017.pdf|Example and explanation]]&lt;br /&gt;
** Slides: [[Media:ModellingRequirement.pptx|Modelling Requirements]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Final Assessment&lt;br /&gt;
** Lab defending of all given assignment.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 4: Assignment 1: Coffee Machine&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab1_Coffee_machine_2015.pdf|Example and explanation]]&lt;br /&gt;
** Model: [[Media:ITI0130_Coffee.xml|Coffee machine]]&lt;br /&gt;
** Query: [[Media:ITI0130_Coffee.q|Coffee machine]]&lt;br /&gt;
* Lab 6: Assignment 3: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12]]&lt;br /&gt;
* Lab 7: Lab Exam&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 7: KeY Introduction&lt;br /&gt;
** Installation: [[Media:ITI0130_Lab7_2016_KeY.pdf|KeY Installation]]&lt;br /&gt;
** Bank example: [[Media:ITI0130_Lab7_2016_Bank.zip|Bank example]]&lt;br /&gt;
** Bank JML: [[Media:ITI0130_Lab7_2016_Bank_JML.zip|Bank JML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Design-by-Contract&lt;br /&gt;
** [https://github.com/nhatminhle/cofoja Contracts for Java (Cofoja)]&lt;br /&gt;
** [https://code.google.com/p/cofoja/w/list Cofoja wiki page]&lt;br /&gt;
** [[Media:ITI0130_Lab5_cofoja_setup.pdf|Installation instructions]]&lt;br /&gt;
** [[Media:ITI0130_Lab5_FM_cofoja.zip|Sample code]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_db2.zip|Secure Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 8: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab8_Key_Instruction.pdf|Installation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
* Lab 11: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab11_Key_practise.zip|JML]]&lt;br /&gt;
** [[Media:ITI0130_Lab11_summax.zip|SumAndMax Example]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab12_Key_assignment.zip|Key assignment]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab13_Bank_example_solution.zip|Solution to Bank example]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Test 1_2017for practicing.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&lt;br /&gt;
* [[Media:Exercises_2.pdf|Exercises 2]]: Partial correctness of WHILE-programs&lt;br /&gt;
** [[Media:while_program_example_2015.pdf|Example 1]]: Partial correctness of WHILE-loop&lt;br /&gt;
** [[Media:DEDUCTIVE_VERIFICATION_Example_2.pdf|Example 2]]: Partial correctness of FOR-loop&lt;br /&gt;
* Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Exercises__3.pdf|Exercises 3.1]]: Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Test3_exercises_solutions.pdf|Exercises 3.2]]: Partial correctness of non-deterministic and parallel programs &lt;br /&gt;
** [[Media:Harjutused_3.pdf|Exercises 3.3]]: Parallel programs with message passing&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://www.fmeurope.org/ Formal Methods Europe]&lt;br /&gt;
* [[Media: 1st_order_proof_rules.pdf|Genzen&amp;#039;s proof system for 1st order logic]]: &lt;br /&gt;
* [[Media: Proof_rules_of_Hoare_logic.pdf|HL proof rules for sequential and parallel programs]]:&lt;br /&gt;
* [[Media: Invariants.pdf|Some guidlines how to find invariants]]&lt;br /&gt;
* Mike Gordon&amp;#039;s lecture notes on Hoare logic [http://www.lsv.ens-cachan.fr/~demri/Gordon14.pdf]&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6629</id>
		<title>Software Synthesis and Verification</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6629"/>
		<updated>2018-04-15T19:16:16Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: /* Labs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8531 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039;: http://courses.cs.ttu.ee/pages/ITI0130&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lab assistant&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Deepak Pal &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: deepak.pal ätt ttu.ee, &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous courses: [http://vana.cs.ttu.ee/tiki-index.php?page=ITI0060 2014]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Thursdays 10:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 12:00, ICT-122 - Deepak Pal&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exams: &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Thursday May 1, 10:00, room ICT-A2 &amp;lt;br&amp;gt;&lt;br /&gt;
* Thursday May 8, 10:00, room ICT-A2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_18_Intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_18_transition_systems.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_18_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_18_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_18_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1 (see Exercises 1 below)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;15.03.2018&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
** [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: Model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_6.1_18_Specifications.pdf|Lecture 7.1]]: Program specifications&lt;br /&gt;
* [[Media:ITI8531_Lecture_6.2_18_verification.pdf|Lecture 7.2]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI8531_Lecture_7_18_proving (2).pdf|Lecture 8]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI8531_Lecture_8_18_total_correctness.pdf|Lecture 9]]: Proving total correctness of while-programs &lt;br /&gt;
* [[Media:ITI8531_Lecture_9_2017_parallel_programs.pdf|Lecture 14]]: Verifying nondeterministic and parallel programs&lt;br /&gt;
* Test 2 (26.04.2018): Deductive verification of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:ITI8531_Genzen_1st_order_calculus.pdf|Genzen 1st order calculus]]: Genzen 1st order sequent calculus (proof rules)&lt;br /&gt;
&lt;br /&gt;
* [[Media:ITI8531_synthesis1_2017.pdf|Lecture 8]]: Program synthesis I&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 9]]: Program synthesis II&lt;br /&gt;
* Test 3 (13.04.2017): Program synthesis&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &lt;br /&gt;
** Slides: [[Media:UPPAAL Tutorial.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:LightController.xml|Light Controller Model]]&lt;br /&gt;
** Query: [[Media:LightControllerQuery.q|Light Controller Query]]&lt;br /&gt;
** For More reading, refer below links:&lt;br /&gt;
*** [http://www.uppaal.org/ UPPAAL website]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Small tutorial on UPPAAL]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf Tutorial on UPPAAL]&lt;br /&gt;
&lt;br /&gt;
* Lab 2: Validation (simulation) and verification (automatic model-checking) in UPPAAL &lt;br /&gt;
** Slides: [[Media:New_Lab2_MODEL_CHECKING.pdf|Model Checking introduction]]&lt;br /&gt;
** Model: [[Media:Atm_system.xml|ATM System Model]]&lt;br /&gt;
** Query: [[Media:Atm_system_query.q|ATM System Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 3: Understanding of Clocks and State Space Explosion in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lab3_Lab_Lecture.pdf|Uppaal Modelling Language]]&lt;br /&gt;
** Model: [[Media:Jobber.xml|JobShop Model with three possible scenarios]]&lt;br /&gt;
** Query: [[Media:Jobber_Query1.q|JobShop Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 4-5: Implementation of Mutual Exclusion Algorithms in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lecture_5.pdf|The Mutual Exclusion Problem and Algorithms]]&lt;br /&gt;
** Model: [[Media:Attempt1_Model.xml|First Attempt Algorithm Model]]&lt;br /&gt;
** Query: [[Media:Attempt1_query.q|First Attempt Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Lab Assignment: ATM System, JobShop, Implementation of Mutual Exclusion Algo. &lt;br /&gt;
** Slides: [[Media:Lab_Assignments.pdf|Tasks and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7-8: Assignment: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Assignment: Elevator Control&lt;br /&gt;
** Slides: [[Media:ElevatorControl_V1_29062017.pdf|Example and explanation]]&lt;br /&gt;
** Slides: [[Media:ModellingRequirement.pptx|Modelling Requirements]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 4: Assignment 1: Coffee Machine&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab1_Coffee_machine_2015.pdf|Example and explanation]]&lt;br /&gt;
** Model: [[Media:ITI0130_Coffee.xml|Coffee machine]]&lt;br /&gt;
** Query: [[Media:ITI0130_Coffee.q|Coffee machine]]&lt;br /&gt;
* Lab 6: Assignment 3: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12]]&lt;br /&gt;
* Lab 7: Lab Exam&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 7: KeY Introduction&lt;br /&gt;
** Installation: [[Media:ITI0130_Lab7_2016_KeY.pdf|KeY Installation]]&lt;br /&gt;
** Bank example: [[Media:ITI0130_Lab7_2016_Bank.zip|Bank example]]&lt;br /&gt;
** Bank JML: [[Media:ITI0130_Lab7_2016_Bank_JML.zip|Bank JML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Design-by-Contract&lt;br /&gt;
** [https://github.com/nhatminhle/cofoja Contracts for Java (Cofoja)]&lt;br /&gt;
** [https://code.google.com/p/cofoja/w/list Cofoja wiki page]&lt;br /&gt;
** [[Media:ITI0130_Lab5_cofoja_setup.pdf|Installation instructions]]&lt;br /&gt;
** [[Media:ITI0130_Lab5_FM_cofoja.zip|Sample code]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_db2.zip|Secure Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 8: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab8_Key_Instruction.pdf|Installation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
* Lab 11: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab11_Key_practise.zip|JML]]&lt;br /&gt;
** [[Media:ITI0130_Lab11_summax.zip|SumAndMax Example]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab12_Key_assignment.zip|Key assignment]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab13_Bank_example_solution.zip|Solution to Bank example]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Test 1_2017for practicing.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&lt;br /&gt;
* [[Media:Exercises_2.pdf|Exercises 2]]: Partial correctness of WHILE-programs&lt;br /&gt;
** [[Media:while_program_example_2015.pdf|Example 1]]: Partial correctness of WHILE-loop&lt;br /&gt;
** [[Media:DEDUCTIVE_VERIFICATION_Example_2.pdf|Example 2]]: Partial correctness of FOR-loop&lt;br /&gt;
* Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Exercises__3.pdf|Exercises 3.1]]: Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Test3_exercises_solutions.pdf|Exercises 3.2]]: Partial correctness of non-deterministic and parallel programs &lt;br /&gt;
** [[Media:Harjutused_3.pdf|Exercises 3.3]]: Parallel programs with message passing&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://www.fmeurope.org/ Formal Methods Europe]&lt;br /&gt;
* [[Media: 1st_order_proof_rules.pdf|Genzen&amp;#039;s proof system for 1st order logic]]: &lt;br /&gt;
* [[Media: Proof_rules_of_Hoare_logic.pdf|HL proof rules for sequential and parallel programs]]:&lt;br /&gt;
* [[Media: Invariants.pdf|Some guidlines how to find invariants]]&lt;br /&gt;
* Mike Gordon&amp;#039;s lecture notes on Hoare logic [http://www.lsv.ens-cachan.fr/~demri/Gordon14.pdf]&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:ModellingRequirement.pptx&amp;diff=6628</id>
		<title>Fail:ModellingRequirement.pptx</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:ModellingRequirement.pptx&amp;diff=6628"/>
		<updated>2018-04-15T19:14:12Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6627</id>
		<title>Software Synthesis and Verification</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6627"/>
		<updated>2018-04-15T19:12:58Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: /* Labs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8531 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039;: http://courses.cs.ttu.ee/pages/ITI0130&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lab assistant&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Deepak Pal &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: deepak.pal ätt ttu.ee, &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous courses: [http://vana.cs.ttu.ee/tiki-index.php?page=ITI0060 2014]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Thursdays 10:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 12:00, ICT-122 - Deepak Pal&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exams: &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Thursday May 1, 10:00, room ICT-A2 &amp;lt;br&amp;gt;&lt;br /&gt;
* Thursday May 8, 10:00, room ICT-A2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_18_Intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_18_transition_systems.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_18_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_18_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_18_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1 (see Exercises 1 below)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;15.03.2018&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
** [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: Model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_6.1_18_Specifications.pdf|Lecture 7.1]]: Program specifications&lt;br /&gt;
* [[Media:ITI8531_Lecture_6.2_18_verification.pdf|Lecture 7.2]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI8531_Lecture_7_18_proving (2).pdf|Lecture 8]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI8531_Lecture_8_18_total_correctness.pdf|Lecture 9]]: Proving total correctness of while-programs &lt;br /&gt;
* [[Media:ITI8531_Lecture_9_2017_parallel_programs.pdf|Lecture 14]]: Verifying nondeterministic and parallel programs&lt;br /&gt;
* Test 2 (26.04.2018): Deductive verification of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:ITI8531_Genzen_1st_order_calculus.pdf|Genzen 1st order calculus]]: Genzen 1st order sequent calculus (proof rules)&lt;br /&gt;
&lt;br /&gt;
* [[Media:ITI8531_synthesis1_2017.pdf|Lecture 8]]: Program synthesis I&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 9]]: Program synthesis II&lt;br /&gt;
* Test 3 (13.04.2017): Program synthesis&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &lt;br /&gt;
** Slides: [[Media:UPPAAL Tutorial.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:LightController.xml|Light Controller Model]]&lt;br /&gt;
** Query: [[Media:LightControllerQuery.q|Light Controller Query]]&lt;br /&gt;
** For More reading, refer below links:&lt;br /&gt;
*** [http://www.uppaal.org/ UPPAAL website]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Small tutorial on UPPAAL]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf Tutorial on UPPAAL]&lt;br /&gt;
&lt;br /&gt;
* Lab 2: Validation (simulation) and verification (automatic model-checking) in UPPAAL &lt;br /&gt;
** Slides: [[Media:New_Lab2_MODEL_CHECKING.pdf|Model Checking introduction]]&lt;br /&gt;
** Model: [[Media:Atm_system.xml|ATM System Model]]&lt;br /&gt;
** Query: [[Media:Atm_system_query.q|ATM System Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 3: Understanding of Clocks and State Space Explosion in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lab3_Lab_Lecture.pdf|Uppaal Modelling Language]]&lt;br /&gt;
** Model: [[Media:Jobber.xml|JobShop Model with three possible scenarios]]&lt;br /&gt;
** Query: [[Media:Jobber_Query1.q|JobShop Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 4-5: Implementation of Mutual Exclusion Algorithms in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lecture_5.pdf|The Mutual Exclusion Problem and Algorithms]]&lt;br /&gt;
** Model: [[Media:Attempt1_Model.xml|First Attempt Algorithm Model]]&lt;br /&gt;
** Query: [[Media:Attempt1_query.q|First Attempt Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Lab Assignment: ATM System, JobShop, Implementation of Mutual Exclusion Algo. &lt;br /&gt;
** Slides: [[Media:Lab_Assignments.pdf|Tasks and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7-8: Assignment: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Assignment: Elevator Control&lt;br /&gt;
** Slides: [[Media:ElevatorControl_V1_29062017.pdf|Example and explanation]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 4: Assignment 1: Coffee Machine&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab1_Coffee_machine_2015.pdf|Example and explanation]]&lt;br /&gt;
** Model: [[Media:ITI0130_Coffee.xml|Coffee machine]]&lt;br /&gt;
** Query: [[Media:ITI0130_Coffee.q|Coffee machine]]&lt;br /&gt;
* Lab 6: Assignment 3: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12]]&lt;br /&gt;
* Lab 7: Lab Exam&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 7: KeY Introduction&lt;br /&gt;
** Installation: [[Media:ITI0130_Lab7_2016_KeY.pdf|KeY Installation]]&lt;br /&gt;
** Bank example: [[Media:ITI0130_Lab7_2016_Bank.zip|Bank example]]&lt;br /&gt;
** Bank JML: [[Media:ITI0130_Lab7_2016_Bank_JML.zip|Bank JML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Design-by-Contract&lt;br /&gt;
** [https://github.com/nhatminhle/cofoja Contracts for Java (Cofoja)]&lt;br /&gt;
** [https://code.google.com/p/cofoja/w/list Cofoja wiki page]&lt;br /&gt;
** [[Media:ITI0130_Lab5_cofoja_setup.pdf|Installation instructions]]&lt;br /&gt;
** [[Media:ITI0130_Lab5_FM_cofoja.zip|Sample code]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_db2.zip|Secure Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 8: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab8_Key_Instruction.pdf|Installation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
* Lab 11: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab11_Key_practise.zip|JML]]&lt;br /&gt;
** [[Media:ITI0130_Lab11_summax.zip|SumAndMax Example]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab12_Key_assignment.zip|Key assignment]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab13_Bank_example_solution.zip|Solution to Bank example]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Test 1_2017for practicing.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&lt;br /&gt;
* [[Media:Exercises_2.pdf|Exercises 2]]: Partial correctness of WHILE-programs&lt;br /&gt;
** [[Media:while_program_example_2015.pdf|Example 1]]: Partial correctness of WHILE-loop&lt;br /&gt;
** [[Media:DEDUCTIVE_VERIFICATION_Example_2.pdf|Example 2]]: Partial correctness of FOR-loop&lt;br /&gt;
* Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Exercises__3.pdf|Exercises 3.1]]: Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Test3_exercises_solutions.pdf|Exercises 3.2]]: Partial correctness of non-deterministic and parallel programs &lt;br /&gt;
** [[Media:Harjutused_3.pdf|Exercises 3.3]]: Parallel programs with message passing&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://www.fmeurope.org/ Formal Methods Europe]&lt;br /&gt;
* [[Media: 1st_order_proof_rules.pdf|Genzen&amp;#039;s proof system for 1st order logic]]: &lt;br /&gt;
* [[Media: Proof_rules_of_Hoare_logic.pdf|HL proof rules for sequential and parallel programs]]:&lt;br /&gt;
* [[Media: Invariants.pdf|Some guidlines how to find invariants]]&lt;br /&gt;
* Mike Gordon&amp;#039;s lecture notes on Hoare logic [http://www.lsv.ens-cachan.fr/~demri/Gordon14.pdf]&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:ElevatorControl_V1_29062017.pdf&amp;diff=6626</id>
		<title>Fail:ElevatorControl V1 29062017.pdf</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:ElevatorControl_V1_29062017.pdf&amp;diff=6626"/>
		<updated>2018-04-15T19:12:23Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6556</id>
		<title>Software Synthesis and Verification</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6556"/>
		<updated>2018-03-29T06:35:43Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: /* Labs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8531 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039;: http://courses.cs.ttu.ee/pages/ITI0130&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lab assistant&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Deepak Pal &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: deepak.pal ätt ttu.ee, &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous courses: [http://vana.cs.ttu.ee/tiki-index.php?page=ITI0060 2014]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Thursdays 10:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 12:00, ICT-122 - Deepak Pal&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exams: &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Thursday May 1, 10:00, room ICT-A2 &amp;lt;br&amp;gt;&lt;br /&gt;
* Thursday May 8, 10:00, room ICT-A2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_18_Intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_18_transition_systems.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_18_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_17_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_17_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1 (see Exercises 1 below)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;16.03.2017&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
** [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: Model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_16_Specifications.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI8531_synthesis1_2017.pdf|Lecture 8]]: Program synthesis I&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 9]]: Program synthesis II&lt;br /&gt;
* Test 2 (13.04.2017): Program synthesis&lt;br /&gt;
* [[Media:ITI8531_Lecture_6_16_rules.pdf|Lecture 11]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 12.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 12.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 13]]: Proving total correctness of while-programs &lt;br /&gt;
* [[Media:ITI8531_Lecture_9_2017_parallel_programs.pdf|Lecture 14]]: Verifying nondeterministic and parallel programs&lt;br /&gt;
* Test 3 (25.05.2017): Deductive verification of non-deterministic and parallel programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &lt;br /&gt;
** Slides: [[Media:UPPAAL Tutorial.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:LightController.xml|Light Controller Model]]&lt;br /&gt;
** Query: [[Media:LightControllerQuery.q|Light Controller Query]]&lt;br /&gt;
** For More reading, refer below links:&lt;br /&gt;
*** [http://www.uppaal.org/ UPPAAL website]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Small tutorial on UPPAAL]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf Tutorial on UPPAAL]&lt;br /&gt;
&lt;br /&gt;
* Lab 2: Validation (simulation) and verification (automatic model-checking) in UPPAAL &lt;br /&gt;
** Slides: [[Media:New_Lab2_MODEL_CHECKING.pdf|Model Checking introduction]]&lt;br /&gt;
** Model: [[Media:Atm_system.xml|ATM System Model]]&lt;br /&gt;
** Query: [[Media:Atm_system_query.q|ATM System Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 3: Understanding of Clocks and State Space Explosion in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lab3_Lab_Lecture.pdf|Uppaal Modelling Language]]&lt;br /&gt;
** Model: [[Media:Jobber.xml|JobShop Model with three possible scenarios]]&lt;br /&gt;
** Query: [[Media:Jobber_Query1.q|JobShop Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 4-5: Implementation of Mutual Exclusion Algorithms in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lecture_5.pdf|The Mutual Exclusion Problem and Algorithms]]&lt;br /&gt;
** Model: [[Media:Attempt1_Model.xml|First Attempt Algorithm Model]]&lt;br /&gt;
** Query: [[Media:Attempt1_query.q|First Attempt Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Lab Assignment: ATM System, JobShop, Implementation of Mutual Exclusion Algo. &lt;br /&gt;
** Slides: [[Media:Lab_Assignments.pdf|Tasks and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7-8: Assignment: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 4: Assignment 1: Coffee Machine&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab1_Coffee_machine_2015.pdf|Example and explanation]]&lt;br /&gt;
** Model: [[Media:ITI0130_Coffee.xml|Coffee machine]]&lt;br /&gt;
** Query: [[Media:ITI0130_Coffee.q|Coffee machine]]&lt;br /&gt;
* Lab 6: Assignment 3: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12]]&lt;br /&gt;
* Lab 7: Lab Exam&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 7: KeY Introduction&lt;br /&gt;
** Installation: [[Media:ITI0130_Lab7_2016_KeY.pdf|KeY Installation]]&lt;br /&gt;
** Bank example: [[Media:ITI0130_Lab7_2016_Bank.zip|Bank example]]&lt;br /&gt;
** Bank JML: [[Media:ITI0130_Lab7_2016_Bank_JML.zip|Bank JML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Design-by-Contract&lt;br /&gt;
** [https://github.com/nhatminhle/cofoja Contracts for Java (Cofoja)]&lt;br /&gt;
** [https://code.google.com/p/cofoja/w/list Cofoja wiki page]&lt;br /&gt;
** [[Media:ITI0130_Lab5_cofoja_setup.pdf|Installation instructions]]&lt;br /&gt;
** [[Media:ITI0130_Lab5_FM_cofoja.zip|Sample code]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_db2.zip|Secure Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 8: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab8_Key_Instruction.pdf|Installation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
* Lab 11: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab11_Key_practise.zip|JML]]&lt;br /&gt;
** [[Media:ITI0130_Lab11_summax.zip|SumAndMax Example]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab12_Key_assignment.zip|Key assignment]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab13_Bank_example_solution.zip|Solution to Bank example]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Test 1_2017for practicing.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&lt;br /&gt;
* [[Media:Exercises_2.pdf|Exercises 2]]: Partial correctness of WHILE-programs&lt;br /&gt;
** [[Media:while_program_example_2015.pdf|Example 1]]: Partial correctness of WHILE-loop&lt;br /&gt;
** [[Media:DEDUCTIVE_VERIFICATION_Example_2.pdf|Example 2]]: Partial correctness of FOR-loop&lt;br /&gt;
* Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Exercises__3.pdf|Exercises 3.1]]: Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Test3_exercises_solutions.pdf|Exercises 3.2]]: Partial correctness of non-deterministic and parallel programs &lt;br /&gt;
** [[Media:Harjutused_3.pdf|Exercises 3.3]]: Parallel programs with message passing&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://www.fmeurope.org/ Formal Methods Europe]&lt;br /&gt;
* [[Media: 1st_order_proof_rules.pdf|Genzen&amp;#039;s proof system for 1st order logic]]: &lt;br /&gt;
* [[Media: Proof_rules_of_Hoare_logic.pdf|HL proof rules for sequential and parallel programs]]:&lt;br /&gt;
* [[Media: Invariants.pdf|Some guidlines how to find invariants]]&lt;br /&gt;
* Mike Gordon&amp;#039;s lecture notes on Hoare logic [http://www.lsv.ens-cachan.fr/~demri/Gordon14.pdf]&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6555</id>
		<title>Software Synthesis and Verification</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6555"/>
		<updated>2018-03-29T06:23:25Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: /* Labs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8531 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039;: http://courses.cs.ttu.ee/pages/ITI0130&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lab assistant&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Deepak Pal &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: deepak.pal ätt ttu.ee, &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous courses: [http://vana.cs.ttu.ee/tiki-index.php?page=ITI0060 2014]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Thursdays 10:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 12:00, ICT-122 - Deepak Pal&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exams: &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Thursday May 1, 10:00, room ICT-A2 &amp;lt;br&amp;gt;&lt;br /&gt;
* Thursday May 8, 10:00, room ICT-A2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_18_Intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_18_transition_systems.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_18_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_17_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_17_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1 (see Exercises 1 below)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;16.03.2017&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
** [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: Model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_16_Specifications.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI8531_synthesis1_2017.pdf|Lecture 8]]: Program synthesis I&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 9]]: Program synthesis II&lt;br /&gt;
* Test 2 (13.04.2017): Program synthesis&lt;br /&gt;
* [[Media:ITI8531_Lecture_6_16_rules.pdf|Lecture 11]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 12.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 12.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 13]]: Proving total correctness of while-programs &lt;br /&gt;
* [[Media:ITI8531_Lecture_9_2017_parallel_programs.pdf|Lecture 14]]: Verifying nondeterministic and parallel programs&lt;br /&gt;
* Test 3 (25.05.2017): Deductive verification of non-deterministic and parallel programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &lt;br /&gt;
** Slides: [[Media:UPPAAL Tutorial.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:LightController.xml|Light Controller Model]]&lt;br /&gt;
** Query: [[Media:LightControllerQuery.q|Light Controller Query]]&lt;br /&gt;
** For More reading, refer below links:&lt;br /&gt;
*** [http://www.uppaal.org/ UPPAAL website]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Small tutorial on UPPAAL]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf Tutorial on UPPAAL]&lt;br /&gt;
&lt;br /&gt;
* Lab 2: Validation (simulation) and verification (automatic model-checking) in UPPAAL &lt;br /&gt;
** Slides: [[Media:New_Lab2_MODEL_CHECKING.pdf|Model Checking introduction]]&lt;br /&gt;
** Model: [[Media:Atm_system.xml|ATM System Model]]&lt;br /&gt;
** Query: [[Media:Atm_system_query.q|ATM System Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 3: Understanding of Clocks and State Space Explosion in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lab3_Lab_Lecture.pdf|Uppaal Modelling Language]]&lt;br /&gt;
** Model: [[Media:Jobber.xml|JobShop Model with three possible scenarios]]&lt;br /&gt;
** Query: [[Media:Jobber_Query1.q|JobShop Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 4-5: Implementation of Mutual Exclusion Algorithms in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lecture_5.pdf|The Mutual Exclusion Problem and Algorithms]]&lt;br /&gt;
** Model: [[Media:Attempt1_Model.xml|First Attempt Algorithm Model]]&lt;br /&gt;
** Query: [[Media:Attempt1_query.q|First Attempt Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab Assignment: ATM System, JobShop, Implementation of Mutual Exclusion Algo. &lt;br /&gt;
** Slides: [[Media:Lab_Assignments.pdf|Tasks and explanation]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 4: Assignment 1: Coffee Machine&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab1_Coffee_machine_2015.pdf|Example and explanation]]&lt;br /&gt;
** Model: [[Media:ITI0130_Coffee.xml|Coffee machine]]&lt;br /&gt;
** Query: [[Media:ITI0130_Coffee.q|Coffee machine]]&lt;br /&gt;
* Lab 5: Assignment 2: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 6: Assignment 3: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12]]&lt;br /&gt;
* Lab 7: Lab Exam&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 7: KeY Introduction&lt;br /&gt;
** Installation: [[Media:ITI0130_Lab7_2016_KeY.pdf|KeY Installation]]&lt;br /&gt;
** Bank example: [[Media:ITI0130_Lab7_2016_Bank.zip|Bank example]]&lt;br /&gt;
** Bank JML: [[Media:ITI0130_Lab7_2016_Bank_JML.zip|Bank JML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Design-by-Contract&lt;br /&gt;
** [https://github.com/nhatminhle/cofoja Contracts for Java (Cofoja)]&lt;br /&gt;
** [https://code.google.com/p/cofoja/w/list Cofoja wiki page]&lt;br /&gt;
** [[Media:ITI0130_Lab5_cofoja_setup.pdf|Installation instructions]]&lt;br /&gt;
** [[Media:ITI0130_Lab5_FM_cofoja.zip|Sample code]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_db2.zip|Secure Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 8: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab8_Key_Instruction.pdf|Installation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
* Lab 11: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab11_Key_practise.zip|JML]]&lt;br /&gt;
** [[Media:ITI0130_Lab11_summax.zip|SumAndMax Example]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab12_Key_assignment.zip|Key assignment]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab13_Bank_example_solution.zip|Solution to Bank example]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Test 1_2017for practicing.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&lt;br /&gt;
* [[Media:Exercises_2.pdf|Exercises 2]]: Partial correctness of WHILE-programs&lt;br /&gt;
** [[Media:while_program_example_2015.pdf|Example 1]]: Partial correctness of WHILE-loop&lt;br /&gt;
** [[Media:DEDUCTIVE_VERIFICATION_Example_2.pdf|Example 2]]: Partial correctness of FOR-loop&lt;br /&gt;
* Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Exercises__3.pdf|Exercises 3.1]]: Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Test3_exercises_solutions.pdf|Exercises 3.2]]: Partial correctness of non-deterministic and parallel programs &lt;br /&gt;
** [[Media:Harjutused_3.pdf|Exercises 3.3]]: Parallel programs with message passing&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://www.fmeurope.org/ Formal Methods Europe]&lt;br /&gt;
* [[Media: 1st_order_proof_rules.pdf|Genzen&amp;#039;s proof system for 1st order logic]]: &lt;br /&gt;
* [[Media: Proof_rules_of_Hoare_logic.pdf|HL proof rules for sequential and parallel programs]]:&lt;br /&gt;
* [[Media: Invariants.pdf|Some guidlines how to find invariants]]&lt;br /&gt;
* Mike Gordon&amp;#039;s lecture notes on Hoare logic [http://www.lsv.ens-cachan.fr/~demri/Gordon14.pdf]&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6500</id>
		<title>Software Synthesis and Verification</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6500"/>
		<updated>2018-03-08T17:12:07Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: /* Labs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8531 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039;: http://courses.cs.ttu.ee/pages/ITI0130&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lab assistant&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Deepak Pal &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: deepak.pal ätt ttu.ee, &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous courses: [http://vana.cs.ttu.ee/tiki-index.php?page=ITI0060 2014]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Thursdays 10:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 12:00, ICT-122 - Deepak Pal&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exams: &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Thursday May 1, 10:00, room ICT-A2 &amp;lt;br&amp;gt;&lt;br /&gt;
* Thursday May 8, 10:00, room ICT-A2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_18_Intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_18_transition_systems.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_18_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_17_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_17_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1 (see Exercises 1 below)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;16.03.2017&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
** [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: Model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_16_Specifications.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI8531_synthesis1_2017.pdf|Lecture 8]]: Program synthesis I&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 9]]: Program synthesis II&lt;br /&gt;
* Test 2 (13.04.2017): Program synthesis&lt;br /&gt;
* [[Media:ITI8531_Lecture_6_16_rules.pdf|Lecture 11]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 12.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 12.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 13]]: Proving total correctness of while-programs &lt;br /&gt;
* [[Media:ITI8531_Lecture_9_2017_parallel_programs.pdf|Lecture 14]]: Verifying nondeterministic and parallel programs&lt;br /&gt;
* Test 3 (25.05.2017): Deductive verification of non-deterministic and parallel programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &lt;br /&gt;
** Slides: [[Media:UPPAAL Tutorial.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:LightController.xml|Light Controller Model]]&lt;br /&gt;
** Query: [[Media:LightControllerQuery.q|Light Controller Query]]&lt;br /&gt;
** For More reading, refer below links:&lt;br /&gt;
*** [http://www.uppaal.org/ UPPAAL website]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Small tutorial on UPPAAL]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf Tutorial on UPPAAL]&lt;br /&gt;
&lt;br /&gt;
* Lab 2: Validation (simulation) and verification (automatic model-checking) in UPPAAL &lt;br /&gt;
** Slides: [[Media:New_Lab2_MODEL_CHECKING.pdf|Model Checking introduction]]&lt;br /&gt;
** Model: [[Media:Atm_system.xml|ATM System Model]]&lt;br /&gt;
** Query: [[Media:Atm_system_query.q|ATM System Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 3: Understanding of Clocks and State Space Explosion in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lab3_Lab_Lecture.pdf|Uppaal Modelling Language]]&lt;br /&gt;
** Model: [[Media:Jobber.xml|JobShop Model with three possible scenarios]]&lt;br /&gt;
** Query: [[Media:Jobber_Query1.q|JobShop Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 4-5: Implementation of Mutual Exclusion Algorithms in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lecture_5.pdf|The Mutual Exclusion Problem and Algorithms]]&lt;br /&gt;
** Model: [[Media:Attempt1_Model.xml|First Attempt Algorithm Model]]&lt;br /&gt;
** Query: [[Media:Attempt1_query.q|First Attempt Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab Assignment: ATM System, JobShop, Implementation of Mutual Exclusion Algo. &lt;br /&gt;
** Slides: [[Media:Lab_Assignments.pdf|Tasks and explanation]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 4: Assignment 1: Coffee Machine&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab1_Coffee_machine_2015.pdf|Example and explanation]]&lt;br /&gt;
** Model: [[Media:ITI0130_Coffee.xml|Coffee machine]]&lt;br /&gt;
** Query: [[Media:ITI0130_Coffee.q|Coffee machine]]&lt;br /&gt;
* Lab 5: Assignment 2: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 6: Assignment 3: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12]]&lt;br /&gt;
* Lab 7: Lab Exam&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 7: KeY Introduction&lt;br /&gt;
** Installation: [[Media:ITI0130_Lab7_2016_KeY.pdf|KeY Installation]]&lt;br /&gt;
** Bank example: [[Media:ITI0130_Lab7_2016_Bank.zip|Bank example]]&lt;br /&gt;
** Bank JML: [[Media:ITI0130_Lab7_2016_Bank_JML.zip|Bank JML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Design-by-Contract&lt;br /&gt;
** [https://github.com/nhatminhle/cofoja Contracts for Java (Cofoja)]&lt;br /&gt;
** [https://code.google.com/p/cofoja/w/list Cofoja wiki page]&lt;br /&gt;
** [[Media:ITI0130_Lab5_cofoja_setup.pdf|Installation instructions]]&lt;br /&gt;
** [[Media:ITI0130_Lab5_FM_cofoja.zip|Sample code]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_db2.zip|Secure Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 8: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab8_Key_Instruction.pdf|Installation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
* Lab 11: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab11_Key_practise.zip|JML]]&lt;br /&gt;
** [[Media:ITI0130_Lab11_summax.zip|SumAndMax Example]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab12_Key_assignment.zip|Key assignment]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab13_Bank_example_solution.zip|Solution to Bank example]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Test 1_2017for practicing.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&lt;br /&gt;
* [[Media:Exercises_2.pdf|Exercises 2]]: Partial correctness of WHILE-programs&lt;br /&gt;
** [[Media:while_program_example_2015.pdf|Example 1]]: Partial correctness of WHILE-loop&lt;br /&gt;
** [[Media:DEDUCTIVE_VERIFICATION_Example_2.pdf|Example 2]]: Partial correctness of FOR-loop&lt;br /&gt;
* Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Exercises__3.pdf|Exercises 3.1]]: Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Test3_exercises_solutions.pdf|Exercises 3.2]]: Partial correctness of non-deterministic and parallel programs &lt;br /&gt;
** [[Media:Harjutused_3.pdf|Exercises 3.3]]: Parallel programs with message passing&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://www.fmeurope.org/ Formal Methods Europe]&lt;br /&gt;
* [[Media: 1st_order_proof_rules.pdf|Genzen&amp;#039;s proof system for 1st order logic]]: &lt;br /&gt;
* [[Media: Proof_rules_of_Hoare_logic.pdf|HL proof rules for sequential and parallel programs]]:&lt;br /&gt;
* [[Media: Invariants.pdf|Some guidlines how to find invariants]]&lt;br /&gt;
* Mike Gordon&amp;#039;s lecture notes on Hoare logic [http://www.lsv.ens-cachan.fr/~demri/Gordon14.pdf]&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:Lab_Assignments.pdf&amp;diff=6499</id>
		<title>Fail:Lab Assignments.pdf</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:Lab_Assignments.pdf&amp;diff=6499"/>
		<updated>2018-03-08T17:10:40Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6498</id>
		<title>Software Synthesis and Verification</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6498"/>
		<updated>2018-03-08T15:46:20Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: /* Labs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8531 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039;: http://courses.cs.ttu.ee/pages/ITI0130&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lab assistant&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Deepak Pal &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: deepak.pal ätt ttu.ee, &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous courses: [http://vana.cs.ttu.ee/tiki-index.php?page=ITI0060 2014]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Thursdays 10:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 12:00, ICT-122 - Deepak Pal&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exams: &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Thursday May 1, 10:00, room ICT-A2 &amp;lt;br&amp;gt;&lt;br /&gt;
* Thursday May 8, 10:00, room ICT-A2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_18_Intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_18_transition_systems.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_18_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_17_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_17_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1 (see Exercises 1 below)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;16.03.2017&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
** [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: Model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_16_Specifications.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI8531_synthesis1_2017.pdf|Lecture 8]]: Program synthesis I&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 9]]: Program synthesis II&lt;br /&gt;
* Test 2 (13.04.2017): Program synthesis&lt;br /&gt;
* [[Media:ITI8531_Lecture_6_16_rules.pdf|Lecture 11]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 12.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 12.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 13]]: Proving total correctness of while-programs &lt;br /&gt;
* [[Media:ITI8531_Lecture_9_2017_parallel_programs.pdf|Lecture 14]]: Verifying nondeterministic and parallel programs&lt;br /&gt;
* Test 3 (25.05.2017): Deductive verification of non-deterministic and parallel programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &lt;br /&gt;
** Slides: [[Media:UPPAAL Tutorial.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:LightController.xml|Light Controller Model]]&lt;br /&gt;
** Query: [[Media:LightControllerQuery.q|Light Controller Query]]&lt;br /&gt;
** For More reading, refer below links:&lt;br /&gt;
*** [http://www.uppaal.org/ UPPAAL website]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Small tutorial on UPPAAL]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf Tutorial on UPPAAL]&lt;br /&gt;
&lt;br /&gt;
* Lab 2: Validation (simulation) and verification (automatic model-checking) in UPPAAL &lt;br /&gt;
** Slides: [[Media:New_Lab2_MODEL_CHECKING.pdf|Model Checking introduction]]&lt;br /&gt;
** Model: [[Media:Atm_system.xml|ATM System Model]]&lt;br /&gt;
** Query: [[Media:Atm_system_query.q|ATM System Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 3: Understanding of Clocks and State Space Explosion in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lab3_Lab_Lecture.pdf|Uppaal Modelling Language]]&lt;br /&gt;
** Model: [[Media:Jobber.xml|JobShop Model with three possible scenarios]]&lt;br /&gt;
** Query: [[Media:Jobber_Query1.q|JobShop Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 4-5: Implementation of Mutual Exclusion Algorithms in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lecture_5.pdf|The Mutual Exclusion Problem and Algorithms]]&lt;br /&gt;
** Model: [[Media:Attempt1_Model.xml|First Attempt Algorithm Model]]&lt;br /&gt;
** Query: [[Media:Attempt1_query.q|First Attempt Query]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 4: Assignment 1: Coffee Machine&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab1_Coffee_machine_2015.pdf|Example and explanation]]&lt;br /&gt;
** Model: [[Media:ITI0130_Coffee.xml|Coffee machine]]&lt;br /&gt;
** Query: [[Media:ITI0130_Coffee.q|Coffee machine]]&lt;br /&gt;
* Lab 5: Assignment 2: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 6: Assignment 3: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12]]&lt;br /&gt;
* Lab 7: Lab Exam&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 7: KeY Introduction&lt;br /&gt;
** Installation: [[Media:ITI0130_Lab7_2016_KeY.pdf|KeY Installation]]&lt;br /&gt;
** Bank example: [[Media:ITI0130_Lab7_2016_Bank.zip|Bank example]]&lt;br /&gt;
** Bank JML: [[Media:ITI0130_Lab7_2016_Bank_JML.zip|Bank JML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Design-by-Contract&lt;br /&gt;
** [https://github.com/nhatminhle/cofoja Contracts for Java (Cofoja)]&lt;br /&gt;
** [https://code.google.com/p/cofoja/w/list Cofoja wiki page]&lt;br /&gt;
** [[Media:ITI0130_Lab5_cofoja_setup.pdf|Installation instructions]]&lt;br /&gt;
** [[Media:ITI0130_Lab5_FM_cofoja.zip|Sample code]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_db2.zip|Secure Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 8: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab8_Key_Instruction.pdf|Installation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
* Lab 11: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab11_Key_practise.zip|JML]]&lt;br /&gt;
** [[Media:ITI0130_Lab11_summax.zip|SumAndMax Example]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab12_Key_assignment.zip|Key assignment]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab13_Bank_example_solution.zip|Solution to Bank example]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Test 1_2017for practicing.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&lt;br /&gt;
* [[Media:Exercises_2.pdf|Exercises 2]]: Partial correctness of WHILE-programs&lt;br /&gt;
** [[Media:while_program_example_2015.pdf|Example 1]]: Partial correctness of WHILE-loop&lt;br /&gt;
** [[Media:DEDUCTIVE_VERIFICATION_Example_2.pdf|Example 2]]: Partial correctness of FOR-loop&lt;br /&gt;
* Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Exercises__3.pdf|Exercises 3.1]]: Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Test3_exercises_solutions.pdf|Exercises 3.2]]: Partial correctness of non-deterministic and parallel programs &lt;br /&gt;
** [[Media:Harjutused_3.pdf|Exercises 3.3]]: Parallel programs with message passing&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://www.fmeurope.org/ Formal Methods Europe]&lt;br /&gt;
* [[Media: 1st_order_proof_rules.pdf|Genzen&amp;#039;s proof system for 1st order logic]]: &lt;br /&gt;
* [[Media: Proof_rules_of_Hoare_logic.pdf|HL proof rules for sequential and parallel programs]]:&lt;br /&gt;
* [[Media: Invariants.pdf|Some guidlines how to find invariants]]&lt;br /&gt;
* Mike Gordon&amp;#039;s lecture notes on Hoare logic [http://www.lsv.ens-cachan.fr/~demri/Gordon14.pdf]&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6497</id>
		<title>Software Synthesis and Verification</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6497"/>
		<updated>2018-03-08T15:44:28Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: /* Labs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8531 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039;: http://courses.cs.ttu.ee/pages/ITI0130&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lab assistant&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Deepak Pal &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: deepak.pal ätt ttu.ee, &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous courses: [http://vana.cs.ttu.ee/tiki-index.php?page=ITI0060 2014]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Thursdays 10:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 12:00, ICT-122 - Deepak Pal&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exams: &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Thursday May 1, 10:00, room ICT-A2 &amp;lt;br&amp;gt;&lt;br /&gt;
* Thursday May 8, 10:00, room ICT-A2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_18_Intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_18_transition_systems.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_18_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_17_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_17_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1 (see Exercises 1 below)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;16.03.2017&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
** [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: Model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_16_Specifications.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI8531_synthesis1_2017.pdf|Lecture 8]]: Program synthesis I&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 9]]: Program synthesis II&lt;br /&gt;
* Test 2 (13.04.2017): Program synthesis&lt;br /&gt;
* [[Media:ITI8531_Lecture_6_16_rules.pdf|Lecture 11]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 12.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 12.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 13]]: Proving total correctness of while-programs &lt;br /&gt;
* [[Media:ITI8531_Lecture_9_2017_parallel_programs.pdf|Lecture 14]]: Verifying nondeterministic and parallel programs&lt;br /&gt;
* Test 3 (25.05.2017): Deductive verification of non-deterministic and parallel programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &lt;br /&gt;
** Slides: [[Media:UPPAAL Tutorial.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:LightController.xml|Light Controller Model]]&lt;br /&gt;
** Query: [[Media:LightControllerQuery.q|Light Controller Query]]&lt;br /&gt;
** For More reading, refer below links:&lt;br /&gt;
*** [http://www.uppaal.org/ UPPAAL website]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Small tutorial on UPPAAL]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf Tutorial on UPPAAL]&lt;br /&gt;
&lt;br /&gt;
* Lab 2: Validation (simulation) and verification (automatic model-checking) in UPPAAL &lt;br /&gt;
** Slides: [[Media:New_Lab2_MODEL_CHECKING.pdf|Model Checking introduction]]&lt;br /&gt;
** Model: [[Media:Atm_system.xml|ATM System Model]]&lt;br /&gt;
** Query: [[Media:Atm_system_query.q|ATM System Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 3: Understanding of Clocks and State Space Explosion in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lab3_Lab_Lecture.pdf|Uppaal Modelling Language]]&lt;br /&gt;
** Model: [[Media:Jobber.xml|JobShop Model with three possible scenarios]]&lt;br /&gt;
** Query: [[Media:Jobber_Query1.q|JobShop Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 4-5: Implementation of Mutual Exclusion Algorithms in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lecture_5.pdf|The Mutual Exclusion Problem and Algorithms]]&lt;br /&gt;
** Model: [[Media:Attempt1_Model.xml|First Attempt Algorithm Model]]&lt;br /&gt;
** Query: [[Media:Attempt1_query.q|First Attempt Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 4: Assignment 1: Coffee Machine&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab1_Coffee_machine_2015.pdf|Example and explanation]]&lt;br /&gt;
** Model: [[Media:ITI0130_Coffee.xml|Coffee machine]]&lt;br /&gt;
** Query: [[Media:ITI0130_Coffee.q|Coffee machine]]&lt;br /&gt;
* Lab 5: Assignment 2: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 6: Assignment 3: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12]]&lt;br /&gt;
* Lab 7: Lab Exam&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 7: KeY Introduction&lt;br /&gt;
** Installation: [[Media:ITI0130_Lab7_2016_KeY.pdf|KeY Installation]]&lt;br /&gt;
** Bank example: [[Media:ITI0130_Lab7_2016_Bank.zip|Bank example]]&lt;br /&gt;
** Bank JML: [[Media:ITI0130_Lab7_2016_Bank_JML.zip|Bank JML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Design-by-Contract&lt;br /&gt;
** [https://github.com/nhatminhle/cofoja Contracts for Java (Cofoja)]&lt;br /&gt;
** [https://code.google.com/p/cofoja/w/list Cofoja wiki page]&lt;br /&gt;
** [[Media:ITI0130_Lab5_cofoja_setup.pdf|Installation instructions]]&lt;br /&gt;
** [[Media:ITI0130_Lab5_FM_cofoja.zip|Sample code]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_db2.zip|Secure Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 8: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab8_Key_Instruction.pdf|Installation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
* Lab 11: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab11_Key_practise.zip|JML]]&lt;br /&gt;
** [[Media:ITI0130_Lab11_summax.zip|SumAndMax Example]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab12_Key_assignment.zip|Key assignment]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab13_Bank_example_solution.zip|Solution to Bank example]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Test 1_2017for practicing.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&lt;br /&gt;
* [[Media:Exercises_2.pdf|Exercises 2]]: Partial correctness of WHILE-programs&lt;br /&gt;
** [[Media:while_program_example_2015.pdf|Example 1]]: Partial correctness of WHILE-loop&lt;br /&gt;
** [[Media:DEDUCTIVE_VERIFICATION_Example_2.pdf|Example 2]]: Partial correctness of FOR-loop&lt;br /&gt;
* Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Exercises__3.pdf|Exercises 3.1]]: Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Test3_exercises_solutions.pdf|Exercises 3.2]]: Partial correctness of non-deterministic and parallel programs &lt;br /&gt;
** [[Media:Harjutused_3.pdf|Exercises 3.3]]: Parallel programs with message passing&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://www.fmeurope.org/ Formal Methods Europe]&lt;br /&gt;
* [[Media: 1st_order_proof_rules.pdf|Genzen&amp;#039;s proof system for 1st order logic]]: &lt;br /&gt;
* [[Media: Proof_rules_of_Hoare_logic.pdf|HL proof rules for sequential and parallel programs]]:&lt;br /&gt;
* [[Media: Invariants.pdf|Some guidlines how to find invariants]]&lt;br /&gt;
* Mike Gordon&amp;#039;s lecture notes on Hoare logic [http://www.lsv.ens-cachan.fr/~demri/Gordon14.pdf]&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:Attempt1_query.q&amp;diff=6496</id>
		<title>Fail:Attempt1 query.q</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:Attempt1_query.q&amp;diff=6496"/>
		<updated>2018-03-08T15:44:03Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:Attempt1_Model.xml&amp;diff=6495</id>
		<title>Fail:Attempt1 Model.xml</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:Attempt1_Model.xml&amp;diff=6495"/>
		<updated>2018-03-08T15:42:55Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:Lecture_5.pdf&amp;diff=6494</id>
		<title>Fail:Lecture 5.pdf</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:Lecture_5.pdf&amp;diff=6494"/>
		<updated>2018-03-08T15:37:49Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6444</id>
		<title>Software Synthesis and Verification</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6444"/>
		<updated>2018-02-22T22:11:01Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: /* Labs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8531 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039;: http://courses.cs.ttu.ee/pages/ITI0130&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lab assistant&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Deepak Pal &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: deepak.pal ätt ttu.ee, &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous courses: [http://vana.cs.ttu.ee/tiki-index.php?page=ITI0060 2014]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Thursdays 10:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 12:00, ICT-122 - Deepak Pal&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exams: &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Thursday May 1, 10:00, room ICT-A2 &amp;lt;br&amp;gt;&lt;br /&gt;
* Thursday May 8, 10:00, room ICT-A2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_18_Intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_18_transition_systems.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_18_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_17_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_17_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1 (see Exercises 1 below)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;16.03.2017&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
** [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: Model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_16_Specifications.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI8531_synthesis1_2017.pdf|Lecture 8]]: Program synthesis I&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 9]]: Program synthesis II&lt;br /&gt;
* Test 2 (13.04.2017): Program synthesis&lt;br /&gt;
* [[Media:ITI8531_Lecture_6_16_rules.pdf|Lecture 11]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 12.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 12.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 13]]: Proving total correctness of while-programs &lt;br /&gt;
* [[Media:ITI8531_Lecture_9_2017_parallel_programs.pdf|Lecture 14]]: Verifying nondeterministic and parallel programs&lt;br /&gt;
* Test 3 (25.05.2017): Deductive verification of non-deterministic and parallel programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &lt;br /&gt;
** Slides: [[Media:UPPAAL Tutorial.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:LightController.xml|Light Controller Model]]&lt;br /&gt;
** Query: [[Media:LightControllerQuery.q|Light Controller Query]]&lt;br /&gt;
** For More reading, refer below links:&lt;br /&gt;
*** [http://www.uppaal.org/ UPPAAL website]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Small tutorial on UPPAAL]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf Tutorial on UPPAAL]&lt;br /&gt;
&lt;br /&gt;
* Lab 2: Validation (simulation) and verification (automatic model-checking) in UPPAAL &lt;br /&gt;
** Slides: [[Media:New_Lab2_MODEL_CHECKING.pdf|Model Checking introduction]]&lt;br /&gt;
** Model: [[Media:Atm_system.xml|ATM System Model]]&lt;br /&gt;
** Query: [[Media:Atm_system_query.q|ATM System Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 3: Understanding of Clocks and State Space Explosion in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lab3_Lab_Lecture.pdf|Uppaal Modelling Language]]&lt;br /&gt;
** Model: [[Media:Jobber.xml|JobShop Model with three possible scenarios]]&lt;br /&gt;
** Query: [[Media:Jobber_Query1.q|JobShop Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 4: Assignment 1: Coffee Machine&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab1_Coffee_machine_2015.pdf|Example and explanation]]&lt;br /&gt;
** Model: [[Media:ITI0130_Coffee.xml|Coffee machine]]&lt;br /&gt;
** Query: [[Media:ITI0130_Coffee.q|Coffee machine]]&lt;br /&gt;
* Lab 5: Assignment 2: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 6: Assignment 3: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12]]&lt;br /&gt;
* Lab 7: Lab Exam&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 7: KeY Introduction&lt;br /&gt;
** Installation: [[Media:ITI0130_Lab7_2016_KeY.pdf|KeY Installation]]&lt;br /&gt;
** Bank example: [[Media:ITI0130_Lab7_2016_Bank.zip|Bank example]]&lt;br /&gt;
** Bank JML: [[Media:ITI0130_Lab7_2016_Bank_JML.zip|Bank JML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Design-by-Contract&lt;br /&gt;
** [https://github.com/nhatminhle/cofoja Contracts for Java (Cofoja)]&lt;br /&gt;
** [https://code.google.com/p/cofoja/w/list Cofoja wiki page]&lt;br /&gt;
** [[Media:ITI0130_Lab5_cofoja_setup.pdf|Installation instructions]]&lt;br /&gt;
** [[Media:ITI0130_Lab5_FM_cofoja.zip|Sample code]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_db2.zip|Secure Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 8: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab8_Key_Instruction.pdf|Installation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
* Lab 11: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab11_Key_practise.zip|JML]]&lt;br /&gt;
** [[Media:ITI0130_Lab11_summax.zip|SumAndMax Example]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab12_Key_assignment.zip|Key assignment]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab13_Bank_example_solution.zip|Solution to Bank example]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Test 1_2017for practicing.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&lt;br /&gt;
* [[Media:Exercises_2.pdf|Exercises 2]]: Partial correctness of WHILE-programs&lt;br /&gt;
** [[Media:while_program_example_2015.pdf|Example 1]]: Partial correctness of WHILE-loop&lt;br /&gt;
** [[Media:DEDUCTIVE_VERIFICATION_Example_2.pdf|Example 2]]: Partial correctness of FOR-loop&lt;br /&gt;
* Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Exercises__3.pdf|Exercises 3.1]]: Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Test3_exercises_solutions.pdf|Exercises 3.2]]: Partial correctness of non-deterministic and parallel programs &lt;br /&gt;
** [[Media:Harjutused_3.pdf|Exercises 3.3]]: Parallel programs with message passing&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://www.fmeurope.org/ Formal Methods Europe]&lt;br /&gt;
* [[Media: 1st_order_proof_rules.pdf|Genzen&amp;#039;s proof system for 1st order logic]]: &lt;br /&gt;
* [[Media: Proof_rules_of_Hoare_logic.pdf|HL proof rules for sequential and parallel programs]]:&lt;br /&gt;
* [[Media: Invariants.pdf|Some guidlines how to find invariants]]&lt;br /&gt;
* Mike Gordon&amp;#039;s lecture notes on Hoare logic [http://www.lsv.ens-cachan.fr/~demri/Gordon14.pdf]&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:Jobber_Query1.q&amp;diff=6443</id>
		<title>Fail:Jobber Query1.q</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:Jobber_Query1.q&amp;diff=6443"/>
		<updated>2018-02-22T22:10:46Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6442</id>
		<title>Software Synthesis and Verification</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6442"/>
		<updated>2018-02-22T22:09:09Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: /* Labs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8531 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039;: http://courses.cs.ttu.ee/pages/ITI0130&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lab assistant&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Deepak Pal &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: deepak.pal ätt ttu.ee, &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous courses: [http://vana.cs.ttu.ee/tiki-index.php?page=ITI0060 2014]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Thursdays 10:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 12:00, ICT-122 - Deepak Pal&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exams: &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Thursday May 1, 10:00, room ICT-A2 &amp;lt;br&amp;gt;&lt;br /&gt;
* Thursday May 8, 10:00, room ICT-A2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_18_Intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_18_transition_systems.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_18_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_17_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_17_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1 (see Exercises 1 below)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;16.03.2017&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
** [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: Model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_16_Specifications.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI8531_synthesis1_2017.pdf|Lecture 8]]: Program synthesis I&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 9]]: Program synthesis II&lt;br /&gt;
* Test 2 (13.04.2017): Program synthesis&lt;br /&gt;
* [[Media:ITI8531_Lecture_6_16_rules.pdf|Lecture 11]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 12.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 12.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 13]]: Proving total correctness of while-programs &lt;br /&gt;
* [[Media:ITI8531_Lecture_9_2017_parallel_programs.pdf|Lecture 14]]: Verifying nondeterministic and parallel programs&lt;br /&gt;
* Test 3 (25.05.2017): Deductive verification of non-deterministic and parallel programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &lt;br /&gt;
** Slides: [[Media:UPPAAL Tutorial.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:LightController.xml|Light Controller Model]]&lt;br /&gt;
** Query: [[Media:LightControllerQuery.q|Light Controller Query]]&lt;br /&gt;
** For More reading, refer below links:&lt;br /&gt;
*** [http://www.uppaal.org/ UPPAAL website]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Small tutorial on UPPAAL]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf Tutorial on UPPAAL]&lt;br /&gt;
&lt;br /&gt;
* Lab 2: Validation (simulation) and verification (automatic model-checking) in UPPAAL &lt;br /&gt;
** Slides: [[Media:New_Lab2_MODEL_CHECKING.pdf|Model Checking introduction]]&lt;br /&gt;
** Model: [[Media:Atm_system.xml|ATM System Model]]&lt;br /&gt;
** Query: [[Media:Atm_system_query.q|ATM System Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 3: Understanding of Clocks and State Space Explosion in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lab3_Lab_Lecture.pdf|Uppaal Modelling Language]]&lt;br /&gt;
** Model: [[Media:Jobber.xml|JobShop Model with three possible scenarios]]&lt;br /&gt;
** Query: [[Media:Jobber_query.q|JobShop Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 4: Assignment 1: Coffee Machine&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab1_Coffee_machine_2015.pdf|Example and explanation]]&lt;br /&gt;
** Model: [[Media:ITI0130_Coffee.xml|Coffee machine]]&lt;br /&gt;
** Query: [[Media:ITI0130_Coffee.q|Coffee machine]]&lt;br /&gt;
* Lab 5: Assignment 2: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 6: Assignment 3: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12]]&lt;br /&gt;
* Lab 7: Lab Exam&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 7: KeY Introduction&lt;br /&gt;
** Installation: [[Media:ITI0130_Lab7_2016_KeY.pdf|KeY Installation]]&lt;br /&gt;
** Bank example: [[Media:ITI0130_Lab7_2016_Bank.zip|Bank example]]&lt;br /&gt;
** Bank JML: [[Media:ITI0130_Lab7_2016_Bank_JML.zip|Bank JML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Design-by-Contract&lt;br /&gt;
** [https://github.com/nhatminhle/cofoja Contracts for Java (Cofoja)]&lt;br /&gt;
** [https://code.google.com/p/cofoja/w/list Cofoja wiki page]&lt;br /&gt;
** [[Media:ITI0130_Lab5_cofoja_setup.pdf|Installation instructions]]&lt;br /&gt;
** [[Media:ITI0130_Lab5_FM_cofoja.zip|Sample code]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_db2.zip|Secure Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 8: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab8_Key_Instruction.pdf|Installation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
* Lab 11: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab11_Key_practise.zip|JML]]&lt;br /&gt;
** [[Media:ITI0130_Lab11_summax.zip|SumAndMax Example]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab12_Key_assignment.zip|Key assignment]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab13_Bank_example_solution.zip|Solution to Bank example]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Test 1_2017for practicing.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&lt;br /&gt;
* [[Media:Exercises_2.pdf|Exercises 2]]: Partial correctness of WHILE-programs&lt;br /&gt;
** [[Media:while_program_example_2015.pdf|Example 1]]: Partial correctness of WHILE-loop&lt;br /&gt;
** [[Media:DEDUCTIVE_VERIFICATION_Example_2.pdf|Example 2]]: Partial correctness of FOR-loop&lt;br /&gt;
* Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Exercises__3.pdf|Exercises 3.1]]: Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Test3_exercises_solutions.pdf|Exercises 3.2]]: Partial correctness of non-deterministic and parallel programs &lt;br /&gt;
** [[Media:Harjutused_3.pdf|Exercises 3.3]]: Parallel programs with message passing&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://www.fmeurope.org/ Formal Methods Europe]&lt;br /&gt;
* [[Media: 1st_order_proof_rules.pdf|Genzen&amp;#039;s proof system for 1st order logic]]: &lt;br /&gt;
* [[Media: Proof_rules_of_Hoare_logic.pdf|HL proof rules for sequential and parallel programs]]:&lt;br /&gt;
* [[Media: Invariants.pdf|Some guidlines how to find invariants]]&lt;br /&gt;
* Mike Gordon&amp;#039;s lecture notes on Hoare logic [http://www.lsv.ens-cachan.fr/~demri/Gordon14.pdf]&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6441</id>
		<title>Software Synthesis and Verification</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6441"/>
		<updated>2018-02-22T22:08:31Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: /* Labs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8531 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039;: http://courses.cs.ttu.ee/pages/ITI0130&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lab assistant&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Deepak Pal &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: deepak.pal ätt ttu.ee, &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous courses: [http://vana.cs.ttu.ee/tiki-index.php?page=ITI0060 2014]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Thursdays 10:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 12:00, ICT-122 - Deepak Pal&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exams: &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Thursday May 1, 10:00, room ICT-A2 &amp;lt;br&amp;gt;&lt;br /&gt;
* Thursday May 8, 10:00, room ICT-A2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_18_Intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_18_transition_systems.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_18_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_17_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_17_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1 (see Exercises 1 below)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;16.03.2017&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
** [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: Model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_16_Specifications.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI8531_synthesis1_2017.pdf|Lecture 8]]: Program synthesis I&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 9]]: Program synthesis II&lt;br /&gt;
* Test 2 (13.04.2017): Program synthesis&lt;br /&gt;
* [[Media:ITI8531_Lecture_6_16_rules.pdf|Lecture 11]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 12.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 12.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 13]]: Proving total correctness of while-programs &lt;br /&gt;
* [[Media:ITI8531_Lecture_9_2017_parallel_programs.pdf|Lecture 14]]: Verifying nondeterministic and parallel programs&lt;br /&gt;
* Test 3 (25.05.2017): Deductive verification of non-deterministic and parallel programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &lt;br /&gt;
** Slides: [[Media:UPPAAL Tutorial.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:LightController.xml|Light Controller Model]]&lt;br /&gt;
** Query: [[Media:LightControllerQuery.q|Light Controller Query]]&lt;br /&gt;
** For More reading, refer below links:&lt;br /&gt;
*** [http://www.uppaal.org/ UPPAAL website]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Small tutorial on UPPAAL]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf Tutorial on UPPAAL]&lt;br /&gt;
&lt;br /&gt;
* Lab 2: Validation (simulation) and verification (automatic model-checking) in UPPAAL &lt;br /&gt;
** Slides: [[Media:New_Lab2_MODEL_CHECKING.pdf|Model Checking introduction]]&lt;br /&gt;
** Model: [[Media:Atm_system.xml|ATM System Model]]&lt;br /&gt;
** Query: [[Media:Atm_system_query.q|ATM System Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 3: Understanding of Clocks and State Space Explosion in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lab3_Lab_Lecture.pdf|Uppaal Modelling Language]]&lt;br /&gt;
** Model: [[Media:Jobber.xml|JobShop Model with three possible scenarios]]&lt;br /&gt;
** Query: [[Media:Jobber_query.q|JobShop Query&lt;br /&gt;
&lt;br /&gt;
* Lab 4: Assignment 1: Coffee Machine&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab1_Coffee_machine_2015.pdf|Example and explanation]]&lt;br /&gt;
** Model: [[Media:ITI0130_Coffee.xml|Coffee machine]]&lt;br /&gt;
** Query: [[Media:ITI0130_Coffee.q|Coffee machine]]&lt;br /&gt;
* Lab 5: Assignment 2: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 6: Assignment 3: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12]]&lt;br /&gt;
* Lab 7: Lab Exam&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 7: KeY Introduction&lt;br /&gt;
** Installation: [[Media:ITI0130_Lab7_2016_KeY.pdf|KeY Installation]]&lt;br /&gt;
** Bank example: [[Media:ITI0130_Lab7_2016_Bank.zip|Bank example]]&lt;br /&gt;
** Bank JML: [[Media:ITI0130_Lab7_2016_Bank_JML.zip|Bank JML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Design-by-Contract&lt;br /&gt;
** [https://github.com/nhatminhle/cofoja Contracts for Java (Cofoja)]&lt;br /&gt;
** [https://code.google.com/p/cofoja/w/list Cofoja wiki page]&lt;br /&gt;
** [[Media:ITI0130_Lab5_cofoja_setup.pdf|Installation instructions]]&lt;br /&gt;
** [[Media:ITI0130_Lab5_FM_cofoja.zip|Sample code]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_db2.zip|Secure Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 8: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab8_Key_Instruction.pdf|Installation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
* Lab 11: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab11_Key_practise.zip|JML]]&lt;br /&gt;
** [[Media:ITI0130_Lab11_summax.zip|SumAndMax Example]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab12_Key_assignment.zip|Key assignment]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab13_Bank_example_solution.zip|Solution to Bank example]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Test 1_2017for practicing.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&lt;br /&gt;
* [[Media:Exercises_2.pdf|Exercises 2]]: Partial correctness of WHILE-programs&lt;br /&gt;
** [[Media:while_program_example_2015.pdf|Example 1]]: Partial correctness of WHILE-loop&lt;br /&gt;
** [[Media:DEDUCTIVE_VERIFICATION_Example_2.pdf|Example 2]]: Partial correctness of FOR-loop&lt;br /&gt;
* Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Exercises__3.pdf|Exercises 3.1]]: Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Test3_exercises_solutions.pdf|Exercises 3.2]]: Partial correctness of non-deterministic and parallel programs &lt;br /&gt;
** [[Media:Harjutused_3.pdf|Exercises 3.3]]: Parallel programs with message passing&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://www.fmeurope.org/ Formal Methods Europe]&lt;br /&gt;
* [[Media: 1st_order_proof_rules.pdf|Genzen&amp;#039;s proof system for 1st order logic]]: &lt;br /&gt;
* [[Media: Proof_rules_of_Hoare_logic.pdf|HL proof rules for sequential and parallel programs]]:&lt;br /&gt;
* [[Media: Invariants.pdf|Some guidlines how to find invariants]]&lt;br /&gt;
* Mike Gordon&amp;#039;s lecture notes on Hoare logic [http://www.lsv.ens-cachan.fr/~demri/Gordon14.pdf]&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:Jobber_query.q&amp;diff=6440</id>
		<title>Fail:Jobber query.q</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:Jobber_query.q&amp;diff=6440"/>
		<updated>2018-02-22T22:08:17Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:Jobber.xml&amp;diff=6439</id>
		<title>Fail:Jobber.xml</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:Jobber.xml&amp;diff=6439"/>
		<updated>2018-02-22T22:06:37Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6435</id>
		<title>Software Synthesis and Verification</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6435"/>
		<updated>2018-02-22T07:20:05Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: /* Labs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8531 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039;: http://courses.cs.ttu.ee/pages/ITI0130&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lab assistant&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Deepak Pal &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: deepak.pal ätt ttu.ee, &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous courses: [http://vana.cs.ttu.ee/tiki-index.php?page=ITI0060 2014]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Thursdays 10:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 12:00, ICT-122 - Deepak Pal&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exams: &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Thursday May 1, 10:00, room ICT-A2 &amp;lt;br&amp;gt;&lt;br /&gt;
* Thursday May 8, 10:00, room ICT-A2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_18_Intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_18_transition_systems.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_17_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_17_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_17_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1 (see Exercises 1 below)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;16.03.2017&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
** [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: Model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_16_Specifications.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI8531_synthesis1_2017.pdf|Lecture 8]]: Program synthesis I&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 9]]: Program synthesis II&lt;br /&gt;
* Test 2 (13.04.2017): Program synthesis&lt;br /&gt;
* [[Media:ITI8531_Lecture_6_16_rules.pdf|Lecture 11]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 12.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 12.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 13]]: Proving total correctness of while-programs &lt;br /&gt;
* [[Media:ITI8531_Lecture_9_2017_parallel_programs.pdf|Lecture 14]]: Verifying nondeterministic and parallel programs&lt;br /&gt;
* Test 3 (25.05.2017): Deductive verification of non-deterministic and parallel programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &lt;br /&gt;
** Slides: [[Media:UPPAAL Tutorial.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:LightController.xml|Light Controller Model]]&lt;br /&gt;
** Query: [[Media:LightControllerQuery.q|Light Controller Query]]&lt;br /&gt;
** For More reading, refer below links:&lt;br /&gt;
*** [http://www.uppaal.org/ UPPAAL website]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Small tutorial on UPPAAL]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf Tutorial on UPPAAL]&lt;br /&gt;
&lt;br /&gt;
* Lab 2: Validation (simulation) and verification (automatic model-checking) in UPPAAL &lt;br /&gt;
** Slides: [[Media:New_Lab2_MODEL_CHECKING.pdf|Model Checking introduction]]&lt;br /&gt;
** Model: [[Media:Atm_system.xml|ATM System Model]]&lt;br /&gt;
** Query: [[Media:Atm_system_query.q|ATM System Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 3: Understanding of Clocks and State Space Explosion in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lab3_Lab_Lecture.pdf|Uppaal Modelling Language]]&lt;br /&gt;
** Model: [[Media:|JobShop Model]]&lt;br /&gt;
** Query: [[Media:|JobShop Query&lt;br /&gt;
&lt;br /&gt;
* Lab 4: Assignment 1: Coffee Machine&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab1_Coffee_machine_2015.pdf|Example and explanation]]&lt;br /&gt;
** Model: [[Media:ITI0130_Coffee.xml|Coffee machine]]&lt;br /&gt;
** Query: [[Media:ITI0130_Coffee.q|Coffee machine]]&lt;br /&gt;
* Lab 5: Assignment 2: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 6: Assignment 3: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12]]&lt;br /&gt;
* Lab 7: Lab Exam&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 7: KeY Introduction&lt;br /&gt;
** Installation: [[Media:ITI0130_Lab7_2016_KeY.pdf|KeY Installation]]&lt;br /&gt;
** Bank example: [[Media:ITI0130_Lab7_2016_Bank.zip|Bank example]]&lt;br /&gt;
** Bank JML: [[Media:ITI0130_Lab7_2016_Bank_JML.zip|Bank JML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Design-by-Contract&lt;br /&gt;
** [https://github.com/nhatminhle/cofoja Contracts for Java (Cofoja)]&lt;br /&gt;
** [https://code.google.com/p/cofoja/w/list Cofoja wiki page]&lt;br /&gt;
** [[Media:ITI0130_Lab5_cofoja_setup.pdf|Installation instructions]]&lt;br /&gt;
** [[Media:ITI0130_Lab5_FM_cofoja.zip|Sample code]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_db2.zip|Secure Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 8: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab8_Key_Instruction.pdf|Installation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
* Lab 11: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab11_Key_practise.zip|JML]]&lt;br /&gt;
** [[Media:ITI0130_Lab11_summax.zip|SumAndMax Example]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab12_Key_assignment.zip|Key assignment]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab13_Bank_example_solution.zip|Solution to Bank example]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Test 1_2017for practicing.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&lt;br /&gt;
* [[Media:Exercises_2.pdf|Exercises 2]]: Partial correctness of WHILE-programs&lt;br /&gt;
** [[Media:while_program_example_2015.pdf|Example 1]]: Partial correctness of WHILE-loop&lt;br /&gt;
** [[Media:DEDUCTIVE_VERIFICATION_Example_2.pdf|Example 2]]: Partial correctness of FOR-loop&lt;br /&gt;
* Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Exercises__3.pdf|Exercises 3.1]]: Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Test3_exercises_solutions.pdf|Exercises 3.2]]: Partial correctness of non-deterministic and parallel programs &lt;br /&gt;
** [[Media:Harjutused_3.pdf|Exercises 3.3]]: Parallel programs with message passing&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://www.fmeurope.org/ Formal Methods Europe]&lt;br /&gt;
* [[Media: 1st_order_proof_rules.pdf|Genzen&amp;#039;s proof system for 1st order logic]]: &lt;br /&gt;
* [[Media: Proof_rules_of_Hoare_logic.pdf|HL proof rules for sequential and parallel programs]]:&lt;br /&gt;
* [[Media: Invariants.pdf|Some guidlines how to find invariants]]&lt;br /&gt;
* Mike Gordon&amp;#039;s lecture notes on Hoare logic [http://www.lsv.ens-cachan.fr/~demri/Gordon14.pdf]&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6434</id>
		<title>Software Synthesis and Verification</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6434"/>
		<updated>2018-02-22T07:19:14Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: /* Labs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8531 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039;: http://courses.cs.ttu.ee/pages/ITI0130&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lab assistant&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Deepak Pal &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: deepak.pal ätt ttu.ee, &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous courses: [http://vana.cs.ttu.ee/tiki-index.php?page=ITI0060 2014]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Thursdays 10:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 12:00, ICT-122 - Deepak Pal&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exams: &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Thursday May 1, 10:00, room ICT-A2 &amp;lt;br&amp;gt;&lt;br /&gt;
* Thursday May 8, 10:00, room ICT-A2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_18_Intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_18_transition_systems.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_17_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_17_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_17_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1 (see Exercises 1 below)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;16.03.2017&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
** [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: Model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_16_Specifications.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI8531_synthesis1_2017.pdf|Lecture 8]]: Program synthesis I&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 9]]: Program synthesis II&lt;br /&gt;
* Test 2 (13.04.2017): Program synthesis&lt;br /&gt;
* [[Media:ITI8531_Lecture_6_16_rules.pdf|Lecture 11]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 12.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 12.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 13]]: Proving total correctness of while-programs &lt;br /&gt;
* [[Media:ITI8531_Lecture_9_2017_parallel_programs.pdf|Lecture 14]]: Verifying nondeterministic and parallel programs&lt;br /&gt;
* Test 3 (25.05.2017): Deductive verification of non-deterministic and parallel programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &lt;br /&gt;
** Slides: [[Media:UPPAAL Tutorial.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:LightController.xml|Light Controller Model]]&lt;br /&gt;
** Query: [[Media:LightControllerQuery.q|Light Controller Query]]&lt;br /&gt;
** For More reading, refer below links:&lt;br /&gt;
*** [http://www.uppaal.org/ UPPAAL website]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Small tutorial on UPPAAL]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf Tutorial on UPPAAL]&lt;br /&gt;
&lt;br /&gt;
* Lab 2: Validation (simulation) and verification (automatic model-checking) in UPPAAL &lt;br /&gt;
** Slides: [[Media:New_Lab2_MODEL_CHECKING.pdf|Model Checking introduction]]&lt;br /&gt;
** Model: [[Media:Atm_system.xml|ATM System Model]]&lt;br /&gt;
** Query: [[Media:Atm_system_query.q|ATM System Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 3: Understanding of Clocks and State Space Explosion in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lab3_Lab_Lecture.pdf|Uppaal Modelling Language]]&lt;br /&gt;
** Model: [[Media:|ATM System Model]]&lt;br /&gt;
** Query: [[Media:|ATM System Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 4: Assignment 1: Coffee Machine&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab1_Coffee_machine_2015.pdf|Example and explanation]]&lt;br /&gt;
** Model: [[Media:ITI0130_Coffee.xml|Coffee machine]]&lt;br /&gt;
** Query: [[Media:ITI0130_Coffee.q|Coffee machine]]&lt;br /&gt;
* Lab 5: Assignment 2: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 6: Assignment 3: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12]]&lt;br /&gt;
* Lab 7: Lab Exam&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 7: KeY Introduction&lt;br /&gt;
** Installation: [[Media:ITI0130_Lab7_2016_KeY.pdf|KeY Installation]]&lt;br /&gt;
** Bank example: [[Media:ITI0130_Lab7_2016_Bank.zip|Bank example]]&lt;br /&gt;
** Bank JML: [[Media:ITI0130_Lab7_2016_Bank_JML.zip|Bank JML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Design-by-Contract&lt;br /&gt;
** [https://github.com/nhatminhle/cofoja Contracts for Java (Cofoja)]&lt;br /&gt;
** [https://code.google.com/p/cofoja/w/list Cofoja wiki page]&lt;br /&gt;
** [[Media:ITI0130_Lab5_cofoja_setup.pdf|Installation instructions]]&lt;br /&gt;
** [[Media:ITI0130_Lab5_FM_cofoja.zip|Sample code]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_db2.zip|Secure Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 8: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab8_Key_Instruction.pdf|Installation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
* Lab 11: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab11_Key_practise.zip|JML]]&lt;br /&gt;
** [[Media:ITI0130_Lab11_summax.zip|SumAndMax Example]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab12_Key_assignment.zip|Key assignment]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab13_Bank_example_solution.zip|Solution to Bank example]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Test 1_2017for practicing.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&lt;br /&gt;
* [[Media:Exercises_2.pdf|Exercises 2]]: Partial correctness of WHILE-programs&lt;br /&gt;
** [[Media:while_program_example_2015.pdf|Example 1]]: Partial correctness of WHILE-loop&lt;br /&gt;
** [[Media:DEDUCTIVE_VERIFICATION_Example_2.pdf|Example 2]]: Partial correctness of FOR-loop&lt;br /&gt;
* Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Exercises__3.pdf|Exercises 3.1]]: Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Test3_exercises_solutions.pdf|Exercises 3.2]]: Partial correctness of non-deterministic and parallel programs &lt;br /&gt;
** [[Media:Harjutused_3.pdf|Exercises 3.3]]: Parallel programs with message passing&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://www.fmeurope.org/ Formal Methods Europe]&lt;br /&gt;
* [[Media: 1st_order_proof_rules.pdf|Genzen&amp;#039;s proof system for 1st order logic]]: &lt;br /&gt;
* [[Media: Proof_rules_of_Hoare_logic.pdf|HL proof rules for sequential and parallel programs]]:&lt;br /&gt;
* [[Media: Invariants.pdf|Some guidlines how to find invariants]]&lt;br /&gt;
* Mike Gordon&amp;#039;s lecture notes on Hoare logic [http://www.lsv.ens-cachan.fr/~demri/Gordon14.pdf]&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6433</id>
		<title>Software Synthesis and Verification</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6433"/>
		<updated>2018-02-22T07:11:03Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: /* Labs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8531 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039;: http://courses.cs.ttu.ee/pages/ITI0130&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lab assistant&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Deepak Pal &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: deepak.pal ätt ttu.ee, &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous courses: [http://vana.cs.ttu.ee/tiki-index.php?page=ITI0060 2014]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Thursdays 10:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 12:00, ICT-122 - Deepak Pal&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exams: &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Thursday May 1, 10:00, room ICT-A2 &amp;lt;br&amp;gt;&lt;br /&gt;
* Thursday May 8, 10:00, room ICT-A2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_18_Intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_18_transition_systems.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_17_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_17_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_17_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1 (see Exercises 1 below)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;16.03.2017&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
** [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: Model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_16_Specifications.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI8531_synthesis1_2017.pdf|Lecture 8]]: Program synthesis I&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 9]]: Program synthesis II&lt;br /&gt;
* Test 2 (13.04.2017): Program synthesis&lt;br /&gt;
* [[Media:ITI8531_Lecture_6_16_rules.pdf|Lecture 11]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 12.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 12.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 13]]: Proving total correctness of while-programs &lt;br /&gt;
* [[Media:ITI8531_Lecture_9_2017_parallel_programs.pdf|Lecture 14]]: Verifying nondeterministic and parallel programs&lt;br /&gt;
* Test 3 (25.05.2017): Deductive verification of non-deterministic and parallel programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &lt;br /&gt;
** Slides: [[Media:UPPAAL Tutorial.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:LightController.xml|Light Controller Model]]&lt;br /&gt;
** Query: [[Media:LightControllerQuery.q|Light Controller Query]]&lt;br /&gt;
** For More reading, refer below links:&lt;br /&gt;
*** [http://www.uppaal.org/ UPPAAL website]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Small tutorial on UPPAAL]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf Tutorial on UPPAAL]&lt;br /&gt;
&lt;br /&gt;
* Lab 2: Validation (simulation) and verification (automatic model-checking) in UPPAAL &lt;br /&gt;
** Slides: [[Media:New_Lab2_MODEL_CHECKING.pdf|Model Checking introduction]]&lt;br /&gt;
** Model: [[Media:Atm_system.xml|ATM System Model]]&lt;br /&gt;
** Query: [[Media:Atm_system_query.q|ATM System Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 3: Understanding of Clocks and State Space Explosion in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lab3_Lab_Lecture.pdf|Uppaal Modelling Language]]&lt;br /&gt;
** Model: [[Media:Atm_system.xml|ATM System Model]]&lt;br /&gt;
** Query: [[Media:Atm_system_query.q|ATM System Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 4: Assignment 1: Coffee Machine&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab1_Coffee_machine_2015.pdf|Example and explanation]]&lt;br /&gt;
** Model: [[Media:ITI0130_Coffee.xml|Coffee machine]]&lt;br /&gt;
** Query: [[Media:ITI0130_Coffee.q|Coffee machine]]&lt;br /&gt;
* Lab 5: Assignment 2: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 6: Assignment 3: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12]]&lt;br /&gt;
* Lab 7: Lab Exam&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 7: KeY Introduction&lt;br /&gt;
** Installation: [[Media:ITI0130_Lab7_2016_KeY.pdf|KeY Installation]]&lt;br /&gt;
** Bank example: [[Media:ITI0130_Lab7_2016_Bank.zip|Bank example]]&lt;br /&gt;
** Bank JML: [[Media:ITI0130_Lab7_2016_Bank_JML.zip|Bank JML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Design-by-Contract&lt;br /&gt;
** [https://github.com/nhatminhle/cofoja Contracts for Java (Cofoja)]&lt;br /&gt;
** [https://code.google.com/p/cofoja/w/list Cofoja wiki page]&lt;br /&gt;
** [[Media:ITI0130_Lab5_cofoja_setup.pdf|Installation instructions]]&lt;br /&gt;
** [[Media:ITI0130_Lab5_FM_cofoja.zip|Sample code]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_db2.zip|Secure Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 8: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab8_Key_Instruction.pdf|Installation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
* Lab 11: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab11_Key_practise.zip|JML]]&lt;br /&gt;
** [[Media:ITI0130_Lab11_summax.zip|SumAndMax Example]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab12_Key_assignment.zip|Key assignment]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab13_Bank_example_solution.zip|Solution to Bank example]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Test 1_2017for practicing.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&lt;br /&gt;
* [[Media:Exercises_2.pdf|Exercises 2]]: Partial correctness of WHILE-programs&lt;br /&gt;
** [[Media:while_program_example_2015.pdf|Example 1]]: Partial correctness of WHILE-loop&lt;br /&gt;
** [[Media:DEDUCTIVE_VERIFICATION_Example_2.pdf|Example 2]]: Partial correctness of FOR-loop&lt;br /&gt;
* Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Exercises__3.pdf|Exercises 3.1]]: Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Test3_exercises_solutions.pdf|Exercises 3.2]]: Partial correctness of non-deterministic and parallel programs &lt;br /&gt;
** [[Media:Harjutused_3.pdf|Exercises 3.3]]: Parallel programs with message passing&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://www.fmeurope.org/ Formal Methods Europe]&lt;br /&gt;
* [[Media: 1st_order_proof_rules.pdf|Genzen&amp;#039;s proof system for 1st order logic]]: &lt;br /&gt;
* [[Media: Proof_rules_of_Hoare_logic.pdf|HL proof rules for sequential and parallel programs]]:&lt;br /&gt;
* [[Media: Invariants.pdf|Some guidlines how to find invariants]]&lt;br /&gt;
* Mike Gordon&amp;#039;s lecture notes on Hoare logic [http://www.lsv.ens-cachan.fr/~demri/Gordon14.pdf]&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:Lab3_Lab_Lecture.pdf&amp;diff=6432</id>
		<title>Fail:Lab3 Lab Lecture.pdf</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:Lab3_Lab_Lecture.pdf&amp;diff=6432"/>
		<updated>2018-02-22T07:08:56Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6431</id>
		<title>Software Synthesis and Verification</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6431"/>
		<updated>2018-02-22T07:08:26Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: /* Labs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8531 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039;: http://courses.cs.ttu.ee/pages/ITI0130&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lab assistant&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Deepak Pal &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: deepak.pal ätt ttu.ee, &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous courses: [http://vana.cs.ttu.ee/tiki-index.php?page=ITI0060 2014]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Thursdays 10:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 12:00, ICT-122 - Deepak Pal&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exams: &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Thursday May 1, 10:00, room ICT-A2 &amp;lt;br&amp;gt;&lt;br /&gt;
* Thursday May 8, 10:00, room ICT-A2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_18_Intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_18_transition_systems.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_17_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_17_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_17_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1 (see Exercises 1 below)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;16.03.2017&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
** [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: Model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_16_Specifications.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI8531_synthesis1_2017.pdf|Lecture 8]]: Program synthesis I&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 9]]: Program synthesis II&lt;br /&gt;
* Test 2 (13.04.2017): Program synthesis&lt;br /&gt;
* [[Media:ITI8531_Lecture_6_16_rules.pdf|Lecture 11]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 12.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 12.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 13]]: Proving total correctness of while-programs &lt;br /&gt;
* [[Media:ITI8531_Lecture_9_2017_parallel_programs.pdf|Lecture 14]]: Verifying nondeterministic and parallel programs&lt;br /&gt;
* Test 3 (25.05.2017): Deductive verification of non-deterministic and parallel programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &lt;br /&gt;
** Slides: [[Media:UPPAAL Tutorial.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:LightController.xml|Light Controller Model]]&lt;br /&gt;
** Query: [[Media:LightControllerQuery.q|Light Controller Query]]&lt;br /&gt;
** For More reading, refer below links:&lt;br /&gt;
*** [http://www.uppaal.org/ UPPAAL website]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Small tutorial on UPPAAL]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf Tutorial on UPPAAL]&lt;br /&gt;
&lt;br /&gt;
* Lab 2: Validation (simulation) and verification (automatic model-checking) in UPPAAL &lt;br /&gt;
** Slides: [[Media:New_Lab2_MODEL_CHECKING.pdf|Model Checking introduction]]&lt;br /&gt;
** Model: [[Media:Atm_system.xml|ATM System Model]]&lt;br /&gt;
** Query: [[Media:Atm_system_query.q|ATM System Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 3: Understanding of Clocks and State Space Explosion in UPPAAL &lt;br /&gt;
** Slides: [[Media:New_Lab2_MODEL_CHECKING.pdf|Model Checking introduction]]&lt;br /&gt;
** Model: [[Media:Atm_system.xml|ATM System Model]]&lt;br /&gt;
** Query: [[Media:Atm_system_query.q|ATM System Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 4: Assignment 1: Coffee Machine&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab1_Coffee_machine_2015.pdf|Example and explanation]]&lt;br /&gt;
** Model: [[Media:ITI0130_Coffee.xml|Coffee machine]]&lt;br /&gt;
** Query: [[Media:ITI0130_Coffee.q|Coffee machine]]&lt;br /&gt;
* Lab 5: Assignment 2: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 6: Assignment 3: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12]]&lt;br /&gt;
* Lab 7: Lab Exam&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 7: KeY Introduction&lt;br /&gt;
** Installation: [[Media:ITI0130_Lab7_2016_KeY.pdf|KeY Installation]]&lt;br /&gt;
** Bank example: [[Media:ITI0130_Lab7_2016_Bank.zip|Bank example]]&lt;br /&gt;
** Bank JML: [[Media:ITI0130_Lab7_2016_Bank_JML.zip|Bank JML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Design-by-Contract&lt;br /&gt;
** [https://github.com/nhatminhle/cofoja Contracts for Java (Cofoja)]&lt;br /&gt;
** [https://code.google.com/p/cofoja/w/list Cofoja wiki page]&lt;br /&gt;
** [[Media:ITI0130_Lab5_cofoja_setup.pdf|Installation instructions]]&lt;br /&gt;
** [[Media:ITI0130_Lab5_FM_cofoja.zip|Sample code]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_db2.zip|Secure Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 8: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab8_Key_Instruction.pdf|Installation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
* Lab 11: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab11_Key_practise.zip|JML]]&lt;br /&gt;
** [[Media:ITI0130_Lab11_summax.zip|SumAndMax Example]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab12_Key_assignment.zip|Key assignment]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab13_Bank_example_solution.zip|Solution to Bank example]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Test 1_2017for practicing.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&lt;br /&gt;
* [[Media:Exercises_2.pdf|Exercises 2]]: Partial correctness of WHILE-programs&lt;br /&gt;
** [[Media:while_program_example_2015.pdf|Example 1]]: Partial correctness of WHILE-loop&lt;br /&gt;
** [[Media:DEDUCTIVE_VERIFICATION_Example_2.pdf|Example 2]]: Partial correctness of FOR-loop&lt;br /&gt;
* Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Exercises__3.pdf|Exercises 3.1]]: Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Test3_exercises_solutions.pdf|Exercises 3.2]]: Partial correctness of non-deterministic and parallel programs &lt;br /&gt;
** [[Media:Harjutused_3.pdf|Exercises 3.3]]: Parallel programs with message passing&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://www.fmeurope.org/ Formal Methods Europe]&lt;br /&gt;
* [[Media: 1st_order_proof_rules.pdf|Genzen&amp;#039;s proof system for 1st order logic]]: &lt;br /&gt;
* [[Media: Proof_rules_of_Hoare_logic.pdf|HL proof rules for sequential and parallel programs]]:&lt;br /&gt;
* [[Media: Invariants.pdf|Some guidlines how to find invariants]]&lt;br /&gt;
* Mike Gordon&amp;#039;s lecture notes on Hoare logic [http://www.lsv.ens-cachan.fr/~demri/Gordon14.pdf]&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6430</id>
		<title>Software Synthesis and Verification</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6430"/>
		<updated>2018-02-22T07:05:47Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: /* Labs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8531 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039;: http://courses.cs.ttu.ee/pages/ITI0130&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lab assistant&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Deepak Pal &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: deepak.pal ätt ttu.ee, &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous courses: [http://vana.cs.ttu.ee/tiki-index.php?page=ITI0060 2014]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Thursdays 10:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 12:00, ICT-122 - Deepak Pal&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exams: &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Thursday May 1, 10:00, room ICT-A2 &amp;lt;br&amp;gt;&lt;br /&gt;
* Thursday May 8, 10:00, room ICT-A2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_18_Intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_18_transition_systems.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_17_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_17_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_17_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1 (see Exercises 1 below)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;16.03.2017&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
** [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: Model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_16_Specifications.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI8531_synthesis1_2017.pdf|Lecture 8]]: Program synthesis I&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 9]]: Program synthesis II&lt;br /&gt;
* Test 2 (13.04.2017): Program synthesis&lt;br /&gt;
* [[Media:ITI8531_Lecture_6_16_rules.pdf|Lecture 11]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 12.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 12.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 13]]: Proving total correctness of while-programs &lt;br /&gt;
* [[Media:ITI8531_Lecture_9_2017_parallel_programs.pdf|Lecture 14]]: Verifying nondeterministic and parallel programs&lt;br /&gt;
* Test 3 (25.05.2017): Deductive verification of non-deterministic and parallel programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &lt;br /&gt;
** Slides: [[Media:UPPAAL Tutorial.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:LightController.xml|Light Controller Model]]&lt;br /&gt;
** Query: [[Media:LightControllerQuery.q|Light Controller Query]]&lt;br /&gt;
** For More reading, refer below links:&lt;br /&gt;
*** [http://www.uppaal.org/ UPPAAL website]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Small tutorial on UPPAAL]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf Tutorial on UPPAAL]&lt;br /&gt;
&lt;br /&gt;
* Lab 2: Validation (simulation) and verification (automatic model-checking) in UPPAAL &lt;br /&gt;
** Slides: [[Media:New_Lab2_MODEL_CHECKING.pdf|Model Checking introduction]]&lt;br /&gt;
** Model: [[Media:Atm_system.xml|ATM System Model]]&lt;br /&gt;
** Query: [[Media:Atm_system_query.q|ATM System Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 3: Assignment 1: Coffee Machine&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab1_Coffee_machine_2015.pdf|Example and explanation]]&lt;br /&gt;
** Model: [[Media:ITI0130_Coffee.xml|Coffee machine]]&lt;br /&gt;
** Query: [[Media:ITI0130_Coffee.q|Coffee machine]]&lt;br /&gt;
* Lab 4: Assignment 2: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 5: Assignment 3: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12]]&lt;br /&gt;
* Lab 6: Lab Exam&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 7: KeY Introduction&lt;br /&gt;
** Installation: [[Media:ITI0130_Lab7_2016_KeY.pdf|KeY Installation]]&lt;br /&gt;
** Bank example: [[Media:ITI0130_Lab7_2016_Bank.zip|Bank example]]&lt;br /&gt;
** Bank JML: [[Media:ITI0130_Lab7_2016_Bank_JML.zip|Bank JML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Design-by-Contract&lt;br /&gt;
** [https://github.com/nhatminhle/cofoja Contracts for Java (Cofoja)]&lt;br /&gt;
** [https://code.google.com/p/cofoja/w/list Cofoja wiki page]&lt;br /&gt;
** [[Media:ITI0130_Lab5_cofoja_setup.pdf|Installation instructions]]&lt;br /&gt;
** [[Media:ITI0130_Lab5_FM_cofoja.zip|Sample code]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_db2.zip|Secure Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 8: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab8_Key_Instruction.pdf|Installation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
* Lab 11: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab11_Key_practise.zip|JML]]&lt;br /&gt;
** [[Media:ITI0130_Lab11_summax.zip|SumAndMax Example]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab12_Key_assignment.zip|Key assignment]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab13_Bank_example_solution.zip|Solution to Bank example]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Test 1_2017for practicing.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&lt;br /&gt;
* [[Media:Exercises_2.pdf|Exercises 2]]: Partial correctness of WHILE-programs&lt;br /&gt;
** [[Media:while_program_example_2015.pdf|Example 1]]: Partial correctness of WHILE-loop&lt;br /&gt;
** [[Media:DEDUCTIVE_VERIFICATION_Example_2.pdf|Example 2]]: Partial correctness of FOR-loop&lt;br /&gt;
* Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Exercises__3.pdf|Exercises 3.1]]: Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Test3_exercises_solutions.pdf|Exercises 3.2]]: Partial correctness of non-deterministic and parallel programs &lt;br /&gt;
** [[Media:Harjutused_3.pdf|Exercises 3.3]]: Parallel programs with message passing&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://www.fmeurope.org/ Formal Methods Europe]&lt;br /&gt;
* [[Media: 1st_order_proof_rules.pdf|Genzen&amp;#039;s proof system for 1st order logic]]: &lt;br /&gt;
* [[Media: Proof_rules_of_Hoare_logic.pdf|HL proof rules for sequential and parallel programs]]:&lt;br /&gt;
* [[Media: Invariants.pdf|Some guidlines how to find invariants]]&lt;br /&gt;
* Mike Gordon&amp;#039;s lecture notes on Hoare logic [http://www.lsv.ens-cachan.fr/~demri/Gordon14.pdf]&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6429</id>
		<title>Software Synthesis and Verification</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6429"/>
		<updated>2018-02-22T07:04:38Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: /* Labs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8531 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039;: http://courses.cs.ttu.ee/pages/ITI0130&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lab assistant&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Deepak Pal &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: deepak.pal ätt ttu.ee, &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous courses: [http://vana.cs.ttu.ee/tiki-index.php?page=ITI0060 2014]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Thursdays 10:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 12:00, ICT-122 - Deepak Pal&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exams: &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Thursday May 1, 10:00, room ICT-A2 &amp;lt;br&amp;gt;&lt;br /&gt;
* Thursday May 8, 10:00, room ICT-A2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_18_Intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_18_transition_systems.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_17_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_17_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_17_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1 (see Exercises 1 below)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;16.03.2017&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
** [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: Model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_16_Specifications.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI8531_synthesis1_2017.pdf|Lecture 8]]: Program synthesis I&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 9]]: Program synthesis II&lt;br /&gt;
* Test 2 (13.04.2017): Program synthesis&lt;br /&gt;
* [[Media:ITI8531_Lecture_6_16_rules.pdf|Lecture 11]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 12.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 12.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 13]]: Proving total correctness of while-programs &lt;br /&gt;
* [[Media:ITI8531_Lecture_9_2017_parallel_programs.pdf|Lecture 14]]: Verifying nondeterministic and parallel programs&lt;br /&gt;
* Test 3 (25.05.2017): Deductive verification of non-deterministic and parallel programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &lt;br /&gt;
** Slides: [[Media:UPPAAL Tutorial.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:LightController.xml|Light Controller Model]]&lt;br /&gt;
** Query: [[Media:LightControllerQuery.q|Light Controller Query]]&lt;br /&gt;
** For More reading, refer below links:&lt;br /&gt;
*** [http://www.uppaal.org/ UPPAAL website]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Small tutorial on UPPAAL]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf Tutorial on UPPAAL]&lt;br /&gt;
&lt;br /&gt;
* Lab 2: Validation (simulation) and verification (automatic model-checking) in UPPAAL &lt;br /&gt;
** Slides: [[Media:New_Lab2_MODEL_CHECKING.pdf|Model Checking introduction]]&lt;br /&gt;
** Model: [[Media:Atm_system.xml|ATM System Model]]&lt;br /&gt;
** Query: [[Media:Atm_system_query.q|ATM System Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 3: Assignment 1&lt;br /&gt;
** Assignment: Coffee Machine&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab1_Coffee_machine_2015.pdf|Example and explanation]]&lt;br /&gt;
** Model: [[Media:ITI0130_Coffee.xml|Coffee machine]]&lt;br /&gt;
** Query: [[Media:ITI0130_Coffee.q|Coffee machine]]&lt;br /&gt;
* Lab 4: Assignment 2&lt;br /&gt;
** Assignment: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 5: Assignment 3&lt;br /&gt;
** Assignment: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12]]&lt;br /&gt;
* Lab 6: Lab Exam&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 7: KeY Introduction&lt;br /&gt;
** Installation: [[Media:ITI0130_Lab7_2016_KeY.pdf|KeY Installation]]&lt;br /&gt;
** Bank example: [[Media:ITI0130_Lab7_2016_Bank.zip|Bank example]]&lt;br /&gt;
** Bank JML: [[Media:ITI0130_Lab7_2016_Bank_JML.zip|Bank JML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Design-by-Contract&lt;br /&gt;
** [https://github.com/nhatminhle/cofoja Contracts for Java (Cofoja)]&lt;br /&gt;
** [https://code.google.com/p/cofoja/w/list Cofoja wiki page]&lt;br /&gt;
** [[Media:ITI0130_Lab5_cofoja_setup.pdf|Installation instructions]]&lt;br /&gt;
** [[Media:ITI0130_Lab5_FM_cofoja.zip|Sample code]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_db2.zip|Secure Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 8: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab8_Key_Instruction.pdf|Installation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
* Lab 11: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab11_Key_practise.zip|JML]]&lt;br /&gt;
** [[Media:ITI0130_Lab11_summax.zip|SumAndMax Example]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab12_Key_assignment.zip|Key assignment]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab13_Bank_example_solution.zip|Solution to Bank example]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Test 1_2017for practicing.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&lt;br /&gt;
* [[Media:Exercises_2.pdf|Exercises 2]]: Partial correctness of WHILE-programs&lt;br /&gt;
** [[Media:while_program_example_2015.pdf|Example 1]]: Partial correctness of WHILE-loop&lt;br /&gt;
** [[Media:DEDUCTIVE_VERIFICATION_Example_2.pdf|Example 2]]: Partial correctness of FOR-loop&lt;br /&gt;
* Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Exercises__3.pdf|Exercises 3.1]]: Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Test3_exercises_solutions.pdf|Exercises 3.2]]: Partial correctness of non-deterministic and parallel programs &lt;br /&gt;
** [[Media:Harjutused_3.pdf|Exercises 3.3]]: Parallel programs with message passing&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://www.fmeurope.org/ Formal Methods Europe]&lt;br /&gt;
* [[Media: 1st_order_proof_rules.pdf|Genzen&amp;#039;s proof system for 1st order logic]]: &lt;br /&gt;
* [[Media: Proof_rules_of_Hoare_logic.pdf|HL proof rules for sequential and parallel programs]]:&lt;br /&gt;
* [[Media: Invariants.pdf|Some guidlines how to find invariants]]&lt;br /&gt;
* Mike Gordon&amp;#039;s lecture notes on Hoare logic [http://www.lsv.ens-cachan.fr/~demri/Gordon14.pdf]&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6428</id>
		<title>Software Synthesis and Verification</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6428"/>
		<updated>2018-02-22T07:02:32Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: /* Labs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8531 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039;: http://courses.cs.ttu.ee/pages/ITI0130&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lab assistant&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Deepak Pal &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: deepak.pal ätt ttu.ee, &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous courses: [http://vana.cs.ttu.ee/tiki-index.php?page=ITI0060 2014]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Thursdays 10:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 12:00, ICT-122 - Deepak Pal&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exams: &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Thursday May 1, 10:00, room ICT-A2 &amp;lt;br&amp;gt;&lt;br /&gt;
* Thursday May 8, 10:00, room ICT-A2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_18_Intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_18_transition_systems.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_17_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_17_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_17_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1 (see Exercises 1 below)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;16.03.2017&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
** [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: Model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_16_Specifications.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI8531_synthesis1_2017.pdf|Lecture 8]]: Program synthesis I&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 9]]: Program synthesis II&lt;br /&gt;
* Test 2 (13.04.2017): Program synthesis&lt;br /&gt;
* [[Media:ITI8531_Lecture_6_16_rules.pdf|Lecture 11]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 12.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 12.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 13]]: Proving total correctness of while-programs &lt;br /&gt;
* [[Media:ITI8531_Lecture_9_2017_parallel_programs.pdf|Lecture 14]]: Verifying nondeterministic and parallel programs&lt;br /&gt;
* Test 3 (25.05.2017): Deductive verification of non-deterministic and parallel programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &lt;br /&gt;
** Slides: [[Media:UPPAAL Tutorial.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:LightController.xml|Light Controller Model]]&lt;br /&gt;
** Query: [[Media:LightControllerQuery.q|Light Controller Query]]&lt;br /&gt;
** For More reading, refer below links:&lt;br /&gt;
*** [http://www.uppaal.org/ UPPAAL website]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Small tutorial on UPPAAL]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf Tutorial on UPPAAL]&lt;br /&gt;
&lt;br /&gt;
* Lab 2: Validation (simulation) and verification (automatic model-checking) in UPPAAL &lt;br /&gt;
** Slides: [[Media:New_Lab2_MODEL_CHECKING.pdf|Model Checking introduction]]&lt;br /&gt;
** Model: [[Media:Atm_system.xml|ATM System Model]]&lt;br /&gt;
** Query: [[Media:Atm_system_query.q|ATM System Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 3: Introduction to modelling in UPPAAL&lt;br /&gt;
** Assignment: Coffee Machine&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab1_Coffee_machine_2015.pdf|Example and explanation]]&lt;br /&gt;
** Model: [[Media:ITI0130_Coffee.xml|Coffee machine]]&lt;br /&gt;
** Query: [[Media:ITI0130_Coffee.q|Coffee machine]]&lt;br /&gt;
* Lab 4: UPPAAL&lt;br /&gt;
** Assignment: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 5: UPPAAL&lt;br /&gt;
** Assignment: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12]]&lt;br /&gt;
* Lab 6: UPPAAL&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 7: KeY Introduction&lt;br /&gt;
** Installation: [[Media:ITI0130_Lab7_2016_KeY.pdf|KeY Installation]]&lt;br /&gt;
** Bank example: [[Media:ITI0130_Lab7_2016_Bank.zip|Bank example]]&lt;br /&gt;
** Bank JML: [[Media:ITI0130_Lab7_2016_Bank_JML.zip|Bank JML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Design-by-Contract&lt;br /&gt;
** [https://github.com/nhatminhle/cofoja Contracts for Java (Cofoja)]&lt;br /&gt;
** [https://code.google.com/p/cofoja/w/list Cofoja wiki page]&lt;br /&gt;
** [[Media:ITI0130_Lab5_cofoja_setup.pdf|Installation instructions]]&lt;br /&gt;
** [[Media:ITI0130_Lab5_FM_cofoja.zip|Sample code]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_db2.zip|Secure Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 8: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab8_Key_Instruction.pdf|Installation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
* Lab 11: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab11_Key_practise.zip|JML]]&lt;br /&gt;
** [[Media:ITI0130_Lab11_summax.zip|SumAndMax Example]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab12_Key_assignment.zip|Key assignment]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab13_Bank_example_solution.zip|Solution to Bank example]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Test 1_2017for practicing.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&lt;br /&gt;
* [[Media:Exercises_2.pdf|Exercises 2]]: Partial correctness of WHILE-programs&lt;br /&gt;
** [[Media:while_program_example_2015.pdf|Example 1]]: Partial correctness of WHILE-loop&lt;br /&gt;
** [[Media:DEDUCTIVE_VERIFICATION_Example_2.pdf|Example 2]]: Partial correctness of FOR-loop&lt;br /&gt;
* Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Exercises__3.pdf|Exercises 3.1]]: Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Test3_exercises_solutions.pdf|Exercises 3.2]]: Partial correctness of non-deterministic and parallel programs &lt;br /&gt;
** [[Media:Harjutused_3.pdf|Exercises 3.3]]: Parallel programs with message passing&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://www.fmeurope.org/ Formal Methods Europe]&lt;br /&gt;
* [[Media: 1st_order_proof_rules.pdf|Genzen&amp;#039;s proof system for 1st order logic]]: &lt;br /&gt;
* [[Media: Proof_rules_of_Hoare_logic.pdf|HL proof rules for sequential and parallel programs]]:&lt;br /&gt;
* [[Media: Invariants.pdf|Some guidlines how to find invariants]]&lt;br /&gt;
* Mike Gordon&amp;#039;s lecture notes on Hoare logic [http://www.lsv.ens-cachan.fr/~demri/Gordon14.pdf]&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:New_Lab2_MODEL_CHECKING.pdf&amp;diff=6427</id>
		<title>Fail:New Lab2 MODEL CHECKING.pdf</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:New_Lab2_MODEL_CHECKING.pdf&amp;diff=6427"/>
		<updated>2018-02-22T07:01:39Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6426</id>
		<title>Software Synthesis and Verification</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6426"/>
		<updated>2018-02-22T06:58:38Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: /* Labs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8531 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039;: http://courses.cs.ttu.ee/pages/ITI0130&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lab assistant&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Deepak Pal &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: deepak.pal ätt ttu.ee, &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous courses: [http://vana.cs.ttu.ee/tiki-index.php?page=ITI0060 2014]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Thursdays 10:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 12:00, ICT-122 - Deepak Pal&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exams: &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Thursday May 1, 10:00, room ICT-A2 &amp;lt;br&amp;gt;&lt;br /&gt;
* Thursday May 8, 10:00, room ICT-A2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_18_Intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_18_transition_systems.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_17_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_17_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_17_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1 (see Exercises 1 below)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;16.03.2017&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
** [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: Model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_16_Specifications.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI8531_synthesis1_2017.pdf|Lecture 8]]: Program synthesis I&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 9]]: Program synthesis II&lt;br /&gt;
* Test 2 (13.04.2017): Program synthesis&lt;br /&gt;
* [[Media:ITI8531_Lecture_6_16_rules.pdf|Lecture 11]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 12.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 12.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 13]]: Proving total correctness of while-programs &lt;br /&gt;
* [[Media:ITI8531_Lecture_9_2017_parallel_programs.pdf|Lecture 14]]: Verifying nondeterministic and parallel programs&lt;br /&gt;
* Test 3 (25.05.2017): Deductive verification of non-deterministic and parallel programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &lt;br /&gt;
** Slides: [[Media:UPPAAL Tutorial.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:LightController.xml|Light Controller Model]]&lt;br /&gt;
** Query: [[Media:LightControllerQuery.q|Light Controller Query]]&lt;br /&gt;
** For More reading, refer below links:&lt;br /&gt;
*** [http://www.uppaal.org/ UPPAAL website]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Small tutorial on UPPAAL]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf Tutorial on UPPAAL]&lt;br /&gt;
&lt;br /&gt;
* Lab 2: Validation (simulation) and verification (automatic model-checking) in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lab2_MODEL_CHECKING.pdf|Model Checking introduction]]&lt;br /&gt;
** Model: [[Media:Atm_system.xml|ATM System Model]]&lt;br /&gt;
** Query: [[Media:Atm_system_query.q|ATM System Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 3: Introduction to modelling in UPPAAL&lt;br /&gt;
** Assignment: Coffee Machine&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab1_Coffee_machine_2015.pdf|Example and explanation]]&lt;br /&gt;
** Model: [[Media:ITI0130_Coffee.xml|Coffee machine]]&lt;br /&gt;
** Query: [[Media:ITI0130_Coffee.q|Coffee machine]]&lt;br /&gt;
* Lab 4: UPPAAL&lt;br /&gt;
** Assignment: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 5: UPPAAL&lt;br /&gt;
** Assignment: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12]]&lt;br /&gt;
* Lab 6: UPPAAL&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 7: KeY Introduction&lt;br /&gt;
** Installation: [[Media:ITI0130_Lab7_2016_KeY.pdf|KeY Installation]]&lt;br /&gt;
** Bank example: [[Media:ITI0130_Lab7_2016_Bank.zip|Bank example]]&lt;br /&gt;
** Bank JML: [[Media:ITI0130_Lab7_2016_Bank_JML.zip|Bank JML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Design-by-Contract&lt;br /&gt;
** [https://github.com/nhatminhle/cofoja Contracts for Java (Cofoja)]&lt;br /&gt;
** [https://code.google.com/p/cofoja/w/list Cofoja wiki page]&lt;br /&gt;
** [[Media:ITI0130_Lab5_cofoja_setup.pdf|Installation instructions]]&lt;br /&gt;
** [[Media:ITI0130_Lab5_FM_cofoja.zip|Sample code]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_db2.zip|Secure Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 8: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab8_Key_Instruction.pdf|Installation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
* Lab 11: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab11_Key_practise.zip|JML]]&lt;br /&gt;
** [[Media:ITI0130_Lab11_summax.zip|SumAndMax Example]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab12_Key_assignment.zip|Key assignment]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab13_Bank_example_solution.zip|Solution to Bank example]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Test 1_2017for practicing.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&lt;br /&gt;
* [[Media:Exercises_2.pdf|Exercises 2]]: Partial correctness of WHILE-programs&lt;br /&gt;
** [[Media:while_program_example_2015.pdf|Example 1]]: Partial correctness of WHILE-loop&lt;br /&gt;
** [[Media:DEDUCTIVE_VERIFICATION_Example_2.pdf|Example 2]]: Partial correctness of FOR-loop&lt;br /&gt;
* Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Exercises__3.pdf|Exercises 3.1]]: Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Test3_exercises_solutions.pdf|Exercises 3.2]]: Partial correctness of non-deterministic and parallel programs &lt;br /&gt;
** [[Media:Harjutused_3.pdf|Exercises 3.3]]: Parallel programs with message passing&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://www.fmeurope.org/ Formal Methods Europe]&lt;br /&gt;
* [[Media: 1st_order_proof_rules.pdf|Genzen&amp;#039;s proof system for 1st order logic]]: &lt;br /&gt;
* [[Media: Proof_rules_of_Hoare_logic.pdf|HL proof rules for sequential and parallel programs]]:&lt;br /&gt;
* [[Media: Invariants.pdf|Some guidlines how to find invariants]]&lt;br /&gt;
* Mike Gordon&amp;#039;s lecture notes on Hoare logic [http://www.lsv.ens-cachan.fr/~demri/Gordon14.pdf]&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:Atm_system_query.q&amp;diff=6425</id>
		<title>Fail:Atm system query.q</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:Atm_system_query.q&amp;diff=6425"/>
		<updated>2018-02-22T06:58:25Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:Atm_system.xml&amp;diff=6424</id>
		<title>Fail:Atm system.xml</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:Atm_system.xml&amp;diff=6424"/>
		<updated>2018-02-22T06:57:53Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: ATM_Model&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ATM_Model&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:Lab2_MODEL_CHECKING.pdf&amp;diff=6423</id>
		<title>Fail:Lab2 MODEL CHECKING.pdf</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:Lab2_MODEL_CHECKING.pdf&amp;diff=6423"/>
		<updated>2018-02-22T06:57:18Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: Model_Checking_Theory&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Model_Checking_Theory&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6422</id>
		<title>Software Synthesis and Verification</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6422"/>
		<updated>2018-02-22T06:47:07Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: /* Labs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8531 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039;: http://courses.cs.ttu.ee/pages/ITI0130&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lab assistant&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Deepak Pal &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: deepak.pal ätt ttu.ee, &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous courses: [http://vana.cs.ttu.ee/tiki-index.php?page=ITI0060 2014]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Thursdays 10:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 12:00, ICT-122 - Deepak Pal&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exams: &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Thursday May 1, 10:00, room ICT-A2 &amp;lt;br&amp;gt;&lt;br /&gt;
* Thursday May 8, 10:00, room ICT-A2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_18_Intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_18_transition_systems.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_17_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_17_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_17_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1 (see Exercises 1 below)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;16.03.2017&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
** [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: Model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_16_Specifications.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI8531_synthesis1_2017.pdf|Lecture 8]]: Program synthesis I&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 9]]: Program synthesis II&lt;br /&gt;
* Test 2 (13.04.2017): Program synthesis&lt;br /&gt;
* [[Media:ITI8531_Lecture_6_16_rules.pdf|Lecture 11]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 12.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 12.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 13]]: Proving total correctness of while-programs &lt;br /&gt;
* [[Media:ITI8531_Lecture_9_2017_parallel_programs.pdf|Lecture 14]]: Verifying nondeterministic and parallel programs&lt;br /&gt;
* Test 3 (25.05.2017): Deductive verification of non-deterministic and parallel programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &lt;br /&gt;
** Slides: [[Media:UPPAAL Tutorial.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:LightController.xml|Light Controller Model]]&lt;br /&gt;
** Query: [[Media:LightControllerQuery.q|Light Controller Query]]&lt;br /&gt;
** For More reading, refer below links:&lt;br /&gt;
*** [http://www.uppaal.org/ UPPAAL website]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Small tutorial on UPPAAL]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf Tutorial on UPPAAL]&lt;br /&gt;
&lt;br /&gt;
* Lab 3: Introduction to modelling in UPPAAL&lt;br /&gt;
** Assignment: Coffee Machine&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab1_Coffee_machine_2015.pdf|Example and explanation]]&lt;br /&gt;
** Model: [[Media:ITI0130_Coffee.xml|Coffee machine]]&lt;br /&gt;
** Query: [[Media:ITI0130_Coffee.q|Coffee machine]]&lt;br /&gt;
* Lab 4: UPPAAL&lt;br /&gt;
** Assignment: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 5: UPPAAL&lt;br /&gt;
** Assignment: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12]]&lt;br /&gt;
* Lab 6: UPPAAL&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 7: KeY Introduction&lt;br /&gt;
** Installation: [[Media:ITI0130_Lab7_2016_KeY.pdf|KeY Installation]]&lt;br /&gt;
** Bank example: [[Media:ITI0130_Lab7_2016_Bank.zip|Bank example]]&lt;br /&gt;
** Bank JML: [[Media:ITI0130_Lab7_2016_Bank_JML.zip|Bank JML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Design-by-Contract&lt;br /&gt;
** [https://github.com/nhatminhle/cofoja Contracts for Java (Cofoja)]&lt;br /&gt;
** [https://code.google.com/p/cofoja/w/list Cofoja wiki page]&lt;br /&gt;
** [[Media:ITI0130_Lab5_cofoja_setup.pdf|Installation instructions]]&lt;br /&gt;
** [[Media:ITI0130_Lab5_FM_cofoja.zip|Sample code]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_db2.zip|Secure Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 8: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab8_Key_Instruction.pdf|Installation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
* Lab 11: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab11_Key_practise.zip|JML]]&lt;br /&gt;
** [[Media:ITI0130_Lab11_summax.zip|SumAndMax Example]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab12_Key_assignment.zip|Key assignment]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab13_Bank_example_solution.zip|Solution to Bank example]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Test 1_2017for practicing.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&lt;br /&gt;
* [[Media:Exercises_2.pdf|Exercises 2]]: Partial correctness of WHILE-programs&lt;br /&gt;
** [[Media:while_program_example_2015.pdf|Example 1]]: Partial correctness of WHILE-loop&lt;br /&gt;
** [[Media:DEDUCTIVE_VERIFICATION_Example_2.pdf|Example 2]]: Partial correctness of FOR-loop&lt;br /&gt;
* Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Exercises__3.pdf|Exercises 3.1]]: Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Test3_exercises_solutions.pdf|Exercises 3.2]]: Partial correctness of non-deterministic and parallel programs &lt;br /&gt;
** [[Media:Harjutused_3.pdf|Exercises 3.3]]: Parallel programs with message passing&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://www.fmeurope.org/ Formal Methods Europe]&lt;br /&gt;
* [[Media: 1st_order_proof_rules.pdf|Genzen&amp;#039;s proof system for 1st order logic]]: &lt;br /&gt;
* [[Media: Proof_rules_of_Hoare_logic.pdf|HL proof rules for sequential and parallel programs]]:&lt;br /&gt;
* [[Media: Invariants.pdf|Some guidlines how to find invariants]]&lt;br /&gt;
* Mike Gordon&amp;#039;s lecture notes on Hoare logic [http://www.lsv.ens-cachan.fr/~demri/Gordon14.pdf]&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6421</id>
		<title>Software Synthesis and Verification</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6421"/>
		<updated>2018-02-22T06:43:52Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: /* Labs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8531 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039;: http://courses.cs.ttu.ee/pages/ITI0130&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lab assistant&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Deepak Pal &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: deepak.pal ätt ttu.ee, &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous courses: [http://vana.cs.ttu.ee/tiki-index.php?page=ITI0060 2014]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Thursdays 10:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 12:00, ICT-122 - Deepak Pal&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exams: &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Thursday May 1, 10:00, room ICT-A2 &amp;lt;br&amp;gt;&lt;br /&gt;
* Thursday May 8, 10:00, room ICT-A2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_18_Intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_18_transition_systems.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_17_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_17_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_17_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1 (see Exercises 1 below)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;16.03.2017&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
** [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: Model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_16_Specifications.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI8531_synthesis1_2017.pdf|Lecture 8]]: Program synthesis I&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 9]]: Program synthesis II&lt;br /&gt;
* Test 2 (13.04.2017): Program synthesis&lt;br /&gt;
* [[Media:ITI8531_Lecture_6_16_rules.pdf|Lecture 11]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 12.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 12.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 13]]: Proving total correctness of while-programs &lt;br /&gt;
* [[Media:ITI8531_Lecture_9_2017_parallel_programs.pdf|Lecture 14]]: Verifying nondeterministic and parallel programs&lt;br /&gt;
* Test 3 (25.05.2017): Deductive verification of non-deterministic and parallel programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &lt;br /&gt;
** Slides: [[Media:UPPAAL Tutorial.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:LightController.xml|Light Controller Model]]&lt;br /&gt;
** Query: [[Media:LightControllerQuery.q|Light Controller Query]]&lt;br /&gt;
For More reading, refer below links:&lt;br /&gt;
*** [http://www.uppaal.org/ UPPAAL website]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Small tutorial on UPPAAL]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf Tutorial on UPPAAL]&lt;br /&gt;
&lt;br /&gt;
* Lab 3: Introduction to modelling in UPPAAL&lt;br /&gt;
** Assignment: Coffee Machine&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab1_Coffee_machine_2015.pdf|Example and explanation]]&lt;br /&gt;
** Model: [[Media:ITI0130_Coffee.xml|Coffee machine]]&lt;br /&gt;
** Query: [[Media:ITI0130_Coffee.q|Coffee machine]]&lt;br /&gt;
* Lab 4: UPPAAL&lt;br /&gt;
** Assignment: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 5: UPPAAL&lt;br /&gt;
** Assignment: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12]]&lt;br /&gt;
* Lab 6: UPPAAL&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 7: KeY Introduction&lt;br /&gt;
** Installation: [[Media:ITI0130_Lab7_2016_KeY.pdf|KeY Installation]]&lt;br /&gt;
** Bank example: [[Media:ITI0130_Lab7_2016_Bank.zip|Bank example]]&lt;br /&gt;
** Bank JML: [[Media:ITI0130_Lab7_2016_Bank_JML.zip|Bank JML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Design-by-Contract&lt;br /&gt;
** [https://github.com/nhatminhle/cofoja Contracts for Java (Cofoja)]&lt;br /&gt;
** [https://code.google.com/p/cofoja/w/list Cofoja wiki page]&lt;br /&gt;
** [[Media:ITI0130_Lab5_cofoja_setup.pdf|Installation instructions]]&lt;br /&gt;
** [[Media:ITI0130_Lab5_FM_cofoja.zip|Sample code]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_db2.zip|Secure Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 8: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab8_Key_Instruction.pdf|Installation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
* Lab 11: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab11_Key_practise.zip|JML]]&lt;br /&gt;
** [[Media:ITI0130_Lab11_summax.zip|SumAndMax Example]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab12_Key_assignment.zip|Key assignment]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab13_Bank_example_solution.zip|Solution to Bank example]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Test 1_2017for practicing.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&lt;br /&gt;
* [[Media:Exercises_2.pdf|Exercises 2]]: Partial correctness of WHILE-programs&lt;br /&gt;
** [[Media:while_program_example_2015.pdf|Example 1]]: Partial correctness of WHILE-loop&lt;br /&gt;
** [[Media:DEDUCTIVE_VERIFICATION_Example_2.pdf|Example 2]]: Partial correctness of FOR-loop&lt;br /&gt;
* Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Exercises__3.pdf|Exercises 3.1]]: Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Test3_exercises_solutions.pdf|Exercises 3.2]]: Partial correctness of non-deterministic and parallel programs &lt;br /&gt;
** [[Media:Harjutused_3.pdf|Exercises 3.3]]: Parallel programs with message passing&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://www.fmeurope.org/ Formal Methods Europe]&lt;br /&gt;
* [[Media: 1st_order_proof_rules.pdf|Genzen&amp;#039;s proof system for 1st order logic]]: &lt;br /&gt;
* [[Media: Proof_rules_of_Hoare_logic.pdf|HL proof rules for sequential and parallel programs]]:&lt;br /&gt;
* [[Media: Invariants.pdf|Some guidlines how to find invariants]]&lt;br /&gt;
* Mike Gordon&amp;#039;s lecture notes on Hoare logic [http://www.lsv.ens-cachan.fr/~demri/Gordon14.pdf]&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6420</id>
		<title>Software Synthesis and Verification</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6420"/>
		<updated>2018-02-22T06:42:58Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: /* Labs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8531 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039;: http://courses.cs.ttu.ee/pages/ITI0130&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lab assistant&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Deepak Pal &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: deepak.pal ätt ttu.ee, &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous courses: [http://vana.cs.ttu.ee/tiki-index.php?page=ITI0060 2014]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Thursdays 10:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 12:00, ICT-122 - Deepak Pal&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exams: &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Thursday May 1, 10:00, room ICT-A2 &amp;lt;br&amp;gt;&lt;br /&gt;
* Thursday May 8, 10:00, room ICT-A2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_18_Intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_18_transition_systems.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_17_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_17_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_17_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1 (see Exercises 1 below)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;16.03.2017&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
** [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: Model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_16_Specifications.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI8531_synthesis1_2017.pdf|Lecture 8]]: Program synthesis I&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 9]]: Program synthesis II&lt;br /&gt;
* Test 2 (13.04.2017): Program synthesis&lt;br /&gt;
* [[Media:ITI8531_Lecture_6_16_rules.pdf|Lecture 11]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 12.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 12.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 13]]: Proving total correctness of while-programs &lt;br /&gt;
* [[Media:ITI8531_Lecture_9_2017_parallel_programs.pdf|Lecture 14]]: Verifying nondeterministic and parallel programs&lt;br /&gt;
* Test 3 (25.05.2017): Deductive verification of non-deterministic and parallel programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &lt;br /&gt;
** Slides: [[Media:UPPAAL Tutorial.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:LightController.xml|Light Controller Model]]&lt;br /&gt;
** Query: [[Media:LightControllerQuery.q|Light Controller Query]]&lt;br /&gt;
** For More Reading about Uppaal, refer below links:&lt;br /&gt;
*** [http://www.uppaal.org/ UPPAAL website]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Small tutorial on UPPAAL]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf Tutorial on UPPAAL]&lt;br /&gt;
&lt;br /&gt;
* Lab 3: Introduction to modelling in UPPAAL&lt;br /&gt;
** Assignment: Coffee Machine&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab1_Coffee_machine_2015.pdf|Example and explanation]]&lt;br /&gt;
** Model: [[Media:ITI0130_Coffee.xml|Coffee machine]]&lt;br /&gt;
** Query: [[Media:ITI0130_Coffee.q|Coffee machine]]&lt;br /&gt;
* Lab 4: UPPAAL&lt;br /&gt;
** Assignment: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 5: UPPAAL&lt;br /&gt;
** Assignment: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12]]&lt;br /&gt;
* Lab 6: UPPAAL&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 7: KeY Introduction&lt;br /&gt;
** Installation: [[Media:ITI0130_Lab7_2016_KeY.pdf|KeY Installation]]&lt;br /&gt;
** Bank example: [[Media:ITI0130_Lab7_2016_Bank.zip|Bank example]]&lt;br /&gt;
** Bank JML: [[Media:ITI0130_Lab7_2016_Bank_JML.zip|Bank JML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Design-by-Contract&lt;br /&gt;
** [https://github.com/nhatminhle/cofoja Contracts for Java (Cofoja)]&lt;br /&gt;
** [https://code.google.com/p/cofoja/w/list Cofoja wiki page]&lt;br /&gt;
** [[Media:ITI0130_Lab5_cofoja_setup.pdf|Installation instructions]]&lt;br /&gt;
** [[Media:ITI0130_Lab5_FM_cofoja.zip|Sample code]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_db2.zip|Secure Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 8: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab8_Key_Instruction.pdf|Installation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
* Lab 11: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab11_Key_practise.zip|JML]]&lt;br /&gt;
** [[Media:ITI0130_Lab11_summax.zip|SumAndMax Example]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab12_Key_assignment.zip|Key assignment]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab13_Bank_example_solution.zip|Solution to Bank example]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Test 1_2017for practicing.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&lt;br /&gt;
* [[Media:Exercises_2.pdf|Exercises 2]]: Partial correctness of WHILE-programs&lt;br /&gt;
** [[Media:while_program_example_2015.pdf|Example 1]]: Partial correctness of WHILE-loop&lt;br /&gt;
** [[Media:DEDUCTIVE_VERIFICATION_Example_2.pdf|Example 2]]: Partial correctness of FOR-loop&lt;br /&gt;
* Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Exercises__3.pdf|Exercises 3.1]]: Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Test3_exercises_solutions.pdf|Exercises 3.2]]: Partial correctness of non-deterministic and parallel programs &lt;br /&gt;
** [[Media:Harjutused_3.pdf|Exercises 3.3]]: Parallel programs with message passing&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://www.fmeurope.org/ Formal Methods Europe]&lt;br /&gt;
* [[Media: 1st_order_proof_rules.pdf|Genzen&amp;#039;s proof system for 1st order logic]]: &lt;br /&gt;
* [[Media: Proof_rules_of_Hoare_logic.pdf|HL proof rules for sequential and parallel programs]]:&lt;br /&gt;
* [[Media: Invariants.pdf|Some guidlines how to find invariants]]&lt;br /&gt;
* Mike Gordon&amp;#039;s lecture notes on Hoare logic [http://www.lsv.ens-cachan.fr/~demri/Gordon14.pdf]&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6419</id>
		<title>Software Synthesis and Verification</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6419"/>
		<updated>2018-02-22T06:42:01Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: /* Labs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8531 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039;: http://courses.cs.ttu.ee/pages/ITI0130&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lab assistant&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Deepak Pal &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: deepak.pal ätt ttu.ee, &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous courses: [http://vana.cs.ttu.ee/tiki-index.php?page=ITI0060 2014]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Thursdays 10:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 12:00, ICT-122 - Deepak Pal&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exams: &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Thursday May 1, 10:00, room ICT-A2 &amp;lt;br&amp;gt;&lt;br /&gt;
* Thursday May 8, 10:00, room ICT-A2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_18_Intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_18_transition_systems.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_17_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_17_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_17_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1 (see Exercises 1 below)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;16.03.2017&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
** [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: Model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_16_Specifications.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI8531_synthesis1_2017.pdf|Lecture 8]]: Program synthesis I&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 9]]: Program synthesis II&lt;br /&gt;
* Test 2 (13.04.2017): Program synthesis&lt;br /&gt;
* [[Media:ITI8531_Lecture_6_16_rules.pdf|Lecture 11]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 12.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 12.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 13]]: Proving total correctness of while-programs &lt;br /&gt;
* [[Media:ITI8531_Lecture_9_2017_parallel_programs.pdf|Lecture 14]]: Verifying nondeterministic and parallel programs&lt;br /&gt;
* Test 3 (25.05.2017): Deductive verification of non-deterministic and parallel programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &lt;br /&gt;
** Slides: [[Media:UPPAAL Tutorial.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:LightController.xml|Light Controller Model]]&lt;br /&gt;
** Query: [[Media:LightControllerQuery.q|Light Controller Query]]&lt;br /&gt;
** For More Reading about Uppaal, refer below links:&lt;br /&gt;
** [http://www.uppaal.org/ UPPAAL website]&lt;br /&gt;
** [http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Small tutorial on UPPAAL]&lt;br /&gt;
** [http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf Tutorial on UPPAAL]&lt;br /&gt;
&lt;br /&gt;
* Lab 3: Introduction to modelling in UPPAAL&lt;br /&gt;
** Assignment: Coffee Machine&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab1_Coffee_machine_2015.pdf|Example and explanation]]&lt;br /&gt;
** Model: [[Media:ITI0130_Coffee.xml|Coffee machine]]&lt;br /&gt;
** Query: [[Media:ITI0130_Coffee.q|Coffee machine]]&lt;br /&gt;
* Lab 4: UPPAAL&lt;br /&gt;
** Assignment: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 5: UPPAAL&lt;br /&gt;
** Assignment: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12]]&lt;br /&gt;
* Lab 6: UPPAAL&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 7: KeY Introduction&lt;br /&gt;
** Installation: [[Media:ITI0130_Lab7_2016_KeY.pdf|KeY Installation]]&lt;br /&gt;
** Bank example: [[Media:ITI0130_Lab7_2016_Bank.zip|Bank example]]&lt;br /&gt;
** Bank JML: [[Media:ITI0130_Lab7_2016_Bank_JML.zip|Bank JML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Design-by-Contract&lt;br /&gt;
** [https://github.com/nhatminhle/cofoja Contracts for Java (Cofoja)]&lt;br /&gt;
** [https://code.google.com/p/cofoja/w/list Cofoja wiki page]&lt;br /&gt;
** [[Media:ITI0130_Lab5_cofoja_setup.pdf|Installation instructions]]&lt;br /&gt;
** [[Media:ITI0130_Lab5_FM_cofoja.zip|Sample code]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_db2.zip|Secure Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 8: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab8_Key_Instruction.pdf|Installation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
* Lab 11: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab11_Key_practise.zip|JML]]&lt;br /&gt;
** [[Media:ITI0130_Lab11_summax.zip|SumAndMax Example]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab12_Key_assignment.zip|Key assignment]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab13_Bank_example_solution.zip|Solution to Bank example]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Test 1_2017for practicing.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&lt;br /&gt;
* [[Media:Exercises_2.pdf|Exercises 2]]: Partial correctness of WHILE-programs&lt;br /&gt;
** [[Media:while_program_example_2015.pdf|Example 1]]: Partial correctness of WHILE-loop&lt;br /&gt;
** [[Media:DEDUCTIVE_VERIFICATION_Example_2.pdf|Example 2]]: Partial correctness of FOR-loop&lt;br /&gt;
* Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Exercises__3.pdf|Exercises 3.1]]: Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Test3_exercises_solutions.pdf|Exercises 3.2]]: Partial correctness of non-deterministic and parallel programs &lt;br /&gt;
** [[Media:Harjutused_3.pdf|Exercises 3.3]]: Parallel programs with message passing&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://www.fmeurope.org/ Formal Methods Europe]&lt;br /&gt;
* [[Media: 1st_order_proof_rules.pdf|Genzen&amp;#039;s proof system for 1st order logic]]: &lt;br /&gt;
* [[Media: Proof_rules_of_Hoare_logic.pdf|HL proof rules for sequential and parallel programs]]:&lt;br /&gt;
* [[Media: Invariants.pdf|Some guidlines how to find invariants]]&lt;br /&gt;
* Mike Gordon&amp;#039;s lecture notes on Hoare logic [http://www.lsv.ens-cachan.fr/~demri/Gordon14.pdf]&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6418</id>
		<title>Software Synthesis and Verification</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6418"/>
		<updated>2018-02-22T06:37:54Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: /* Labs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8531 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039;: http://courses.cs.ttu.ee/pages/ITI0130&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lab assistant&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Deepak Pal &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: deepak.pal ätt ttu.ee, &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous courses: [http://vana.cs.ttu.ee/tiki-index.php?page=ITI0060 2014]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Thursdays 10:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 12:00, ICT-122 - Deepak Pal&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exams: &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Thursday May 1, 10:00, room ICT-A2 &amp;lt;br&amp;gt;&lt;br /&gt;
* Thursday May 8, 10:00, room ICT-A2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_18_Intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_18_transition_systems.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_17_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_17_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_17_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1 (see Exercises 1 below)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;16.03.2017&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
** [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: Model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_16_Specifications.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI8531_synthesis1_2017.pdf|Lecture 8]]: Program synthesis I&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 9]]: Program synthesis II&lt;br /&gt;
* Test 2 (13.04.2017): Program synthesis&lt;br /&gt;
* [[Media:ITI8531_Lecture_6_16_rules.pdf|Lecture 11]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 12.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 12.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 13]]: Proving total correctness of while-programs &lt;br /&gt;
* [[Media:ITI8531_Lecture_9_2017_parallel_programs.pdf|Lecture 14]]: Verifying nondeterministic and parallel programs&lt;br /&gt;
* Test 3 (25.05.2017): Deductive verification of non-deterministic and parallel programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &lt;br /&gt;
** Slides: [[Media:UPPAAL Tutorial.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:LightController.xml|Light Controller Model]]&lt;br /&gt;
** Query: [[Media:LightControllerQuery.q|Light Controller Query]]&lt;br /&gt;
** [http://www.uppaal.org/ UPPAAL website]&lt;br /&gt;
** [http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Small tutorial on UPPAAL]&lt;br /&gt;
** [http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf Tutorial on UPPAAL]&lt;br /&gt;
&lt;br /&gt;
* Lab 3: Introduction to modelling in UPPAAL&lt;br /&gt;
** Assignment: Coffee Machine&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab1_Coffee_machine_2015.pdf|Example and explanation]]&lt;br /&gt;
** Model: [[Media:ITI0130_Coffee.xml|Coffee machine]]&lt;br /&gt;
** Query: [[Media:ITI0130_Coffee.q|Coffee machine]]&lt;br /&gt;
* Lab 4: UPPAAL&lt;br /&gt;
** Assignment: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 5: UPPAAL&lt;br /&gt;
** Assignment: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12]]&lt;br /&gt;
* Lab 6: UPPAAL&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 7: KeY Introduction&lt;br /&gt;
** Installation: [[Media:ITI0130_Lab7_2016_KeY.pdf|KeY Installation]]&lt;br /&gt;
** Bank example: [[Media:ITI0130_Lab7_2016_Bank.zip|Bank example]]&lt;br /&gt;
** Bank JML: [[Media:ITI0130_Lab7_2016_Bank_JML.zip|Bank JML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Design-by-Contract&lt;br /&gt;
** [https://github.com/nhatminhle/cofoja Contracts for Java (Cofoja)]&lt;br /&gt;
** [https://code.google.com/p/cofoja/w/list Cofoja wiki page]&lt;br /&gt;
** [[Media:ITI0130_Lab5_cofoja_setup.pdf|Installation instructions]]&lt;br /&gt;
** [[Media:ITI0130_Lab5_FM_cofoja.zip|Sample code]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_db2.zip|Secure Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 8: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab8_Key_Instruction.pdf|Installation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
* Lab 11: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab11_Key_practise.zip|JML]]&lt;br /&gt;
** [[Media:ITI0130_Lab11_summax.zip|SumAndMax Example]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab12_Key_assignment.zip|Key assignment]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab13_Bank_example_solution.zip|Solution to Bank example]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Test 1_2017for practicing.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&lt;br /&gt;
* [[Media:Exercises_2.pdf|Exercises 2]]: Partial correctness of WHILE-programs&lt;br /&gt;
** [[Media:while_program_example_2015.pdf|Example 1]]: Partial correctness of WHILE-loop&lt;br /&gt;
** [[Media:DEDUCTIVE_VERIFICATION_Example_2.pdf|Example 2]]: Partial correctness of FOR-loop&lt;br /&gt;
* Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Exercises__3.pdf|Exercises 3.1]]: Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Test3_exercises_solutions.pdf|Exercises 3.2]]: Partial correctness of non-deterministic and parallel programs &lt;br /&gt;
** [[Media:Harjutused_3.pdf|Exercises 3.3]]: Parallel programs with message passing&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://www.fmeurope.org/ Formal Methods Europe]&lt;br /&gt;
* [[Media: 1st_order_proof_rules.pdf|Genzen&amp;#039;s proof system for 1st order logic]]: &lt;br /&gt;
* [[Media: Proof_rules_of_Hoare_logic.pdf|HL proof rules for sequential and parallel programs]]:&lt;br /&gt;
* [[Media: Invariants.pdf|Some guidlines how to find invariants]]&lt;br /&gt;
* Mike Gordon&amp;#039;s lecture notes on Hoare logic [http://www.lsv.ens-cachan.fr/~demri/Gordon14.pdf]&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:LightControllerQuery.q&amp;diff=6417</id>
		<title>Fail:LightControllerQuery.q</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:LightControllerQuery.q&amp;diff=6417"/>
		<updated>2018-02-22T06:37:33Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: Light Controller Query&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Light Controller Query&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:LightController.xml&amp;diff=6416</id>
		<title>Fail:LightController.xml</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:LightController.xml&amp;diff=6416"/>
		<updated>2018-02-22T06:35:38Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: Light Controller Model&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Light Controller Model&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6415</id>
		<title>Software Synthesis and Verification</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6415"/>
		<updated>2018-02-22T06:32:06Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: /* Labs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8531 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039;: http://courses.cs.ttu.ee/pages/ITI0130&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lab assistant&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Deepak Pal &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: deepak.pal ätt ttu.ee, &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous courses: [http://vana.cs.ttu.ee/tiki-index.php?page=ITI0060 2014]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Thursdays 10:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 12:00, ICT-122 - Deepak Pal&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exams: &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Thursday May 1, 10:00, room ICT-A2 &amp;lt;br&amp;gt;&lt;br /&gt;
* Thursday May 8, 10:00, room ICT-A2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_18_Intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_18_transition_systems.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_17_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_17_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_17_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1 (see Exercises 1 below)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;16.03.2017&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
** [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: Model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_16_Specifications.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI8531_synthesis1_2017.pdf|Lecture 8]]: Program synthesis I&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 9]]: Program synthesis II&lt;br /&gt;
* Test 2 (13.04.2017): Program synthesis&lt;br /&gt;
* [[Media:ITI8531_Lecture_6_16_rules.pdf|Lecture 11]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 12.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 12.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 13]]: Proving total correctness of while-programs &lt;br /&gt;
* [[Media:ITI8531_Lecture_9_2017_parallel_programs.pdf|Lecture 14]]: Verifying nondeterministic and parallel programs&lt;br /&gt;
* Test 3 (25.05.2017): Deductive verification of non-deterministic and parallel programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &lt;br /&gt;
** Slides: [[Media:UPPAAL Tutorial.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:ITI0130_Light.xml|Lamp example]]&lt;br /&gt;
** Query: [[Media:ITI0130_Light.q|Lamp example]]&lt;br /&gt;
** [http://www.uppaal.org/ UPPAAL website]&lt;br /&gt;
** [http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Small tutorial on UPPAAL]&lt;br /&gt;
** [http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf Tutorial on UPPAAL]&lt;br /&gt;
&lt;br /&gt;
* Lab 3: Introduction to modelling in UPPAAL&lt;br /&gt;
** Assignment: Coffee Machine&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab1_Coffee_machine_2015.pdf|Example and explanation]]&lt;br /&gt;
** Model: [[Media:ITI0130_Coffee.xml|Coffee machine]]&lt;br /&gt;
** Query: [[Media:ITI0130_Coffee.q|Coffee machine]]&lt;br /&gt;
* Lab 4: UPPAAL&lt;br /&gt;
** Assignment: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 5: UPPAAL&lt;br /&gt;
** Assignment: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12]]&lt;br /&gt;
* Lab 6: UPPAAL&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 7: KeY Introduction&lt;br /&gt;
** Installation: [[Media:ITI0130_Lab7_2016_KeY.pdf|KeY Installation]]&lt;br /&gt;
** Bank example: [[Media:ITI0130_Lab7_2016_Bank.zip|Bank example]]&lt;br /&gt;
** Bank JML: [[Media:ITI0130_Lab7_2016_Bank_JML.zip|Bank JML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Design-by-Contract&lt;br /&gt;
** [https://github.com/nhatminhle/cofoja Contracts for Java (Cofoja)]&lt;br /&gt;
** [https://code.google.com/p/cofoja/w/list Cofoja wiki page]&lt;br /&gt;
** [[Media:ITI0130_Lab5_cofoja_setup.pdf|Installation instructions]]&lt;br /&gt;
** [[Media:ITI0130_Lab5_FM_cofoja.zip|Sample code]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_db2.zip|Secure Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 8: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab8_Key_Instruction.pdf|Installation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
* Lab 11: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab11_Key_practise.zip|JML]]&lt;br /&gt;
** [[Media:ITI0130_Lab11_summax.zip|SumAndMax Example]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab12_Key_assignment.zip|Key assignment]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab13_Bank_example_solution.zip|Solution to Bank example]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Test 1_2017for practicing.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&lt;br /&gt;
* [[Media:Exercises_2.pdf|Exercises 2]]: Partial correctness of WHILE-programs&lt;br /&gt;
** [[Media:while_program_example_2015.pdf|Example 1]]: Partial correctness of WHILE-loop&lt;br /&gt;
** [[Media:DEDUCTIVE_VERIFICATION_Example_2.pdf|Example 2]]: Partial correctness of FOR-loop&lt;br /&gt;
* Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Exercises__3.pdf|Exercises 3.1]]: Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Test3_exercises_solutions.pdf|Exercises 3.2]]: Partial correctness of non-deterministic and parallel programs &lt;br /&gt;
** [[Media:Harjutused_3.pdf|Exercises 3.3]]: Parallel programs with message passing&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://www.fmeurope.org/ Formal Methods Europe]&lt;br /&gt;
* [[Media: 1st_order_proof_rules.pdf|Genzen&amp;#039;s proof system for 1st order logic]]: &lt;br /&gt;
* [[Media: Proof_rules_of_Hoare_logic.pdf|HL proof rules for sequential and parallel programs]]:&lt;br /&gt;
* [[Media: Invariants.pdf|Some guidlines how to find invariants]]&lt;br /&gt;
* Mike Gordon&amp;#039;s lecture notes on Hoare logic [http://www.lsv.ens-cachan.fr/~demri/Gordon14.pdf]&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:UPPAAL_Tutorial.pdf&amp;diff=6414</id>
		<title>Fail:UPPAAL Tutorial.pdf</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:UPPAAL_Tutorial.pdf&amp;diff=6414"/>
		<updated>2018-02-22T06:30:09Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: DeepakPal laadis üles faili &amp;amp;quot;Pilt:UPPAAL Tutorial.pdf&amp;amp;quot; uue versiooni&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;UPPAAL introduction&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6413</id>
		<title>Software Synthesis and Verification</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=6413"/>
		<updated>2018-02-22T06:25:52Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: /* Labs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8531 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039;: http://courses.cs.ttu.ee/pages/ITI0130&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lab assistant&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Deepak Pal &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: deepak.pal ätt ttu.ee, &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous courses: [http://vana.cs.ttu.ee/tiki-index.php?page=ITI0060 2014]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Thursdays 10:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 12:00, ICT-122 - Deepak Pal&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exams: &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Thursday May 1, 10:00, room ICT-A2 &amp;lt;br&amp;gt;&lt;br /&gt;
* Thursday May 8, 10:00, room ICT-A2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_18_Intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_18_transition_systems.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_17_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_17_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_17_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1 (see Exercises 1 below)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;16.03.2017&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
** [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: Model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_16_Specifications.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI8531_synthesis1_2017.pdf|Lecture 8]]: Program synthesis I&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 9]]: Program synthesis II&lt;br /&gt;
* Test 2 (13.04.2017): Program synthesis&lt;br /&gt;
* [[Media:ITI8531_Lecture_6_16_rules.pdf|Lecture 11]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 12.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 12.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 13]]: Proving total correctness of while-programs &lt;br /&gt;
* [[Media:ITI8531_Lecture_9_2017_parallel_programs.pdf|Lecture 14]]: Verifying nondeterministic and parallel programs&lt;br /&gt;
* Test 3 (25.05.2017): Deductive verification of non-deterministic and parallel programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lab1_UPPAAL_Tutorial.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:ITI0130_Light.xml|Lamp example]]&lt;br /&gt;
** Query: [[Media:ITI0130_Light.q|Lamp example]]&lt;br /&gt;
** [http://www.uppaal.org/ UPPAAL website]&lt;br /&gt;
** [http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Small tutorial on UPPAAL]&lt;br /&gt;
** [http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf Tutorial on UPPAAL]&lt;br /&gt;
&lt;br /&gt;
* Lab 3: Introduction to modelling in UPPAAL&lt;br /&gt;
** Assignment: Coffee Machine&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab1_Coffee_machine_2015.pdf|Example and explanation]]&lt;br /&gt;
** Model: [[Media:ITI0130_Coffee.xml|Coffee machine]]&lt;br /&gt;
** Query: [[Media:ITI0130_Coffee.q|Coffee machine]]&lt;br /&gt;
* Lab 4: UPPAAL&lt;br /&gt;
** Assignment: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 5: UPPAAL&lt;br /&gt;
** Assignment: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12]]&lt;br /&gt;
* Lab 6: UPPAAL&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 7: KeY Introduction&lt;br /&gt;
** Installation: [[Media:ITI0130_Lab7_2016_KeY.pdf|KeY Installation]]&lt;br /&gt;
** Bank example: [[Media:ITI0130_Lab7_2016_Bank.zip|Bank example]]&lt;br /&gt;
** Bank JML: [[Media:ITI0130_Lab7_2016_Bank_JML.zip|Bank JML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Design-by-Contract&lt;br /&gt;
** [https://github.com/nhatminhle/cofoja Contracts for Java (Cofoja)]&lt;br /&gt;
** [https://code.google.com/p/cofoja/w/list Cofoja wiki page]&lt;br /&gt;
** [[Media:ITI0130_Lab5_cofoja_setup.pdf|Installation instructions]]&lt;br /&gt;
** [[Media:ITI0130_Lab5_FM_cofoja.zip|Sample code]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_db2.zip|Secure Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 8: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab8_Key_Instruction.pdf|Installation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
* Lab 11: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab11_Key_practise.zip|JML]]&lt;br /&gt;
** [[Media:ITI0130_Lab11_summax.zip|SumAndMax Example]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab12_Key_assignment.zip|Key assignment]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab13_Bank_example_solution.zip|Solution to Bank example]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Test 1_2017for practicing.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&lt;br /&gt;
* [[Media:Exercises_2.pdf|Exercises 2]]: Partial correctness of WHILE-programs&lt;br /&gt;
** [[Media:while_program_example_2015.pdf|Example 1]]: Partial correctness of WHILE-loop&lt;br /&gt;
** [[Media:DEDUCTIVE_VERIFICATION_Example_2.pdf|Example 2]]: Partial correctness of FOR-loop&lt;br /&gt;
* Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Exercises__3.pdf|Exercises 3.1]]: Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Test3_exercises_solutions.pdf|Exercises 3.2]]: Partial correctness of non-deterministic and parallel programs &lt;br /&gt;
** [[Media:Harjutused_3.pdf|Exercises 3.3]]: Parallel programs with message passing&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://www.fmeurope.org/ Formal Methods Europe]&lt;br /&gt;
* [[Media: 1st_order_proof_rules.pdf|Genzen&amp;#039;s proof system for 1st order logic]]: &lt;br /&gt;
* [[Media: Proof_rules_of_Hoare_logic.pdf|HL proof rules for sequential and parallel programs]]:&lt;br /&gt;
* [[Media: Invariants.pdf|Some guidlines how to find invariants]]&lt;br /&gt;
* Mike Gordon&amp;#039;s lecture notes on Hoare logic [http://www.lsv.ens-cachan.fr/~demri/Gordon14.pdf]&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:UPPAAL_Tutorial.pdf&amp;diff=6412</id>
		<title>Fail:UPPAAL Tutorial.pdf</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:UPPAAL_Tutorial.pdf&amp;diff=6412"/>
		<updated>2018-02-22T06:15:54Z</updated>

		<summary type="html">&lt;p&gt;DeepakPal: UPPAAL introduction&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;UPPAAL introduction&lt;/div&gt;</summary>
		<author><name>DeepakPal</name></author>
	</entry>
</feed>