English

A Logical Programming Language as an Instrument for Specifying and Verifying Dynamic Memory

Logic in Computer Science 2021-04-06 v1 Formal Languages and Automata Theory Programming Languages Symbolic Computation Software Engineering

Abstract

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.

Keywords

Cite

@article{arxiv.2104.01667,
  title  = {A Logical Programming Language as an Instrument for Specifying and Verifying Dynamic Memory},
  author = {René Haberland},
  journal= {arXiv preprint arXiv:2104.01667},
  year   = {2021}
}

Comments

209 pages, 97 figures, 6 appendices

R2 v1 2026-06-24T00:50:32.748Z