{'fraction_non_alphanumeric': 0.02328159645232816, 'fraction_numerical': 0.0, 'mean_word_length': 5.840909090909091, '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}}
Formal specification of design patterns' relationships

Patterns are effective means of disseminating solutions to problems repeatedly encountered during object-oriented design. Patterns are mostly described using informal means (text and graphical notations), which lack well-defined semantics. As many new patterns are being introduced, it is becoming increasingly difficult to "informally" decide whether a given pattern is similar, part of, or a variant of another pattern. This paper describes Balanced Pattern Specification Language (BPSL), a formal specification language that can accurately describe patterns in order to allow rigorous reasoning about them and their relationships. This is an important milestone towards fully automated pattern repository management. As a case study, we formally resolve the relationship between two patterns proposed by GoF namely Multicast and Typed Message.