{'fraction_non_alphanumeric': 0.024342745861733205, 'fraction_numerical': 0.0038948393378773127, 'mean_word_length': 4.973837209302325, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
The polymorphic Pi-calculus : theory and implementation

We investigate whether the 7r-calculus is able to serve as a good foundation for the design and implementation of a strongly-typed concurrent programming language. The first half of the dissertation examines whether the 7r-calculus supports a simple type system which is flexible enough to provide a suitable foundation for the type system of a concurrent programming language. The second half of the dissertation considers how to implement the ir-calculus efficiently, starting with an abstract machine for ir-calculus and finally presenting a compilation of 7r-calculus to C. We start the dissertation by presenting a simple, structural type system for 7r-calculus, and then, after proving the soundness of our type system, show how to infer principal types for r-terms. This simple type system can be extended to include useful type-theoretic constructions such as recursive types and higherorder polymorphism. Higher-order polymorphism is important, since it gives us the ability to implement abstract datatypes in a type-safe manner, thereby providing a greater degree of modularity for 7r-calculus programs. The functional computational paradigm plays an important part in many programming languages. It is well-known that the ir-calculus can encode functional computation. We go further and show that the type structure of )-terms is preserved by such encodings, in the sense that we can relate the type of a )-term to the type of its encoding in the 7r-calculus. This means that a ir-calculus programming language can genuinely support typed functional programming as a special case. An efficient implementation of 7r-calculus is necessary if we wish to consider rcalculus as an operational foundation for concurrent programming. We first give a simple abstract machine for ir-calculus and prove it correct. We then show how this abstract machine inspires a simple, but efficient, compilation of 7r-calculus to C (which now forms the basis of the Pict programming language implementation).