MAP-I Programa Doutoral em Informática. Rigorous Software Development



Similar documents
How To Write A Program Verification And Programming Book

Rigorous Software Development CSCI-GA

Formal Verification of Software

Parametric Domain-theoretic models of Linear Abadi & Plotkin Logic

Functional Programming. Functional Programming Languages. Chapter 14. Introduction

Summary Last Lecture. Automated Reasoning. Outline of the Lecture. Definition sequent calculus. Theorem (Normalisation and Strong Normalisation)

PROGRAM LOGICS FOR CERTIFIED COMPILERS

Rigorous Software Engineering Hoare Logic and Design by Contracts

A Framework for the Semantics of Behavioral Contracts

Introducing Formal Methods. Software Engineering and Formal Methods

ML for the Working Programmer

Automated Theorem Proving - summary of lecture 1

CHAPTER 7 GENERAL PROOF SYSTEMS

Software Engineering Transfer Degree

From Program Verification to Certified Binaries

CS Master Level Courses and Areas COURSE DESCRIPTIONS. CSCI 521 Real-Time Systems. CSCI 522 High Performance Computing

Structure of Presentation. The Role of Programming in Informatics Curricula. Concepts of Informatics 2. Concepts of Informatics 1

Regular Languages and Finite Automata

Structure of Presentation. Stages in Teaching Formal Methods. Motivation (1) Motivation (2) The Scope of Formal Methods (1)

Extraction of certified programs with effects from proofs with monadic types in Coq

Research Topics in Software Engineering

Constructing Contracts: Making Discrete Mathematics Relevant to Beginning Programmers

TECH. Requirements. Why are requirements important? The Requirements Process REQUIREMENTS ELICITATION AND ANALYSIS. Requirements vs.

Semantics and Verification of Software

Verification of Imperative Programs in Theorema

Specification and Analysis of Contracts Lecture 1 Introduction

Degrees that are not degrees of categoricity

Correspondence analysis for strong three-valued logic

Lecture 13 of 41. More Propositional and Predicate Logic

FACULTY OF COMPUTER SCIENCE AND INFORMATION TECHNOLOGY AUTUMN 2016 BACHELOR COURSES

How To Know If A Domain Is Unique In An Octempo (Euclidean) Or Not (Ecl)

Chapter ML:IV. IV. Statistical Learning. Probability Basics Bayes Classification Maximum a-posteriori Hypotheses

POLYTYPIC PROGRAMMING OR: Programming Language Theory is Helpful

Runtime Verification of Computer Programs and its Application in Programming Education

Theory of Automated Reasoning An Introduction. Antti-Juhani Kaijanaho

Computer Science Information Sheet for entry in What is Computer Science?

Foundational Proof Certificates

Formal Verification Coverage: Computing the Coverage Gap between Temporal Specifications

Linear Types for Continuations

Static Program Transformations for Efficient Software Model Checking

Trust but Verify: Authorization for Web Services. The University of Vermont

AURA: A language with authorization and audit

Adversary Modelling 1

We would like to state the following system of natural deduction rules preserving falsity:

CSE 459/598: Logic for Computer Scientists (Spring 2012)

Non-deterministic Semantics and the Undecidability of Boolean BI

Rigorous Software Development An introduction

The countdown problem

Revised Version of Chapter 23. We learned long ago how to solve linear congruences. ax c (mod m)

Learning outcomes. Knowledge and understanding. Competence and skills

From Logic to Montague Grammar: Some Formal and Conceptual Foundations of Semantic Theory

Biinterpretability up to double jump in the degrees

A New Generic Digital Signature Algorithm

Overview Motivating Examples Interleaving Model Semantics of Correctness Testing, Debugging, and Verification

= = 3 4, Now assume that P (k) is true for some fixed k 2. This means that

Notes on Determinant

Mathematical Reasoning in Software Engineering Education. Peter B. Henderson Butler University

The Lean Theorem Prover

On strong fairness in UNITY

[Refer Slide Time: 05:10]

Section IV.21. The Field of Quotients of an Integral Domain

Bachelor Program in Analytical Finance, 180 credits

Probabilità e Nondeterminismo nella teoria dei domini

Fixed-Point Logics and Computation

Mathematical Induction. Lecture 10-11

So let us begin our quest to find the holy grail of real analysis.

3. Programme accredited by Currently accredited by the BCS. 8. Date of programme specification Students entering in October 2013

Formal Verification and Linear-time Model Checking

ADVANCED SCHOOL OF SYSTEMS AND DATA STUDIES (ASSDAS) PROGRAM: CTech in Computer Science

