Mathematical Logic (Functional Interpretations)
My main area of research is in mathematical logic and proof theory. In particular, I am interested in the computational content of mathematical proofs. What do theorems tell us, apart from the truth they convey? How can proofs be viewed as programs, so as to be executed, and how can programs be viewed as proofs, so that their correctness can be automatically checked? These questions become highly non-trivial when proofs involve classical logic, induction and analytical principles such as countable choice and WKL.
The main technique used is the so-called functional interpretation, whereby formal proofs are inductively associated with functionals of higher type. Examples of functional interpretations include Gödel's Dialectica interpretation and Kreisel's modified realizability. I have recently developed a unifying framework for functional interpretations, which allows for a comparison between several different functional interpretations (see [1], [2] and [3]). This framework has shown to be useful in combining the different interpretations into a hybrid functional interpretation [4], making it possible to combine the features of each interpretation in the analysis of each single proof.
Formal Verification (Hoare Logic)
Recently, I have also been working on the application of formal verification to the domain of continuous systems. More precisely, developing 'Hoare logic' systems in order to prove properties of systems in the continuous time domain [5].
Algorithms and Complexity Theory
My early research career was on the topic of algorithms. That was the time when I was taking part in the ACM ICPC (International Collegiate Programming Challenge). My first paper was is on pattern matching algorithms, jointly written with K. Guimaraes and E. W. Myers [6].