  Data minimisation is a privacy-enhancing principle considered as one of the
pillars of personal data regulations. This principle dictates that personal
data collected should be no more than necessary for the specific purpose
consented by the user. In this paper we study data minimisation from a
programming language perspective. We assume that a given program embodies the
purpose of data collection, and define a data minimiser as a pre-processor for
the input which reduces the amount of information available to the program
without compromising its functionality. In this context we study formal
definitions of data minimisation, present different mechanisms and
architectures to ensure data minimisation, and provide a procedure to
synthesise a correct data minimiser for a given program.
