{'fraction_non_alphanumeric': 0.013657056145675266, 'fraction_numerical': 0.0, 'mean_word_length': 4.945945945945946, '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}}
Ownership, Pointer Arithmetic and Memory Separation

Ownership systems provide a way to reason about data structures in a hierarchical fashion. We propose a small but extensible language featuring an ownership system and data invariants. It is then extended with pointer arithmetic, showing how to specify array invariants. We show how to express the global properties of the ownership system in the logic. This method can be used with a memory model featuring memory separation, and provides a practical way to use invariants in deductive verification of programs. We implemented the proposed system in the Why platform and applied it to C and Java programs.