{'fraction_non_alphanumeric': 0.028153153153153154, 'fraction_numerical': 0.0, 'mean_word_length': 5.39568345323741, '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}}
Intensional Analysis of Higher-Kinded Recursive Types

Recursive types are ubiquitous in modern programming languages, as they occur when typing constructs such as datatype definitions. Any typetheoretic framework must effectively deal with recursive types if it purports to be applicable to real languages such as ML and Haskell. Intensional Type Analysis [] and Certified Binaries [] are two such type-theoretic frameworks. Previous work in these areas, however, has not adequately supported recursive types. In this paper we present a new formulation of recursive types which subsumes the traditional one. We show that intensional analysis over these types (including higher-kinded recursive types) can be supported via inductive elimination. Our solution is simple, general, and extensible; the typing rules for higher-kinded recursive types are concise and very easy to understand.