{'fraction_non_alphanumeric': 0.025684931506849314, 'fraction_numerical': 0.0059931506849315065, 'mean_word_length': 5.423076923076923, '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}}
MOOSE: A Minimal Object Oriented Language with Session Types

In recent years concurrency and interaction have emerged as a theme of paramount importance, because they address the needs of distributed systems which have now become pervasive. Perhaps the most studied and acknowledged formalism in that field is the π-calculus [22], from which the concept of session types [16] has evolved. Session types enable us to define and statically typecheck communication protocols, specified as sequences of typed channel actions that constitute a larger interaction, which is called a session. Another important theme is that of structuring software effectively, with the object-oriented paradigm [1, 10] being the most widely accepted nowadays. Indeed, object orientation offers several advantages such as increased encapsulation, and flexibility in adaptation and reuse. In this report, we combine the above into a small calculus for a concurrent object-oriented language with session types. We present examples and patterns that become possible with our language, and then formalise the syntax, operational semantics and typing system. Finally, we prove subject reduction.