{'fraction_non_alphanumeric': 0.014270032930845226, 'fraction_numerical': 0.0, 'mean_word_length': 5.120805369127517, '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}}
Separating Functional Computation from Relations

The logical foundation of arithmetic generally starts with a 
quantificational logic over relations. Of course, one often wishes to have a formal treatment of functions within this setting. Both 
Hilbert and Church added choice operators (such as the epsilon 
operator) to logic in order to coerce relations that happen to encode functions into actual functions. Others have extended the term language with confluent term rewriting in order to encode functional computation as rewriting to a normal form. We take a different approach that does not extend the underlying logic with either choice principles or with an equality theory. Instead, we use the familiar two-phase construction of focused proofs and capture functional computation entirely within one of these phases. As a result, our logic remains purely relational even when it is computing functions.