Idris Workshop with Edwin Brady

Details

Update: On Thursday from 6.30 to 7.30 pm we will be helping with installation in Workday, drop by !!

Read this: http://www.idris-lang.org/documentation/workshops/kats-workshop-may-2016/

Idris is a general purpose functional programming language with full dependent types, building on state-of-the-art techniques in programming language research. Dependent types allow types to be predicated on any value - in this way, required properties of a program can be captured in the type system, and verified by a type checker. This includes functional properties (i.e. does the program give the correct answer) and extra-functional properties (i.e. does the program run within specified resource constraints).

Idris aims to bring type-based program verification techniques to programming practitioners while supporting efficient systems programming via an optimising compiler and interaction with external libraries.

In this workshop, Edwin will use a series of examples to show how dependent types may be used for verifying realistic and important properties of software, from simple properties such as array bounds verification, to more complex properties of communicating and distributed systems.

The main objective of the workshop is to give an overview of what is expressible in modern, state-of-the-art, type systems, and to give participants some introductory experience with the Idris programming language. It will be interactive, and participants will get hands-on experience with Idris.

Edwin will explain why software correctness, particularly extra-functional correctness, is important, and show how Idris' dependent type system can support this. It will cover:

• Getting started: compiling and running programs

• Simple functional properties of lists

• Extra-functional properties including side-effects and resource usage protocols

• A concluding example: using the type system to reason about communicating systems

By the end of the workshop, participants will understand how to express invariants in a dependent type system, how to write programs which respect those invariants, and how to use embedded domain specific languages as an abstraction layer over those invariants to reduce or even eliminate the verification burden on application developers. Code for the examples will be made available, along with accompanying exercises.

Thanks to Workday for Sponsoring this event.