Type systems for programs respecting dimensions

  title={Type systems for programs respecting dimensions},
  author={Conor McBride and Fredrik Nordvall-Forsberg},
  journal={Series on Advances in Mathematics for Applied Sciences},
Type systems can be used for tracking dimensional consistency of numerical computations: we present an extension from dimensions of scalar quantities to dimensions of vectors and matrices, making use of dependent types from programming language theory. We show that our types are unique, and most general. We further show that we can give straightforward dimensioned types to many common matrix operations such as addition, multiplication, determinants, traces, and fundamental row operations. 


Experience report: type-checking polymorphic units for astrophysics research in Haskell
This work demonstrates the utility of units by writing an astrophysics research paper, free of unit concerns because every quantity expression in the paper is rigorously type-checked.
Programming languages and dimensions
This thesis investigates the extension of programming languages to support the notion of physical dimension by presenting a type system similar to that of the programming language ML but extended with polymorphic dimension types.
Towards a practical programming language based on dependent type theory
This thesis is concerned with bridging the gap between the theoretical presentations of type theory and the requirements on a practical programming language.
The next 700 unit of measurement checkers
There is clearly too much diversity, duplicated efforts, and a lack of code sharing and harmonisation which discourages use and adoption of physical quantity open-source libraries.
A typechecker plugin for units of measure: domain-specific constraint solving in GHC Haskell
This paper demonstrates how typechecker plugins in the Glasgow Haskell Compiler allow users to define domain-specific constraint solving behaviour, making it possible to implement units of measure as a type system extension without rebuilding the compiler.
New equations for neutral terms: a sound and complete decision procedure, formalized
A way to decide theories which supplement evaluation with `ν-rules', rearranging the neutral parts of normal forms, and report a successful initial experiment on how to decide a richer theory.
A unit-aware matrix language and its application in control and auditing
The first part of this thesis describes a unit-aware matrix type based on dimensioned linear algebra that infers principle types for linear algebra expressions that is used to constructunit-aware value cycle models from the field of control and auditing.
Boost C++ Libraries
This chapter discusses the Boost C++ API, a peer-reviewed C++ class library which implements many interesting and useful data structures and algorithms, and the use of Boost smart pointers, Boost asynchronous IO, and IO Streams.
Computational Logic - Essays in Honor of Alan Robinson
  • A. Robinson
  • Philosophy
    Computational Logic - Essays in Honor of Alan Robinson
  • 1991
This computational logic essays in honor of alan robinson will really give you the good idea to be successful.
Dependent Types at Work, in LerNet ALFA Summer School
  • 2008