A Propositional Dynamic Logic for CCS Programs

What's Wrong With Formal Programming Methods? Eric C.R. Hehner

Comparison of Gaps in Mathematics in Engineering Curricula

StaRVOOrS: A Tool for Combined Static and Runtime Verification of Java

The Road from Software Testing to Theorem Proving

CS422 - Programming Language Design

ISU Department of Mathematics. Graduate Examination Policies and Procedures

Master of Arts in Mathematics Education for Grade 5 12 Teachers

Europass Curriculum Vitae

BCS Higher Education Qualifications. Professional Graduate Diploma in IT. Programming Paradigms Syllabus

CS510 Software Engineering

MAP-I Programa Doutoral em Informática. Program Semantics, Verification, and Construction Approaches to Correct Software

Query Processing in Data Integration Systems

Advances in Programming Languages

Applications of formal verification for secure Cloud environments at CEA LIST

Course Syllabus For Operations Management. Management Information Systems

A NOTE ON INITIAL SEGMENTS OF THE ENUMERATION DEGREES

ON FUNCTIONAL SYMBOL-FREE LOGIC PROGRAMS

LCMath PhD Program Lisbon/Carnegie-Mellon in Mathematics

From Workflow Design Patterns to Logical Specifications

Turing Degrees and Definability of the Jump. Theodore A. Slaman. University of California, Berkeley. CJuly, 2005

Introduction to Formal Methods. Các Phương Pháp Hình Thức Cho Phát Triển Phần Mềm

Computing exponents modulo a number: Repeated squaring

Relations: their uses in programming and computational specifications

Modal Proofs as Distributed Programs (Extended Abstract)

Introduction to Automata Theory. Reading: Chapter 1

Research Note. Bi-intuitionistic Boolean Bunched Logic

Acme vs PDDL: support for dynamic reconfiguration of software architectures

On the number of lines of theorems in the formal system MIU

Equality and dependent type theory. Oberwolfach, March 2 (with some later corrections)

Full and Complete Binary Trees

Transcription:

MAP-I Programa Doutoral em Informática Rigorous Software Development Unidade Curricular em Teoria e Fundamentos Theory and Foundations (UCTF) DI-UM, DCC-FCUP May, 2012 Abstract This text presents a UCTF ( Unidade Curricular em Teorias e Fundamentos ) course proposal to the joint PhD programme (Minho, Aveiro, Porto) in Informatics (MAP-I). The team responsible for the proposal consists of lecturers and professors from the Informatics Department of the University of Minho (DI-UM) and the Computer Science Department - Faculty of Science of the University of Porto (DCC- FCUP). LECTURING TEAM DI-UM: DCC-FCUP: Maria João Frade, José Nuno Oliveira Sandra Alves, Sabine Broda This curricular unit has been offered to previous instances of the MAP-i programme under the name Program Semantics, Verification, and Construction. Its syllabus is the same nothing else changed apart from the title. 1

1 Course Description 1.1 Subject and Context The reliability of computing systems plays an essential role in modern society, where so many areas of human activity depend on technology. The deliverables of software projects may no longer be limited to code; the ability to produce certified code is now crucial. Code may be certified as being functionally correct, or as possessing certain execution properties (for instance, a program may be certified as not trying to access unauthorised resources). The ability to certify software in this way requires a sound knowledge of the theory of programming languages and mathematical reasoning tools, as well as acquaintance with tool-assisted techniques. Once the requirements have been identified, the challenge is to be able to formalise and prove the corresponding properties (functional, security, or safety), choosing from a number of different conceptual tools and different notions of certificate. This course gives an overview of the theory of programming languages at an advanced level (which will help to cancel the heterogeneous backgrounds of students on these subjects) and then goes on to apply the theory to methods for obtaining correct, certified software. The second part of the course, on Program Verification, contains material analogous to what is taught in many standard advanced-level courses on program verification, with the additional coverage of recent results and current research. The third part covers the correct by construction approach, such as followed in courses taught at the universities of Oxford or Nottingham. In this approach certification is an automatic byproduct of the code development process. ACM Computing Classification System subjects covered: /Theory of Computation/MATHEMATICAL LOGIC AND FORMAL LANGUA- GES/Mathematical Logic/ /Theory of Computation/COMPUTATION BY ABSTRACT DEVICES/ /Theory of Computation/LOGICS AND MEANINGS OF PROGRAMS/Semantics of Programming Languages/ /Theory of Computation/LOGICS AND MEANINGS OF PROGRAMS/Specifying and Verifying and Reasoning about Programs/ /Software/SOFTWARE ENGINEERING/Software/Program Verification/ 2

