{'fraction_non_alphanumeric': 0.033707865168539325, 'fraction_numerical': 0.0028089887640449437, 'mean_word_length': 5.325443786982248, '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}}
Combining logic systems: Why, how, what for?

The practical significance of the problem of combining logics is widely recognized, namely in knowledge representation (within artificial intelligence) and in formal specification and verification of algorithms and protocols (within software engineering and security). In these fields, the need for working with several calculi at the same time is the rule rather than the exception. For instance, in a knowledge representation problem it may be necessary to work with temporal, spatial, deontic and probabilistic aspects (e.g., for reasoning with mixed assertions like “with probability greater than 0.99, sometime in the future smoking will be forbidden everywhere”). And in a software verification problem it may be necessary to mix equational, epistemic and dynamic logic features. That is, one needs, at least, to be able to develop theories with components in different logic systems, or, even better, to work with theories defined in the combination of those logic systems (where such mixed assertions are allowed).