Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
We develop a general method of proving properties of programs
\emph{under arbitrary contexts}---including (but not limited to)
observational equivalence, space improvement, and a form of memory
safety of the programs---in untyped call-by-value $\lambda$-calculus
with first-class, dynamically allocated, higher-order references and
deallocation. The method generalizes Sumii et al.'s environmental
bisimulation technique, and gives a sound and complete
characterization of each proved property, in the sense that the
``bisimilarity'' (the largest set satisfying the bisimulation-like
conditions) equals the set of terms with the property to be proved.
We give examples of contextual properties concerning typical data
structures such as linked lists, binary search trees, and directed
acyclic graphs with reference counts, all with deletion operations
that release memory. This shows the scalability of the environmental
approach from contextual equivalence to other binary relations (such
as space improvement) and unary predicates (such as memory safety), as
well as to languages with non-monotone store.