{"id":20,"date":"2020-01-08T17:41:11","date_gmt":"2020-01-08T17:41:11","guid":{"rendered":"https:\/\/wp.software.imdea.org\/cbc\/?page_id=20"},"modified":"2026-03-26T11:55:20","modified_gmt":"2026-03-26T10:55:20","slug":"main-cbc-page","status":"publish","type":"page","link":"https:\/\/wp.software.imdea.org\/cbc\/","title":{"rendered":"A Course on Correctness by Construction"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\" id=\"motivatioin\">Motivation and Goals<\/h1>\n\n\n\n<div class=\"wp-block-columns are-vertically-aligned-top coblocks-animate is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\" data-coblocks-animation=\"fadeIn\">\n<div class=\"wp-block-column is-vertically-aligned-top is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"has-drop-cap\">Software is becoming increasingly complex and responsible for critical tasks. Any technology aimed at ensuring the reliability and quality of software will be increasingly relevant, if not utterly necessary.<\/p>\n\n\n\n<p>Only <em>rigorous<\/em> (e.g., mathematically sound) approaches can certify software with the highest possible assurance. These approaches include, among others, the use of specification languages, high-level programming languages (including equational, functional, and logic languages), the use of model checking and deductive verification, language-based approaches often interacting with theorem provers.<\/p>\n\n\n\n<p>In this course we will give a hands-on introduction to rigorous software development methods that follow a &#8220;correctness-by-construction&#8221; approach. <\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-top is-layout-flow wp-block-column-is-layout-flow\">\n<p>While the course is not heavy in theory, everyone is expected to have a good understanding of first-order logic and programming experience. We will explore several methodologies that have approaches and underlying technical bases, but which share a common overarching goal: develop programs while making sure that non-trivial properties, expressing high-level design requirements regarding correctness, fairness and sometimes efficiency, are continuously respected.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized coblocks-animate\" data-coblocks-animation=\"fadeIn\"><img loading=\"lazy\" decoding=\"async\" width=\"576\" height=\"576\" src=\"https:\/\/wp.software.imdea.org\/cbc\/wp-content\/uploads\/sites\/5\/2025\/01\/or-left-edited.png\" alt=\"\" class=\"wp-image-1645\" style=\"aspect-ratio:0.8049382716049382;width:243px;height:auto\" srcset=\"https:\/\/wp.software.imdea.org\/cbc\/wp-content\/uploads\/sites\/5\/2025\/01\/or-left-edited.png 576w, https:\/\/wp.software.imdea.org\/cbc\/wp-content\/uploads\/sites\/5\/2025\/01\/or-left-edited-300x300.png 300w, https:\/\/wp.software.imdea.org\/cbc\/wp-content\/uploads\/sites\/5\/2025\/01\/or-left-edited-150x150.png 150w\" sizes=\"auto, (max-width: 576px) 85vw, 576px\" \/><figcaption class=\"wp-element-caption\">OR-Left<\/figcaption><\/figure>\n<\/div><\/div>\n<\/div>\n\n\n\n<blockquote class=\"wp-block-quote is-style-plain is-layout-flow wp-block-quote-is-layout-flow\" style=\"font-style:italic;font-weight:500\">\n<p>To follow this course, you should have programming experience (three years or more), familiarity with formal (first-order) logic, formal proofs, logic programming, and concurrent programming. If you think you do not meet these requirements, please get in touch ASAP with one instructor to recommend you reading material.<\/p>\n<\/blockquote>\n\n\n\n<div class=\"wp-block-group has-no-padding has-background\" style=\"background-color:#fae3c0\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<h2 class=\"wp-block-heading\" id=\"course-log\">Course Log and Pointers to Class Material<\/h2>\n\n\n\n<p class=\"is-style-info\">Click on the dates to expand the lecture&#8217;s content.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"first-part-system-modelling-using-refinement-and-interactive-theorem-proving\">System Modelling using Refinement and Interactive Theorem Proving<\/h3>\n\n\n\n<div class=\"wp-block-coblocks-accordion\">\n<div class=\"wp-block-coblocks-accordion-item\"><details><summary class=\"wp-block-coblocks-accordion-item__title\"><strong>04\/02\/2025<\/strong>: Intro to rigorous methods and a first taste of Event B<\/summary><div class=\"wp-block-coblocks-accordion-item__content\">\n<p class=\"has-light-gray-background-color has-background\">We gave an overview of <a href=\"https:\/\/wp.software.imdea.org\/cbc\/wp-content\/uploads\/sites\/5\/2026\/02\/01-general-intro-2026.pdf\">pitfalls in software development and initial ideas on formal methods<\/a> and we started with a gentle, informal <a href=\"https:\/\/wp.software.imdea.org\/cbc\/wp-content\/uploads\/sites\/5\/2026\/02\/02-intro-event-b-2026.pdf\">introduction to Event B<\/a>.<\/p>\n<\/div><\/details><\/div>\n\n\n\n<div class=\"wp-block-coblocks-accordion-item\"><details><summary class=\"wp-block-coblocks-accordion-item__title\"><strong>11\/02\/2025: <\/strong>Introduction to Event-B<\/summary><div class=\"wp-block-coblocks-accordion-item__content\">\n<p>We continued with Event-B with the definition of a system that captures the behavior of an algorithm to make integer divisions. <a href=\"https:\/\/wp.software.imdea.org\/cbc\/wp-content\/uploads\/sites\/5\/2026\/02\/02-intro-event-b-2026.pdf\">Slides here<\/a>.<\/p>\n<\/div><\/details><\/div>\n\n\n\n<div class=\"wp-block-coblocks-accordion-item\"><details><summary class=\"wp-block-coblocks-accordion-item__title\"><strong>18\/02\/2025:<\/strong> Inferences in propositional logic, predicate logic, a Rodin example.<\/summary><div class=\"wp-block-coblocks-accordion-item__content\">\n<p>We finished our sessions on <a href=\"https:\/\/wp.software.imdea.org\/cbc\/wp-content\/uploads\/sites\/5\/2026\/02\/02-intro-event-b-2026.pdf\">logic and inference rules<\/a> and we crafted a <a href=\"https:\/\/wp.software.imdea.org\/cbc\/wp-content\/uploads\/sites\/5\/2026\/02\/03-search-2026.pdf\">small example<\/a> in Rodin.<\/p>\n<\/div><\/details><\/div>\n\n\n\n<div class=\"wp-block-coblocks-accordion-item\"><details><summary class=\"wp-block-coblocks-accordion-item__title\"><strong>25\/02\/2025<\/strong>: Developing the model of a sequential program<\/summary><div class=\"wp-block-coblocks-accordion-item__content\">\n<p>We started an example of the development of the <a href=\"https:\/\/wp.software.imdea.org\/cbc\/wp-content\/uploads\/sites\/5\/2026\/02\/search-2026.zip\">model<\/a> of a sequential program following these <a href=\"https:\/\/wp.software.imdea.org\/cbc\/wp-content\/uploads\/sites\/5\/2026\/02\/03-search-2026.pdf\">slides<\/a>.<\/p>\n<\/div><\/details><\/div>\n\n\n\n<div class=\"wp-block-coblocks-accordion-item\"><details><summary class=\"wp-block-coblocks-accordion-item__title\"><strong>4\/3\/2025<\/strong>: Refinements and binary search<\/summary><div class=\"wp-block-coblocks-accordion-item__content\">\n<p>We continued with the development of the model and correctness proof of a search algorithm &#8211; in particular, binary search in a sorted array.  Here are the <a href=\"https:\/\/wp.software.imdea.org\/cbc\/wp-content\/uploads\/sites\/5\/2026\/02\/03-search-2026.pdf\">slides<\/a> and the <a href=\"https:\/\/wp.software.imdea.org\/cbc\/wp-content\/uploads\/sites\/5\/2026\/03\/search-2026-classroom.zip\">model<\/a> as it was finished in the classroom.<\/p>\n<\/div><\/details><\/div>\n\n\n\n<div class=\"wp-block-coblocks-accordion-item\"><details><summary class=\"wp-block-coblocks-accordion-item__title\"><strong>11\/3\/2025<\/strong>: A reactive, concurrent system: Cars on a Narrow Bridge<\/summary><div class=\"wp-block-coblocks-accordion-item__content\">\n<p>We finished the material on <a href=\"https:\/\/wp.software.imdea.org\/cbc\/wp-content\/uploads\/sites\/5\/2026\/02\/03-search-2026.pdf\">sequential development<\/a> with some considerations on theorems and well-definedness for the implication.  We started working on <a href=\"https:\/\/wp.software.imdea.org\/cbc\/wp-content\/uploads\/sites\/5\/2026\/03\/04-cars-2026.pdf\">reactive systems<\/a> with the first steps of a <a href=\"https:\/\/wp.software.imdea.org\/cbc\/wp-content\/uploads\/sites\/5\/2026\/03\/cars-2026.zip\" data-type=\"link\" data-id=\"https:\/\/wp.software.imdea.org\/cbc\/wp-content\/uploads\/sites\/5\/2026\/03\/cars-2026.zip\">model<\/a> for software to control cars on a bridge.<\/p>\n<\/div><\/details><\/div>\n\n\n\n<div class=\"wp-block-coblocks-accordion-item\"><details><summary class=\"wp-block-coblocks-accordion-item__title\"><strong>18\/3\/2025<\/strong>: A reactive, concurrent system: Cars on a Narrow Bridge<\/summary><div class=\"wp-block-coblocks-accordion-item__content\">\n<p>We continue building the <a href=\"https:\/\/wp.software.imdea.org\/cbc\/wp-content\/uploads\/sites\/5\/2026\/03\/cars-2026.zip\">model<\/a> and we are halfway with <a href=\"https:\/\/wp.software.imdea.org\/cbc\/wp-content\/uploads\/sites\/5\/2026\/03\/04-cars-2026.pdf\">adding traffic lights<\/a>.<\/p>\n<\/div><\/details><\/div>\n\n\n\n<div class=\"wp-block-coblocks-accordion-item\"><details><summary class=\"wp-block-coblocks-accordion-item__title\"><strong>25\/05\/2025<\/strong>: Comments on the homework; finish the &#8220;Cars on a Narrow Bridge&#8221; example.<\/summary><div class=\"wp-block-coblocks-accordion-item__content\">\n<p>I made some <a href=\"https:\/\/wp.software.imdea.org\/cbc\/wp-content\/uploads\/sites\/5\/2026\/03\/01-comments-publish.pdf\">comments on the homework<\/a> and solved the exercises.  We finished the example of the cars on the bridge.  here are the final <a href=\"https:\/\/wp.software.imdea.org\/cbc\/wp-content\/uploads\/sites\/5\/2026\/03\/04-cars-2026.pdf\">slides<\/a> and the <a href=\"https:\/\/wp.software.imdea.org\/cbc\/wp-content\/uploads\/sites\/5\/2026\/03\/cars-2026.zip\">model<\/a> as we finished it in the classroom.<\/p>\n<\/div><\/details><\/div>\n\n\n\n<div class=\"wp-block-coblocks-accordion-item\"><details><summary class=\"wp-block-coblocks-accordion-item__title\"><strong>01\/04\/2025<\/strong>: No lecture (Easter Holidays)<\/summary><div class=\"wp-block-coblocks-accordion-item__content\">\n<p><\/p>\n<\/div><\/details><\/div>\n\n\n\n<div class=\"wp-block-coblocks-accordion-item\"><details><summary class=\"wp-block-coblocks-accordion-item__title\"><strong>08\/04\/2025<\/strong>: <\/summary><div class=\"wp-block-coblocks-accordion-item__content\">\n<p><\/p>\n<\/div><\/details><\/div>\n\n\n\n<div class=\"wp-block-coblocks-accordion-item\"><details><summary class=\"wp-block-coblocks-accordion-item__title\"><strong>15\/04\/2025<\/strong>: <\/summary><div class=\"wp-block-coblocks-accordion-item__content\">\n<p><\/p>\n<\/div><\/details><\/div>\n\n\n\n<div class=\"wp-block-coblocks-accordion-item\"><details><summary class=\"wp-block-coblocks-accordion-item__title\"><strong>22\/04\/2025<\/strong>: No lecture. This Wednesday will have the lectures of a Friday at UPM to compensate for other Fridays without lectures.<\/summary><div class=\"wp-block-coblocks-accordion-item__content\">\n<p><\/p>\n<\/div><\/details><\/div>\n\n\n\n<div class=\"wp-block-coblocks-accordion-item\"><details><summary class=\"wp-block-coblocks-accordion-item__title\"><strong>29\/04\/2025<\/strong>: <\/summary><div class=\"wp-block-coblocks-accordion-item__content\">\n<p><\/p>\n<\/div><\/details><\/div>\n\n\n\n<div class=\"wp-block-coblocks-accordion-item\"><details><summary class=\"wp-block-coblocks-accordion-item__title\"><strong>06\/05\/2025<\/strong>: <\/summary><div class=\"wp-block-coblocks-accordion-item__content\">\n<p><\/p>\n<\/div><\/details><\/div>\n\n\n\n<div class=\"wp-block-coblocks-accordion-item\"><details><summary class=\"wp-block-coblocks-accordion-item__title\"><strong>14305\/2025<\/strong>:<\/summary><div class=\"wp-block-coblocks-accordion-item__content\">\n<p><\/p>\n<\/div><\/details><\/div>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"project-presentation-sessions\">Project Presentation Sessions<\/h3>\n\n\n\n<p>We plan one or two presentation sessions.  We may have to use additional sessions depending on the number of project teams. <\/p>\n\n\n\n<div class=\"wp-block-coblocks-accordion\">\n<div class=\"wp-block-coblocks-accordion-item\"><details><summary class=\"wp-block-coblocks-accordion-item__title\"><strong>20\/5\/2025<\/strong>: First term project presentation session<\/summary><div class=\"wp-block-coblocks-accordion-item__content\">\n<p><\/p>\n<\/div><\/details><\/div>\n\n\n\n<div class=\"wp-block-coblocks-accordion-item\"><details><summary class=\"wp-block-coblocks-accordion-item__title\"><strong>27\/5\/2025<\/strong>: Second term project presentation session<\/summary><div class=\"wp-block-coblocks-accordion-item__content\">\n<p><\/p>\n<\/div><\/details><\/div>\n<\/div>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity is-style-wide\" \/>\n\n\n\n<div class=\"wp-block-group has-no-padding has-background\" style=\"background-color:#fae3c0\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<h1 class=\"wp-block-heading\" id=\"admin\">Location, Schedule, Administrivia<\/h1>\n\n\n\n<h2 class=\"wp-block-heading has-dark-red-color has-text-color\" id=\"place-and-time\">Place and time<\/h2>\n\n\n\n<p>During the academic year 2025-2026 we will meet physically at classroom 6205 from 3pm to 6pm on Wednesdays. We will post any exception on the course mailing list (see below) and the <a href=\"https:\/\/wp.software.imdea.org\/cbc\/wp-admin\/post.php?post=20&amp;action=edit#course-log\">course log<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-dark-red-color has-text-color\" id=\"teachers\">Teaching<\/h2>\n\n\n\n<h3 class=\"wp-block-heading has-dark-red-color has-text-color has-link-color has-medium-font-size wp-elements-05e177bc12f80ac0559de39c7d6843bc\">Manuel Carro (coordinator)<\/h3>\n\n\n\n<p>Office 035 at the IMDEA Software Institute (under appointment)- mcarro |at| fi DOT upm DOT es.<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-dark-red-color has-text-color\" id=\"communication\">Communication<\/h2>\n\n\n\n<p class=\"has-text-align-left\">For security reasons, you cannot subscribe to the mailing list by yourself.  You should have been subscribed by some instructor, and you should have received a welcome message with the initial subscription.  Note that you can only post to the list from the mail address that has been subscribed.  If you want to change it, please let an instructor know. <strong>In normal situations, all important classroom announcements will go through the course mailing list<\/strong>, so please be sure to read the subscribed address regularly.<\/p>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity is-style-wide\" \/>\n\n\n\n<div class=\"wp-block-group has-no-padding has-background\" style=\"background-color:#fae3c0\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<h1 class=\"wp-block-heading\" id=\"policy\">Course Policy<\/h1>\n\n\n\n<p>To keep this landing page short, the course policy appears in a <a href=\"https:\/\/wp.software.imdea.org\/cbc\/course-policy\/\" data-type=\"page\" data-id=\"438\">separate page<\/a>.  <strong>This does not mean it is less important<\/strong>. Please make sure to read it.<\/p>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity is-style-wide\" \/>\n\n\n\n<div class=\"wp-block-group has-no-padding has-background\" style=\"background-color:#fae3c0\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<h1 class=\"wp-block-heading\" id=\"resources\">Academic Resources<\/h1>\n\n\n\n<p>Please have a look as well at the <a href=\"https:\/\/wp.software.imdea.org\/cbc\/assorted-resources\/\">Assorted Resources<\/a>.  It contains not-strictly-academic (but interesting) material!<\/p>\n\n\n\n<p>Some of the resources below are books.  The University library may have a copy of them.  Otherwise, copies can be available in several online book shops.  Last, it may be possible that copies are freely available on the web; I of course cannot know whether they have been posted with permission from the copyright holders.<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-dark-red-color has-text-color\" id=\"logic\">Logic <\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Lawrence Paulson&#8217;s <em><a href=\"https:\/\/wp.software.imdea.org\/cbc\/wp-content\/uploads\/sites\/5\/2020\/01\/lawrence-paulson-logic-and-proof.pdf\">Logic and Proof<\/a><\/em> are the course notes of the author for a Logic course in Cambridge.  Highly recommended, as they are both rigorous and very concise. They provide very good background material for both parts of the course.<\/li>\n\n\n\n<li>A very good book on the use of logic in computer science is <a href=\"https:\/\/www.cambridge.org\/core\/books\/logic-in-computer-science\/9022E2BE5E7C9F20D259F4A83986236C\">Logic in Computer Science<\/a>, by Huth and Ryan. The second edition is preferable.<\/li>\n\n\n\n<li><a href=\"https:\/\/www.amazon.com\/Mathematical-Logic-Computer-Science-Third\/dp\/1447141288\">Mathematical Logic for Computer Science<\/a>. Mordechai Ben-Ari. There should be copies in the School&#8217;s library.<\/li>\n\n\n\n<li><a href=\"http:\/\/sweetreason2ed.com\/home.html\">Sweet Reason: a Field Guide to Modern Logic<\/a>. &nbsp;James M. Henle, Jay L. Garfield, Thomas Tymoczko.  This book explains several topics on logic and logic reasoning with many entertaining non-technical examples from many sources. It does not focus on logic and computation, however. <\/li>\n\n\n\n<li>Class notes on <a href=\"https:\/\/wp.software.imdea.org\/cbc\/wp-content\/uploads\/sites\/5\/2021\/02\/lec-09.pdf\">Gentzen systems<\/a> and <a href=\"https:\/\/wp.software.imdea.org\/cbc\/wp-content\/uploads\/sites\/5\/2021\/02\/lec-11.pdf\">single-conclusioned Gentzen systems and refinement logic<\/a> (the sequent calculus we use in the lectures) from the <a href=\"https:\/\/www.cs.cornell.edu\/courses\/cs4860\/2009sp\/schedule.html\">Spring 2009 CS 4860<\/a> (Applied Logic) course in Cornell. <strong>Syntax node:<\/strong> these classnotes sometimes use &#8220;\u2283&#8221; to denote implication, when we (and many others) use &#8220;\u21d2&#8221;.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading has-dark-red-color has-text-color\" id=\"formal_development\">Formal Development<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/wp.software.imdea.org\/cbc\/wp-content\/uploads\/sites\/5\/2020\/01\/faultless-systems.pdf\">Faultless Systems: Yes, we Can!<\/a> is a short article by Jean-Raymond Abrial, the creator of Event-B (among other systems and proposals for rigorous software development) that explains the ideas behind the Event-B methodology.<\/li>\n\n\n\n<li><a href=\"https:\/\/www3.hhu.de\/stups\/downloads\/pdf\/b-industrial-history.pdf\">Twenty-Five Years of the B-Method<\/a>: a short overview of the history of B and its descendant Event B and some of the projects in which it has been used.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading has-dark-red-color has-text-color\" id=\"event_b_reference\">Event B Reference<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The definitive reference for Event B is <em><a href=\"https:\/\/www.cambridge.org\/ro\/academic\/subjects\/computer-science\/programming-languages-and-applied-logic\/modeling-event-b-system-and-software-engineering?format=HB\">Modeling in Event-B: System and Software Engineering<\/a><\/em>, by Jean-Raymond Abrial.<\/li>\n\n\n\n<li>The richest information point for Event B is the <a href=\"http:\/\/www.event-b.org\/\">Event B wiki<\/a>.  A summary of the  inference and equality rules, axioms, proof obligations, and syntax of Event B can be found in these <a href=\"https:\/\/wp.software.imdea.org\/cbc\/wp-content\/uploads\/sites\/5\/2020\/01\/reference-slides.pdf\">slides<\/a>. <\/li>\n\n\n\n<li>This <a href=\"https:\/\/wp.software.imdea.org\/cbc\/wp-content\/uploads\/sites\/5\/2020\/01\/EventB-Summary.pdf\">reference card<\/a> has a (very useful) summary of the Event B notation.<\/li>\n\n\n\n<li>The mathematical toolkit of Event B is explained in a <a href=\"https:\/\/wp.software.imdea.org\/cbc\/wp-content\/uploads\/sites\/5\/2020\/02\/MathematicalLanguage-Abrial.pdf\">report<\/a>. <\/li>\n\n\n\n<li>An&nbsp;<a href=\"https:\/\/wp.software.imdea.org\/cbc\/wp-content\/uploads\/sites\/5\/2020\/01\/intro-event-b-Thai-Song.pdf\">introduction<\/a>&nbsp;to the Event-B method with a description of its phases.<\/li>\n<\/ul>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity is-style-wide\" \/>\n\n\n\n<div class=\"wp-block-group has-no-padding has-background\" style=\"background-color:#fae3c0\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<h1 class=\"wp-block-heading has-dark-gray-color has-text-color\" id=\"tools\">Tools<\/h1>\n\n\n\n<h2 class=\"wp-block-heading has-dark-red-color has-text-color\" id=\"rodin\">Rodin<\/h2>\n\n\n\n<p>The essential tool to perform development with Event B is <em><a href=\"http:\/\/wiki.event-b.org\/index.php\/Rodin_Platform_Releases\">Rodin<\/a><\/em>, an Eclipse-based tool. It includes an editor for the components of an Event B project that keeps track of the pending proof obligations and tries to discharge them on the fly. <em><strong>Note:<\/strong> the page linked above refers to Rodin 3.8, while the current version is Rodin 3.9 (and Rodin 3.10 is currently in RC state).<\/em> It has many&nbsp;<a href=\"http:\/\/wiki.event-b.org\/index.php\/Rodin_Plug-ins\">plugins<\/a>&nbsp;(installable&nbsp;<strong>directly<\/strong>&nbsp;from Rodin) that provide advanced theorem proving capabilities (to discharge proof obligations on demand and, hopefully, with only a button press), model checkers, animation, printout generation, and much more. You need to install it, as it will be use extensively during the course.<\/p>\n\n\n\n<p class=\"is-style-warning\">Please read this <a href=\"https:\/\/wp.software.imdea.org\/cbc\/rodin-installation-and-tips\/\">quick guide to installing Rodin<\/a>. It includes some tips and instructions to perform several common tasks. This will save you time! At point, you will need to interact with the theorem provers. A page with <a href=\"https:\/\/wp.software.imdea.org\/cbc\/?page_id=1086\">tips for proving<\/a> will be handy!<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Homepage of the&nbsp;<a href=\"http:\/\/sourceforge.net\/projects\/rodin-b-sharp\/files\/Core_Rodin_Platform\/\">Rodin versions<\/a>. Please make sure to download the latest version.<\/li>\n\n\n\n<li><a href=\"http:\/\/handbook.event-b.org\/current\/html\/tut_installation.html\">Installation instructions<\/a>&nbsp;for RODIN.<\/li>\n\n\n\n<li>The&nbsp;<a href=\"https:\/\/www3.hhu.de\/stups\/handbook\/rodin\/current\/html\/\">handbook<\/a>&nbsp;for Rodin. It does not correspond the latest tool version: some details differ, but the basic ideas remain.<\/li>\n\n\n\n<li>The&nbsp;<em>Atelier B Provers<\/em>&nbsp;plugin is <strong>necessary<\/strong> for any non-trivial development. Install it by going to&nbsp;Help&nbsp;\u21d2&nbsp;Install new software&nbsp;\u21d2 select&nbsp;Atelier B Provers&nbsp;\u21d2 Select in box \u21d2 Click&nbsp;Next&nbsp;\u21d2 Follow instructions. If you do not install these provers, many course examples will not work.<\/li>\n\n\n\n<li>Relevant sections of the manuals:\n<ul class=\"wp-block-list\">\n<li>How to&nbsp;<a href=\"https:\/\/www3.hhu.de\/stups\/handbook\/rodin\/current\/html\/tut_project_setup.html\">set up<\/a>&nbsp;a Rodin project (we will see it during the lectures).<\/li>\n\n\n\n<li>Hints on&nbsp;<a href=\"https:\/\/www3.hhu.de\/stups\/handbook\/rodin\/current\/html\/proving.html\">discharging proofs<\/a>&nbsp;using RODIN. Read it: it contains many hints and information on how to use the built-in and external theorem provers.<\/li>\n\n\n\n<li>An explanation of the&nbsp;<a href=\"https:\/\/www3.hhu.de\/stups\/handbook\/rodin\/current\/html\/proving_perspective.html\">proving perspective<\/a>&nbsp;from the user interface point of view.<\/li>\n\n\n\n<li>A catalog of the&nbsp;<a href=\"https:\/\/www3.hhu.de\/stups\/handbook\/rodin\/current\/html\/generated_proof_obligations.html\">proof obligations<\/a>&nbsp;generated by RODIN and their meaning.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>A list of the <a href=\"https:\/\/wp.software.imdea.org\/cbc\/wp-content\/uploads\/sites\/5\/2021\/02\/All_Inference_Rules_Event-B.pdf\">inference rules<\/a> and&nbsp;<a href=\"https:\/\/wp.software.imdea.org\/cbc\/wp-content\/uploads\/sites\/5\/2021\/02\/All_Rewrite_Rules-Event-B.pdf\">rewriting rules<\/a>&nbsp;in the default Event B prover (extracted from the Event B website).<\/li>\n<\/ul>\n\n\n\n<p><br><\/p>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Motivation and Goals Software is becoming increasingly complex and responsible for critical tasks. Any technology aimed at ensuring the reliability and quality of software will be increasingly relevant, if not utterly necessary. Only rigorous (e.g., mathematically sound) approaches can certify software with the highest possible assurance. These approaches include, among others, the use of specification &hellip; <a href=\"https:\/\/wp.software.imdea.org\/cbc\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;A Course on Correctness by Construction&#8221;<\/span><\/a><\/p>\n","protected":false},"author":4,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","ngg_post_thumbnail":0,"footnotes":""},"class_list":["post-20","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/wp.software.imdea.org\/cbc\/wp-json\/wp\/v2\/pages\/20","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wp.software.imdea.org\/cbc\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/wp.software.imdea.org\/cbc\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/wp.software.imdea.org\/cbc\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/wp.software.imdea.org\/cbc\/wp-json\/wp\/v2\/comments?post=20"}],"version-history":[{"count":529,"href":"https:\/\/wp.software.imdea.org\/cbc\/wp-json\/wp\/v2\/pages\/20\/revisions"}],"predecessor-version":[{"id":1797,"href":"https:\/\/wp.software.imdea.org\/cbc\/wp-json\/wp\/v2\/pages\/20\/revisions\/1797"}],"wp:attachment":[{"href":"https:\/\/wp.software.imdea.org\/cbc\/wp-json\/wp\/v2\/media?parent=20"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}