TY - GEN

T1 - The elimination of nesting in SPCF

AU - Laird, J.

PY - 2005

Y1 - 2005

N2 - We use a fully abstract denotational model to show that nested function calls and recursive definitions can be eliminated from SPCF (a typed functional language with simple non-local control operators) without losing expressiveness. We describe -via simple typing rules - an affine fragment of SPCF in which function nesting and recursion (other than iteration) are not permitted. We prove that this affine fragment is fully expressive in the sense that every term of SPCF is observationally equivalent to an affine term. Our proof is based on the observation of Longley - already used to prove universality and full abstraction results for models of SPCF that every type of SPCF is a retract of a first-order type. We describe retractions of this kind which are definable in the affine fragment. This allows us to transform an arbitrary SPCF term into an affine one by mapping it to a first-order term, obtaining an (affine) normal form, and then projecting back to the original type. In the case of finitary SPCF, the retraction is based on a simple induction, which yields bounds for the size of the resulting term. In the infinitary case, it is based on an analysis of the relationship between SPCF definable functions and strategies for computing them sequentially.

AB - We use a fully abstract denotational model to show that nested function calls and recursive definitions can be eliminated from SPCF (a typed functional language with simple non-local control operators) without losing expressiveness. We describe -via simple typing rules - an affine fragment of SPCF in which function nesting and recursion (other than iteration) are not permitted. We prove that this affine fragment is fully expressive in the sense that every term of SPCF is observationally equivalent to an affine term. Our proof is based on the observation of Longley - already used to prove universality and full abstraction results for models of SPCF that every type of SPCF is a retract of a first-order type. We describe retractions of this kind which are definable in the affine fragment. This allows us to transform an arbitrary SPCF term into an affine one by mapping it to a first-order term, obtaining an (affine) normal form, and then projecting back to the original type. In the case of finitary SPCF, the retraction is based on a simple induction, which yields bounds for the size of the resulting term. In the infinitary case, it is based on an analysis of the relationship between SPCF definable functions and strategies for computing them sequentially.

UR - http://www.scopus.com/inward/record.url?scp=24944444236&partnerID=8YFLogxK

UR - http://dx.doi.org/10.1007/11417170_18

U2 - 10.1007/11417170_18

DO - 10.1007/11417170_18

M3 - Chapter in a published conference proceeding

AN - SCOPUS:24944444236

SN - 9783540255932

T3 - Lecture Notes in Computer Science

SP - 234

EP - 245

BT - Typed Lambda Calculi and Applications

A2 - Urzyczyn, P.

PB - Springer Verlag

CY - Berlin, Germany

T2 - 7th International Conference on Typed Lambda Calculi and Applications, TLCA 2005

Y2 - 20 April 2005 through 22 April 2005

ER -