Book contents
- Frontmatter
- Contents
- List of contributors
- Preface
- 1 Determinacy in a synchronous π-calculus
- 2 Classical coordination mechanisms in the chemical model
- 3 Sequential algorithms as bistable maps
- 4 The semantics of dataflow with firing
- 5 Kahn networks at the dawn of functional programming
- 6 A simple type-theoretic language: Mini-TT
- 7 Program semantics and infinite regular terms
- 8 Algorithms for equivalence and reduction to minimal form for a class of simple recursive equations
- 9 Generalized finite developments
- 10 Semantics of program representation graphs
- 11 From Centaur to the Meta-Environment: a tribute to a great meta-technologist
- 12 Towards a theory of document structure
- 13 Grammars as software libraries
- 14 The Leordo computation system
- 15 Theorem-proving support in programming language semantics
- 16 Nominal verification of algorithm W
- 17 A constructive denotational semantics for Kahn networks in Coq
- 18 Asclepios: a research project team at INRIA for the analysis and simulation of biomedical images
- 19 Proxy caching in split TCP: dynamics, stability and tail asymptotics
- 20 Two-by-two static, evolutionary, and dynamic games
- 21 Reversal strategies for adjoint algorithms
- 22 Reflections on INRIA and the role of Gilles Kahn
- 23 Can a systems biologist fix a Tamagotchi?
- 24 Computational science: a new frontier for computing
- 25 The descendants of Centaur: a personal view on Gilles Kahn's work
- 26 The tower of informatic models
6 - A simple type-theoretic language: Mini-TT
Published online by Cambridge University Press: 06 August 2010
- Frontmatter
- Contents
- List of contributors
- Preface
- 1 Determinacy in a synchronous π-calculus
- 2 Classical coordination mechanisms in the chemical model
- 3 Sequential algorithms as bistable maps
- 4 The semantics of dataflow with firing
- 5 Kahn networks at the dawn of functional programming
- 6 A simple type-theoretic language: Mini-TT
- 7 Program semantics and infinite regular terms
- 8 Algorithms for equivalence and reduction to minimal form for a class of simple recursive equations
- 9 Generalized finite developments
- 10 Semantics of program representation graphs
- 11 From Centaur to the Meta-Environment: a tribute to a great meta-technologist
- 12 Towards a theory of document structure
- 13 Grammars as software libraries
- 14 The Leordo computation system
- 15 Theorem-proving support in programming language semantics
- 16 Nominal verification of algorithm W
- 17 A constructive denotational semantics for Kahn networks in Coq
- 18 Asclepios: a research project team at INRIA for the analysis and simulation of biomedical images
- 19 Proxy caching in split TCP: dynamics, stability and tail asymptotics
- 20 Two-by-two static, evolutionary, and dynamic games
- 21 Reversal strategies for adjoint algorithms
- 22 Reflections on INRIA and the role of Gilles Kahn
- 23 Can a systems biologist fix a Tamagotchi?
- 24 Computational science: a new frontier for computing
- 25 The descendants of Centaur: a personal view on Gilles Kahn's work
- 26 The tower of informatic models
Summary
Abstract
This paper presents a formal description of a small functional language with dependent types. The language contains data types, mutual recursive/inductive definitions and a universe of small types. The syntax, semantics and type system is specified in such a way that the implementation of a parser, interpreter and type checker is straight-forward. The main difficulty is to design the conversion algorithm in such a way that it works for open expressions. The paper ends with a complete implementation in Haskell (around 400 lines of code).
Introduction
We are going to describe a small language with dependent types, its syntax, operational semantics and type system. This is in the spirit of the paper “A simple applicative language: Mini-ML” by Clément, Despeyroux, and Kahn, where they explain a small functional language. From them we have borrowed the idea of using patterns instead of variables in abstractions and let-bindings. It gives an elegant way to express mutually recursive definitions. We also share with them the view that a programming language should not only be formally specified, but it should also be possible to reason about the correctness of its implementation. There should be a small step from the formal operational semantics to an interpreter and also between the specification of the type system to a type checker.
- Type
- Chapter
- Information
- From Semantics to Computer ScienceEssays in Honour of Gilles Kahn, pp. 139 - 164Publisher: Cambridge University PressPrint publication year: 2009
- 1
- Cited by