Questa è una vecchia versione del documento!
PSC 2020/21 (375AA, 9 CFU)
Lecturer: Roberto Bruni
web - email - Microsoft Teams channel
Office hours: Tuesday 15:00-17:00 or by appointment
The objective of the course is to present:
The course will cover the basic techniques for assigning meaning to programs with higher-order, concurrent and probabilistic features (e.g., domain theory, logical systems, well-founded induction, structural recursion, labelled transition systems, Markov chains, probabilistic reactive systems, stochastic process algebras) and for proving their fundamental properties, such as termination, normalisation, determinacy, behavioural equivalence and logical equivalence. Temporal and modal logics will also be studied for the specification and analysis of programs. In particular, some emphasis will be posed on modularity and compositionality, in the sense of guaranteeing some property of the whole by proving simpler properties of its parts.
There are no prerequisites, but the students are expected to have some familiarity with discrete mathematics, first-order logic, context-free grammars, and code fragments in imperative and functional style.
Main text:
Other readings:
External resources:
Normally, the evaluation would have been based on written and oral exams.
Due to the covid-19 countermeasures, for the current period, the evaluation will be solely based on oral exams.
Registration to exams (mandatory): Exams registration system
During the oral exam the student must demonstrate
Date | Time | Name | Place | |
---|---|---|---|---|
weekday | DD/MM | HH:MM | Student Name | Microsoft Teams |
Virtual classroom: To join a lecture enter the course team on Microsoft Teams, go to the Lectures channel and click on the scheduled lecture.
N | Date | Time | Room | Lecture notes | Links | |
---|---|---|---|---|---|---|
1 | Mon | 15/02 | 16:00-18:00 | Teams | 01 - Introduction to the course | Lecture 01 |
2 | Wed | 17/02 | 14:00-16:00 | Teams | 02 - Preliminaries: from syntax to semantics, the role of formal semantics, SOS approach, small-step operational semantics, big-step operational semantics | Lecture 02 |
3 | Fri | 21/02 | 14:00-16:00 | Teams | 02 - Preliminaries (ctd.): denotational semantics, compositionality principle, normalisation, determinacy, consistency, equivalence, congruence, signatures 03 - Unification: inference process, signatures, substitutions,unification problem, unification algorithm | Lecture 03 |
4 | Mon | 22/02 | 16:00-18:00 | Teams | 04 - Logical systems: logical systems, derivations, logic programs, goal-oriented derivations | Lecture 04 |
5 | Wed | 24/02 | 14:00-16:00 | Teams | 05 - Induction: precedence relation, infinite descending chains, well-founded relations, well-founded induction, mathematical induction, proof of induction principle, structural induction, termination of arithmetic expressions, determinacy of arithmetic expressions | Lecture 05a |
6 | Fri | 26/02 | 14:00-16:00 | Teams | 05 - Induction: termination of arithmetic expressions Exercises: unification, goal-oriented derivations | Exercises 01 |
7 | Mon | 01/03 | 16:00-18:00 | Teams | 05 - Induction: determinacy of arithmetic expressions, structural induction over many-sorted signatures, termination of boolean expressions, memories, update operation, operational semantics of commands, divergence | Lecture 05b |
8 | Wed | 03/03 | 14:00-16:00 | Teams | 05 - Induction: rule for divergence, limits of structural induction, induction on derivations, rule induction, determinacy of commands | Lecture 05c |
9 | Fri | 05/03 | 14:00-16:00 | Teams | Exercises: induction, termination, determinacy, divergence 06 - Equivalence: operational equivalence, concrete equivalences, parametric equivalences, equivalence and divergence | Exercises 02 Lecture 06 |
10 | Mon | 08/03 | 16:00-18:00 | Teams | 07 - Induction and recursion: well-founded recursion, denotational semantics of arithmetic expressions, consistency of operational and denotational semantics for arithmetic expressions, lexicographic precedence relation, Ackermann function, fixpoint equations | Lecture 07 |
11 | Wed | 10/03 | 14:00-16:00 | Teams | Exercises: x++, arithmetic expressions with side-effects 08 - Partial orders and fixpoints: partial orders, Hasse diagrams, chains, least element, minimal element, bottom element, upper bounds, least upper bound, chains, limits, complete partial orders, powerset completeness | Lecture 08a |
12 | Fri | 12/03 | 14:00-16:00 | Teams | 08 - Partial orders and fixpoints: prefix independence, CPO of partial functions, monotonicity, continuity, Kleene's fixpoint theorem | Lecture 08b |
13 | Mon | 15/03 | 16:00-18:00 | Teams | 08 - Partial orders and fixpoints: recursive definitions of partial functions as logical systems, immediate consequences operator, set of theorems as fixpoint 09 - Denotational semantics: lambda-notation, free variables, capture-avoiding substitutions, alpha-conversion, beta rule, conditionals | Lecture 08c Lecture 09 |
14 | Wed | 17/03 | 14:00-16:00 | Teams | 09 - Denotational semantics: denotational semantics of commands, fixpoint computation 10 - Consistency: denotational equivalence, congruence, compositionality principle, consistency of commands, correctness, completeness Exercises: well-founded recursion, posets, semantics | Lecture 10 Exercises 03 |
15 | Fri | 19/03 | 14:00-16:00 | Teams | 10 - Consistency: completeness Exercises: well-founded recursion, rule induction 11 - Haskell: an overview | Lecture 11 |
16 | Mon | 22/03 | 16:00-18:00 | Teams | Haskell ghci: basics, lambda, tuples, lists, list comprehension, guards, pattern matching, partial application, recursive definitions, zip, exercises ghci session 01 | Haskell |
17 | Wed | 24/03 | 14:00-16:00 | Teams | Haskell ghci: costrutto let-in, costrutto where, map, filter, fixpoint operator, exercises ghci session 02 | Haskell |
18 | Fri | 26/03 | 14:00-16:00 | Teams | Haskell ghci: tail recursion, folds, application, function composition, data types, type classes, recursive data structures, derived instances, exercises ghci session 03 | Haskell |
19 | Mon | 29/03 | 16:00-18:00 | Teams | Exercises: Haskell 12 - HOFL: syntax, type system, type checking | Lecture 12a |
20 | Wed | 31/03 | 14:00-16:00 | Teams | 12 - HOFL: type inference, principal type, canonical forms, operational semantics, lazy vs eager evaluation | Lecture 12b |
N | Date | Time | Room | Lecture notes | Links | |
---|---|---|---|---|---|---|
21 | Wed | 07/04 | 14:00-16:00 | Teams | 13 - Domain theory: Integers with bottom, cartesian product, projections, switching lemma, functional domains | Lecture 13a Lecture 13b |
22 | Fri | 09/04 | 14:00-16:00 | Teams | 13 - Domain theory: functional domains, lifting, continuity theorems, apply, fix, let notation | Lecture 13c |
23 | Mon | 12/04 | 16:00-18:00 | Teams | 14 - Denotational semantics of HOFL: definition and examples, type consistency, substitution lemma, compositionality and other properties | |
24 | Wed | 14/04 | 14:00-16:00 | Teams | 15 - Consistency of HOFL: Counterexample to completeness, correctness of the operational semantics, operational convergence, denotational convergence, operational convergence implies denotational convergence (and vice versa), operational and denotational equivalence, correspondence for type int, unlifted semantics Exercises: HOFL, domains | |
25 | Fri | 16/04 | 14:00-16:00 | Teams | Erlang: an overview erl session | Erlang |
26 | … | … | … | Teams | CCS: Syntax, operational semantics, finitely branching processes, guarded processes, value passing, abstract semantics, graph isomorphism | |
27 | … | … | … | Teams | CCS: trace equivalence, bisimulation game, strong bisimulation, strong bisimilarity, strong bisimilarity is an equivalence, strong bisimilarity as a fixpoint | |
28 | … | … | … | Teams | CCS: strong bisimilarity as a fixpoint, Knaster-Tarski's fixpoint theorem, strong bisimilarity is a congruence, some laws for strong bisimilarity, Hennessy-Milner logic | |
29 | … | … | … | Teams | CCS: weak bisimulation, weak bisimilarity, weak observational congruence, Milner's tau-laws, modelling with CCS | |
30 | … | … | … | Teams | CCS: modelling and playing with CCS (using CAAL) CAAL session (copy the text and paste it in the Edit panel) | CAAL |
31 | … | … | … | Teams | Exercises: Erlang, CCS Temporal and modal logics: linear temporal logic (LTL) | |
32 | … | … | … | Teams | Temporal and modal logics: computational tree logic (CTL* and CTL), mu-calculus | |
33 | … | … | … | Teams | GoogleGo: an overview go-session | Google Go |
34 | … | … | … | Teams | Pi-calculus: syntax and operational semantics, examples | |
35 | … | … | … | Teams | Exercises: logics, GoogleGo, pi-calculus Pi-calculus: early and late bisimilarities, weak bisimilarities | |
36 | … | … | … | Teams | Measure theory and Markov chains: probability space, random variables, stochastic processes, homogeneous Markov chains, DTMC, DTMC as matrices, DTMC as PTS, next state probability, finite path probability, ergodic DTMC, steady state distribution, negative exponential distribution | |
37 | … | … | … | Teams | Measure theory and Markov chains: CTMC, embedded DTMC, infinitesimal generator matrix, CTMC stationary distribution, bisimilarity revisited, reachability predicate, CTMC bisimilarity, DTMC bisimilarity Markov chains with actions: reactive systems, bisimilarity for reactive systems, Larsen-Skou logic PEPA: motivation, basic ideas, PEPA workflow | |
38 | … | … | … | Teams | PEPA: PEPA syntax, apparent rate, PEPA operational semantics, performance analysis Exercises: probabilistic systems | PEPA |
End | ||||||
- | … | … | … | Teams | Oral Exam Exams registration system | |
- | … | … | … | Teams | Oral Exam Exams registration system | |
- | … | … | … | Teams | Oral Exam Exams registration system | |
- | … | … | … | Teams | Oral Exam Exams registration system | |
- | … | … | … | Teams | Oral Exam Exams registration system | |
- | … | … | … | Teams | Oral Exam Exams registration system |