## Section: New Results

### Free Theorems for Curry

Participant : Lutz Straßburger.

Free theorems [79] are a means of type-based reasoning and are being successfully applied for typed functional programming languages like Haskell, e.g., for program transformation and generally establishing semantic properties [53] , [78] . As a simple example, for every polymorphic function $f::\left[\alpha \right]\to \left[\alpha \right]$ from lists to lists, arbitrary types ${\tau}_{1}$ and ${\tau}_{2}$, and a function $g::{\tau}_{1}\to {\tau}_{2}$, we have $f\circ \left(\mathrm{\U0001d5c6\U0001d5ba\U0001d5c9}\phantom{\rule{3.33333pt}{0ex}}g\right)=\left(\mathrm{\U0001d5c6\U0001d5ba\U0001d5c9}\phantom{\rule{3.33333pt}{0ex}}g\right)\circ f$, for the standard function $\mathrm{\U0001d5c6\U0001d5ba\U0001d5c9}::(\alpha \to \beta )\to \left[\alpha \right]\to \left[\beta \right]$ which takes a function and a list and applies that function to every entry of the list. It would be of interest to also have such free theorems available for typed functional-logic languages like Curry.

Previous work [48] has investigated free theorems for such a language, Curry [60] , phenomenologically and provides intuition for premises of free theorems as well as counterexamples. Proof of the positive claims has been elusive so far, mainly because Curry's type system fails to reflect the key feature: nondeterminism. This avoidance is convenient for programmers, as they do not have to distinguish between deterministic and nondeterministic values. However, it is a hindrance to formal reasoning: the conditions identified in [48] include a notion of determinism, and hence it is a serious weakness of the type system not to capture this.

In a joint work with colleagues at the University of Bonn, published
in [25] , we have developed an intermediate language, called SaLT, that
allowed us to prove a *Parametricity Theorem* which could be used
to derive free theorems for Curry.

This work is the result of the PHC Procope collaboration with the University of Bonn (duration 2012-2013).