====== Modelli di calcolo - Models of computation ====== {{:magistraleinformatica:mod:prova.png?150 | }} **MOD 2016/17 (375AA, 9 CFU)** Lecturer: **Roberto Bruni**\\ [[http://www.di.unipi.it/~bruni|web]] - [[mailto:bruni@di.unipi.it|email]] - phone 050 2212785 - fax 050 2212726 Office hours: **Wednesday 15:00-17:00 or by appointment** ---- ==== Objectives ==== The objective of the course is to present: * different models of computation, * their programming paradigms, * their mathematical descriptions, both //concrete// and //abstract//, and also to present some intellectual tools/techniques: * for reasoning on models, and * for proving (some of) their properties. To this aim, a rigorous approach will be followed for both the //syntax// and the //semantics// of the paradigms we work on: * **IMP**: imperative models * **HOFL**: functional models * **CCS**, pi-calculus: concurrent, non-deterministic and interactive models * **PEPA**: probabilistic/stochastic models The focus will be on basic proof techniques (there will be not time to introduce more advanced topics in detail). In doing so, several important notions will be presented (not necessarily in this order): context-free grammars, proof systems (axioms and inference rules), goal-driven derivations, various incarnations of well-founded induction, structural recursion, lambda-calculus, program equivalence, compositionality, completeness and correctness, type systems, domain theory (complete partial orders, continuous functions, fixpoint), labelled transition systems, bisimulation equivalences, temporal and modal logics, Markov chains, probabilistic reactive and generative systems. ---- ==== Preliminary test ==== [[magistraleinformatica:mod:start:pretest]] ---- ==== Course Overview ==== We introduce the principles of operational semantics, the principles of denotational semantics, and the techniques to relate one to the other for an imperative language and for a higher order functional language. Operational and observational semantics of two process description languages (CCS and pi-calculus) are presented. Several examples of temporal and modal logics are also discussed (HM, LTL, CTL*, mu-calculus). Finally, we consider operational nondeterministic models with discrete probabilities, and we present them from the perspective of probabilistic and stochastic automata, and of the PEPA calculus. ---- ==== Textbook(s) ==== Main text: * Roberto Bruni, Ugo Montanari, "[[http://www.springer.com/978-3-319-42898-7|Models of Computation]]", Springer Texts in Computer Science, 2017. Other readings: * Glynn Winskel, "[[https://mitpress.mit.edu/books/formal-semantics-programming-languages|The formal Semantics of Programming Languages]]", MIT Press, 1993. Chapters: 1.3, 2, 3, 4, 5, 8, 11.\\ "La Semantica Formale dei Linguaggi di Programmazione", traduzione italiana a cura di Franco Turini, UTET 1999. * Robin Milner, "[[https://books.google.it/books/about/Communication_and_Concurrency.html?id=QPyyQgAACAAJ&redir_esc=y|Communication and Concurrency]]", Prentice Hall, 1989. Chapters: 1-7, 10. ---- ==== Exams ==== The evaluation will be based on written and oral exams. The written exam is not necessary if the two (written) mid-terms exams are evaluated positively. * First (written) mid-term exam: **thursday 06/04/2017, 11:00-13:00, room A1** * Second (written) mid-term exam: **thursday 01/06/2017, 11:00-13:00, room A1** Registration to written exams (mandatory): [[https://esami.unipi.it/esami/|Exams registration system]] In the written exam the student must demonstrate * knowledge: his/her knowledge of the course material * problem solving: the ability to solve some exercises, and * organisation: the ability to organise an effective and correctly written reply. During the oral exam the student must demonstrate * knowledge: his/her knowledge of the course material, and * understanding: the ability to discuss the reading matter thoughtfully and with propriety of expression. ---- ==== Oral Exams: schedule ==== ^ Date ^^ Time ^ Name ^ | **...** | **...** | ... | ... | | | | ... | ... | | | | ... | ... | ---- ==== Announcements ==== * **as the course starts**:\\ Each student should send an email to the professor from his/her favourite email account with subject **MOD16-17** and the following data\\ (by doing so, the account will be included in the class mailing-list, where important announcements can be sent): - **first name** and **last name** (please clarify which is which, to avoid ambiguities) - **enrolment number** (numero di matricola) - bachelor degree (**course of study** and **university**) - your favourite topics in computer science (optional) ---- ==== Lectures ==== ^ N ^ Date ^^ Time ^ Room ^ Lecture notes ^ Links ^ | 1 | Tue | 21/02 | 11:00-13:00 | L1 | Introduction to the course | | | 2 | Wed | 22/02 | 11:00-13:00 | N1 | Preliminaries:\\ //formal semantics// | | | 3 | Thu | 23/02 | 14:00-16:00 | N1 | Preliminaries:\\ //signatures, unification problem\\ logical systems, derivations// | | | 4 | Tue | 28/02 | 11:00-13:00 | L1 | Preliminaries:\\ //goal-oriented derivations, logic programming//\\ \\ Operational semantics of IMP:\\ //syntax of IMP// | | | 5 | Wed | 01/03 | 11:00-13:00 | N1 | Operational semantics of IMP:\\ //inference rules, non-termination, equivalence// | | | 6 | Thu | 02/03 | 14:00-16:00 | N1 | Operational semantics of IMP:\\ //equivalence and inequivalence proofs//\\ \\ Induction and recursion:\\ //well-founded relations, transitive closures, acyclic relations, well-founded induction// | | | 7 | Tue | 07/03 | 11:00-13:00 | L1 | Exercises on unification and logic systems\\ \\ Induction and recursion:\\ //mathematical induction, structural induction// | | | 8 | Wed | 08/03 | 11:00-13:00 | N1 | Induction and recursion:\\ //termination and determinacy of IMP arithmetic expressions,\\ induction on derivations, rule induction, determinacy of IMP commands// | | | 9 | Thu | 09/03 | 14:00-16:00 | N1 | Induction and recursion:\\ //lexicographic precedence relation, primitive recursive functions\\ well-founded recursion, Ackermann function// | | | 10 | Tue | 14/03 | 11:00-13:00 | L1 | Exercises on the operational semantics of IMP and induction | | | 11 | Wed | 15/03 | 11:00-13:00 | N1 | Partial orders and fixpoints:\\ //partial orders, Hasse diagrams, least upper bound, chains, limits,\\ complete partial orders, bottom element, powerset completeness// | | | 12 | Thu | 16/03 | 14:00-16:00 | N1 | Partial orders and fixpoints:\\ //monotonicity, continuity, Kleene's fixpoint theorem// | | | 13 | Tue | 21/03 | 11:00-13:00 | L1 | Partial orders and fixpoints:\\ //immediate consequences operator//\\ \\ Exercises on CPOs and fixed points | | | 14 | Wed | 22/03 | 11:00-13:00 | N1 | Denotational semantics of IMP:\\ //lambda-notation, abstraction, application, alpha-conversion, beta-rule,\\ capture-avoiding substitutions, denotational semantics of IMP// | | | 15 | Thu | 23/03 | 14:00-16:00 | N1 | Denotational semantics of IMP:\\ //equivalence between operational and denotational semantics// | | | 16 | Tue | 28/03 | 11:00-13:00 | L1 | Denotational semantics of IMP:\\ //equivalence between operational and denotational semantics,\\ computational induction (optional argument)//\\ \\ Exercises about denotational semantics of IMP | | | 17 | Wed | 29/03 | 11:00-13:00 | N1 | Exercises about denotational semantics of IMP\\ \\ Operational semantics of HOFL:\\ //Pre-terms, well-formed terms// | | | 18 | Thu | 30/03 | 14:00-16:00 | N1 | Operational semantics of HOFL:\\ //typability, lazy and eager semantics, canonical forms// | | | 19 | Tue | 04/04 | 11:00-13:00 | L1 | Exercises on the operational semantics of HOFL\\ \\ Domain theory:\\ //Integers with bottom, cartesian product// | | | 20 | Wed | 05/04 | 11:00-13:00 | N1 | Domain theory:\\ //Functional domains, lifting, continuity theorems// | | | 21 | Thu | 06/04 | 11:00-13:00 | A1 | **First mid-term written exam**\\ {{ :magistraleinformatica:mod:testo-2017-04-06.pdf |Exam}}\\ {{ :magistraleinformatica:mod:testo-2017-04-06-appello-straordinario.pdf |Appello Straordinario}} | | | - | Thu | 20/04 | 14:00-16:00 | N1 | **Canceled** | | | 22 | Wed | 26/04 | 11:00-13:00 | N1 | Domain theory:\\ //continuity theorems, apply, fix, let//\\ \\ Denotational semantics of HOFL | | | 23 | Thu | 27/04 | 14:00-16:00 | N1 | Exercises on domain theory\\ \\ Denotational semantics of HOFL:\\ // Type consistency, substitution lemma, compositionality and other properties//\\ \\ Equivalence between the operational and denotational semantics of HOFL:\\ //Correctness of the operational semantics, counterexample to completeness// | | | 24 | Tue | 02/05 | 11:00-13:00 | L1 | Equivalence between the operational and denotational semantics of HOFL:\\ //Operational convergence, denotational convergence,\\ operational convergence implies denotational convergence,\\ denotational convergence implies operational convergence (optional),\\ operational equivalence, denotational equivalence, unlifted semantics//\\ \\ Exercises on the denotational semantics of HOFL and on the equivalence between the operational and denotational semantics of HOFL | | | 25 | Wed | 03/05 | 11:00-13:00 | N1 | CCS:\\ //extensible stack, syntax, operational semantics// | | | 26 | Thu | 04/05 | 14:00-16:00 | N1 | CCS:\\ //linking operator, CCS with value-passing, recursive declarations,\\ abstract semantics, graph isomorphism, trace equivalence, bisimulation game,\\ strong bisimulation, strong bisimilarity// | | | 27 | Tue | 09/05 | 11:00-13:00 | L1 | CCS:\\ //properties of strong bisimilarity, guarded processes// | | | 28 | Wed | 10/05 | 11:00-13:00 | N1 | CCS:\\ //Knaster-Tarski's fixpoint theorem, compositionality, Hennessy-Milner logic,\\ axiomatisation of strong bisimilarity// | | | 29 | Thu | 11/05 | 14:00-16:00 | N1 | CCS:\\ //Weak bisimilarity, weak observational congruence, Milner's tau-laws,\\ dynamic bisimilarity, other bisimulation games, modelling with CCS// | [[http://caal.cs.aau.dk/|CAAL]]\\ [[http://pseuco.com|PseuCo]]\\ [[http://rap.dsi.unifi.it/tapas/en/index.htm|TAPAS]] | | 30 | Tue | 16/05 | 11:00-13:00 | L1 | Exercises on CCS | | | 31 | Wed | 17/05 | 11:00-13:00 | N1 | Temporal and modal logics:\\ //linear temporal logic (LTL), computational tree logic (CTL* and CTL), mu-calculus// | | | 32 | Thu | 18/05 | 14:00-16:00 | N1 | Pi-calculus:\\ //syntax and operational semantics,\\ structural equivalence and reduction semantics (optional reading)\\ abstract semantics, early and late bisimilarities, weak bisimilarities// | [[http://golang.org/|Google Go]] | | 33 | Mon | 22/05 | 17:00-18:30 | C1 | Exercises on modal logics and pi-calculus | | | 34 | Tue | 23/05 | 11:00-13:00 | L1 | Measure theory and Markov chains:\\ //probability space, random variables, exponential distribution,\\ stochastic processes, homogeneous Markov chains, DTMC, ergodic DTMC,\\ steady state distribution// | | | 35 | Wed | 24/05 | 11:00-13:00 | N1 | Measure theory and Markov chains:\\ //finite path probability, CTMC, infinitesimal generator matrix, embedded DTMC,\\ bisimilarity revisited, reachability predicate, CTMC bisimilarity, DTMC bisimilarity//\\ \\ Markov chains with actions and nondeterminism:\\ //reactive systems, bisimilarity for reactive systems, Larsen-Skou logic,\\ generative systems, simple Segala automata, Segala automata\\ alternating and bundle transitions systems (optional reading)// | | | 36 | Thu | 25/05 | 14:00-16:00 | N1 | PEPA:\\ //CSP syntax, CSP operational semantics, PEPA syntax, apparent rate,\\ PEPA operational semantics// | [[http://www.dcs.ed.ac.uk/pepa/|PEPA]] | | 37 | Tue | 30/05 | 11:00-13:00 | L1 | Exercises on probabilistic systems | | | 38 | Wed | 01/06 | 11:00-13:00 | A1 | **Second mid-term written exam**\\ {{ :magistraleinformatica:mod:testo-2017-06-01.pdf |Exam}} | | | 39 | Thu | 15/06 | 14:00-16:00 | C | {{ :magistraleinformatica:mod:testo-2017-06-15.pdf |Exam}} | | | 40 | Thu | 06/07 | 14:00-16:00 | C | {{ :magistraleinformatica:mod:testo-2017-07-06.pdf |Exam}} | | | 41 | Tue | 25/07 | 14:00-16:00 | A1 | {{ :magistraleinformatica:mod:testo-2017-07-25.pdf |Exam}} | | | 42 | Thu | 07/09 | 14:00-16:00 | N1 | {{ :magistraleinformatica:mod:testo-2017-09-07.pdf |Exam}} | | | 43 | Tue | 31/10 | 14:00-16:00 | C1 | {{ :magistraleinformatica:mod:2017-10-31-appello-straordinario.pdf |Extra-ordinary Exam}} | | | 44 | Tue | 16/01 | 14:00-16:00 | N1 | {{ :magistraleinformatica:mod:testo-2018-01-16.pdf |Exam}} | | | 45 | Tue | 13/02 | 14:00-16:00 | N1 | {{ :magistraleinformatica:mod:testo-2018-02-13.pdf |Exam}} | | | 46 | Thu | 05/04 | 14:00-16:00 | L1 | {{ :magistraleinformatica:mod:2018-04-05-appello-straordinario.pdf |Extra-ordinary Exam}} | | ---- ==== Past courses ==== * [[magistraleinformatica:mod:2015-16:|A.A. 2015/16]] * [[magistraleinformatica:mod:2014-15:|A.A. 2014/15]] * [[magistraleinformatica:mod:2013-14:|A.A. 2013/14]] ----