1.2 Objectives This UCTF aims to present in a systematic way a vast set of results in fundamental areas of Theoretical Computer Science, in particular Logic, λ-calculus, Type Theory, and Programming Language Semantics, as well as the relationships between them; to achieve learning outcomes in the rigorous approaches to the production of correct software, namely in Program Verification, the activity that aims to establish that a program effectively behaves according to its specification, or that its behaviour is characterized by a set of given properties; in Mathematical Program Construction, a method for obtaining correct programs from specifications, strongly based on Program Calculation. 1.3 Learning Outcomes To understand the relation between Intuitionistic Logic and Type Theory. To use languages with simple, dependent, polymorphic, or inductive types, for programming, expressing properties, or writing specifications. To understand the use of the operational, denotational, and axiomatic styles of semantics in different contexts. To use proof assistants for conducting formal proofs interactively. To express and prove properties of functional and imperative programs with the help of proof assistants and verification condition generators. To understand current trends in Program Verification techniques and approaches to the certification of program properties. To understand the dichotomy between specification and implementation in software design. To understand that software (implementations) can be calculated by solving systems of equations (specifications) as in other branches of science and engineering. To appreciate the calculational power of the PF-transform and of the underlying allegory of binary relations. 3

1.4 Syllabus Chapter I: Overview of Foundations (18 hours) 1. Propositional and First-order logic 2. Intuitionistic logic 3. Natural deduction 4. First-order theories 5. λ-calculus (terms, reduction, the Church-Rosser Theorem) 6. Simple Types (Church versus Curry typing, normalization, extensions) 7. The Curry-Howard isomorphism 8. Introduction to operational semantics 9. Domain theory (complete partial orders, continuous functions) 10. Denotational semantics Chapter II: Program Verification (18 hours) 1. Dependent Types: First-order dependent types Type equivalence Sum types The calculus of inductive constructions Programming with dependent types 2. Type-based proof assistants Interactive proof development Tactics and tacticals Inductive data types and predicates 3. Program correctness: specification; partial and total correctness 4. Verification of the correctness of functional programs: Extraction of the computational contents of a correctness proof Using programs for structuring correction proofs 5. Axiomatic semantics of imperative programs: Assertions; semantics of assertions Hoare proof rules for correctness 6. Tool support for the specification, verification, and certification of programs: Proof assistants 4

Verification condition generators 7. Survey of alternative approaches to program verification: Abstract machine-based approaches Certifying compilation and proof-carrying code Chapter III: Program Construction (12 hours) 1. Introduction to the mathematics of program construction The specification / implementation dichotomy. Abstract modeling. Correct by verification versus correct by construction. 2. Description versus calculation 3. The Point-free (PF) transform Taxonomy of binary relations; simple relations and their role in abstract modeling Point-free notation and reasoning Rules of the PF-transform Categorical and allegorical foundations 4. Universal properties and Galois connections Universal constructions and properties; natural properties Reynolds relation and the free-theorem of polymorphism Galois connections and their corollaries 5. Reasoning by PF-calculation PF-calculation of the consistency of a formal model: satisfiability and invariance Data-level calculation: representing and abstracting data models. 6. Inductive program calculation Relational hylomorphisms Fixpoint calculus and Galois connections: the fixpoint fusion theorem Calculating recursive solutions for hylo-equations 7. Open issues and hot topics in the mathematics of program construction 5

1.5 Teaching Methods Lectures Occasional tool demonstration / case study sessions 1.6 Student Assessment Examinations Research assignments, which may include a talk given on a suggested paper, or practical assignments 6

2 Lecturing Team The team consists of members of the Department of Informatics of the University of Minho and the Department of Computer Science of the University of Porto (Faculty of Science). All team members are working, and have worked actively in the past few years, on topics that are directly related to the subjects covered by this course, as detailed below. Sandra Alves has worked on λ-calculus and type theory. Her work has been focusing on several aspects of linearity in programming languages, in particular, the use of linearisation in the definition of efficient simulations of functional programming languages. Sabine Broda (DCC-FCUP) has worked on Mathematical Logic, λ-calculus, and Type Theory. Maria J. Frade (DI-UM) has worked on λ-calculus, type systems, and Proof Theory. José N. Oliveira (DI-UM) has worked extensively on Formal Methods in Software Engineering and is in fact a pioneer of this area in Portugal. Recently he has become interested in the calculation-based approach to program construction. 7