{'fraction_non_alphanumeric': 0.01641025641025641, 'fraction_numerical': 0.0, 'mean_word_length': 5.0246913580246915, '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}}
An ASM-based Approach to Modeling Memory Models

The main goal of this paper is to provide a general framework for modeling memory models of multithreaded Java-like programming languages and discuss its interpretation in the ASM context. The framework is organized in such way that we can clearly stipulate how the memory model conditions the behavior of the environment. It is shown how each thread in a multithreaded Java-like program can be seen as an ordinary interactive small-step algorithm, and, consequently, how such Java-like program gives rise to a distributed ordinary interactive small-step ASM. We also propose a general definition of a particular kind of distributed ordinary interactive small-step ASMs and the a notion of a distributed run. Depending on the conditions on the environment imposed by the memory model, runs of such distributed ASMs may exhibit behavior that is impossible to be observed under commonly assumed sequentially consistent settings.