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:
[bull ] A number of useful contextual equivalences between linPCF programs is given.
[bull ] A notion of type isomorphism with respect to contextual equivalence, called operational
isomorphism, is given. In particular the types !ϕ[otimes ]!ψ and !(ϕ&ψ) are proved to be
[bull ] A translation of non-strict PCF into linPCF is shown to be adequate, but not fully abstract,
with respect to contextual equivalence.