2 research outputs found
A Non-repetitive Logic for Verification of Dynamic Memory with Explicit Heap Conjunction and Disjunction
In this paper, we review existing points-to Separation Logics for dynamic
memory reasoning and we find that different usages of heap separation tend to
be an obstacle. Hence, two total and strict spatial heap operations are
proposed upon heap graphs, for conjunction and disjunction -- similar to
logical conjuncts. Heap conjunction implies that there exists a free heap
vertex to connect to or an explicit destination vertex is provided.
Essentially, Burstall's properties do not change. By heap we refer to an
arbitrary simple directed graph, which is finite and may contain composite
vertices representing class objects. Arbitrary heap memory access is
restricted, as well as type punning, late class binding and further
restrictions. Properties of the new logic are investigated, and as a result
group properties are shown. Both expecting and superficial heaps are
specifiable. Equivalence transformations may make denotated heaps inconsistent,
although those may be detected and patched by the two generic linear
canonization steps presented. The properties help to motivate a later full
introduction of a set of equivalences over heap for future work. Partial heaps
are considered as a useful specification technique that help to reduce
incompleteness issues with specifications. Finally, the logic proposed may be
considered for extension for the Object Constraint Language.Comment: 9 pages, 7 figure
A Logical Programming Language as an Instrument for Specifying and Verifying Dynamic Memory
This work proposes a Prolog-dialect for the found and prioritised problems on
expressibility and automation. Given some given C-like program, if dynamic
memory is allocated, altered and freed on runtime, then a description of
desired dynamic memory is a heap specification. The check of calculated memory
state against a given specification is dynamic memory verification. This
contribution only considers formal specification and verification in a Hoare
calculus. Issues found include: invalid assignment, (temporary) unavailable
data in memory cells, excessive memory allocation, (accidental) heap alteration
in unexpected regions and others. Excessive memory allocation is nowadays
successfully resolved by memory analysers like Valgrind. Essentially, papers in
those areas did not bring any big breakthrough. Possible reasons may also
include the decrease of tension due to more available memory and parallel
threads. However, starting with Apt, problems related to variable modes have
not yet been resolved -- neither entirely nor in an acceptable way. Research
contributions over the last decades show again and again that heap issues
remain and remain complex and still important. A significant contribution was
reached in 2016 by Peter O'Hearn, who accepted the G\"{o}del prize for his
parallel approach on a spatial heap operation.Comment: 209 pages, 97 figures, 6 appendice