Program equivalence in a linear functional language
Researchers have recently proposed that for certain applications it is advantageous to use functional languages whose type systems are based upon linear logic: so-called linear functional languages. In this paper we develop reasoning techniques for programs in a linear functional language, linPCF, based on their operational behaviour. The principal theorem of this paper is to show that contextual equivalence of linPCF programs can be characterised coinductively. This characterisation provides a tractable method for reasoning about contextual equivalence, and is used in three ways:
• A number of useful contextual equivalences between linPCF programs is given.
• A notion of type isomorphism with respect to contextual equivalence, called operational isomorphism, is given. In particular the types !φ[otimes B: multiply sign in circle]!ψ and !(φ&ψ) are proved to be operationally isomorphic.
• A translation of non-strict PCF into linPCF is shown to be adequate, but not fully abstract, with respect to contextual equivalence.