Free Theorems Simply, via Dinaturality [article]

Janis Voigtländer
<span title="2019-08-21">2019</span> <i > arXiv </i> &nbsp; <span class="release-stage" >pre-print</span>
Free theorems are a popular tool in reasoning about parametrically polymorphic code. They are also of instructive use in teaching. Their derivation, though, can be tedious, as it involves unfolding a lot of definitions, then hoping to be able to simplify the resulting logical formula to something nice and short. Even in a mechanised generator it is not easy to get the right heuristics in place to achieve good outcomes. Dinaturality is a categorical abstraction that captures many instances of
more &raquo; ... e theorems. Arguably, its origins are more conceptually involved to explain, though, and generating useful statements from it also has its pitfalls. We present a simple approach for obtaining dinaturality-related free theorems from the standard formulation of relational parametricity in a rather direct way. It is conceptually appealing and easy to control and implement, as the provided Haskell code shows.
<span class="external-identifiers"> <a target="_blank" rel="external noopener" href="https://arxiv.org/abs/1908.07776v1">arXiv:1908.07776v1</a> <a target="_blank" rel="external noopener" href="https://fatcat.wiki/release/znjtga5pw5hgtn5tgtsq7spg3a">fatcat:znjtga5pw5hgtn5tgtsq7spg3a</a> </span>
<a target="_blank" rel="noopener" href="https://web.archive.org/web/20200930052939/https://arxiv.org/pdf/1908.07776v1.pdf" title="fulltext PDF download" data-goatcounter-click="serp-fulltext" data-goatcounter-title="serp-fulltext"> <button class="ui simple right pointing dropdown compact black labeled icon button serp-button"> <i class="icon ia-icon"></i> Web Archive [PDF] <div class="menu fulltext-thumbnail"> <img src="https://blobs.fatcat.wiki/thumbnail/pdf/a3/11/a311b3d656c1a3b870cbcb04d0dd9490d203fd3c.180px.jpg" alt="fulltext thumbnail" loading="lazy"> </div> </button> </a> <a target="_blank" rel="external noopener" href="https://arxiv.org/abs/1908.07776v1" title="arxiv.org access"> <button class="ui compact blue labeled icon button serp-button"> <i class="file alternate outline icon"></i> arxiv.org </button> </a>