Ranking and Unranking of Hereditarily Finite Functions and Permutations (0808.0554v1)
Abstract: Prolog's ability to return multiple answers on backtracking provides an elegant mechanism to derive reversible encodings of combinatorial objects as Natural Numbers i.e. {\em ranking} and {\em unranking} functions. Starting from a generalization of Ackerman's encoding of Hereditarily Finite Sets with Urelements and a novel tupling/untupling operation, we derive encodings for Finite Functions and use them as building blocks for an executable theory of {\em Hereditarily Finite Functions}. The more difficult problem of {\em ranking} and {\em unranking} {\em Hereditarily Finite Permutations} is then tackled using Lehmer codes and factoradics. The paper is organized as a self-contained literate Prolog program available at \url{http://logic.csci.unt.edu/tarau/research/2008/pHFF.zip}