6 research outputs found
Verifying Temporal Properties of Reactive Systems by Transformation
We show how program transformation techniques can be used for the
verification of both safety and liveness properties of reactive systems. In
particular, we show how the program transformation technique distillation can
be used to transform reactive systems specified in a functional language into a
simplified form that can subsequently be analysed to verify temporal properties
of the systems. Example systems which are intended to model mutual exclusion
are analysed using these techniques with respect to both safety (mutual
exclusion) and liveness (non-starvation), with the errors they contain being
correctly identified.Comment: In Proceedings VPT 2015, arXiv:1512.02215. This work was supported,
in part, by Science Foundation Ireland grant 10/CE/I1855 to Lero - the Irish
Software Engineering Research Centre (www.lero.ie), and by the School of
Computing, Dublin City Universit
Turchin's Relation for Call-by-Name Computations: A Formal Approach
Supercompilation is a program transformation technique that was first
described by V. F. Turchin in the 1970s. In supercompilation, Turchin's
relation as a similarity relation on call-stack configurations is used both for
call-by-value and call-by-name semantics to terminate unfolding of the program
being transformed. In this paper, we give a formal grammar model of
call-by-name stack behaviour. We classify the model in terms of the Chomsky
hierarchy and then formally prove that Turchin's relation can terminate all
computations generated by the model.Comment: In Proceedings VPT 2016, arXiv:1607.0183
Distilling Programs to Prove Termination
The problem of determining whether or not any program terminates was shown to
be undecidable by Turing, but recent advances in the area have allowed this
information to be determined for a large class of programs. The classic method
for deciding whether a program terminates dates back to Turing himself and
involves finding a ranking function that maps a program state to a well-order,
and then proving that the result of this function decreases for every possible
program transition. More recent approaches to proving termination have involved
moving away from the search for a single ranking function and toward a search
for a set of ranking functions; this set is a choice of ranking functions and a
disjunctive termination argument is used. In this paper, we describe a new
technique for determining whether programs terminate. Our technique is applied
to the output of the distillation program transformation that converts programs
into a simplified form called distilled form. Programs in distilled form are
converted into a corresponding labelled transition system and termination can
be demonstrated by showing that all possible infinite traces through this
labelled transition system would result in an infinite descent of well-founded
data values. We demonstrate our technique on a number of examples, and compare
it to previous work.Comment: In Proceedings VPT/HCVS 2020, arXiv:2008.02483. This work owes a lot
to the input of Neil Jones, who provided many useful insights and ideas on
the subject matter presented her
The next 700 program transformers
In this paper, we describe a hierarchy of program transformers, capable of performing fusion to eliminate intermediate data structures, in which the transformer at each level of the hierarchy builds on top of those at lower levels. The program transformer at level 1 of the hierarchy corresponds to positive supercompilation, and that at level 2 corresponds to distillation. We give a number of examples of the application of our transformers at different levels in the hierarchy and look at the speedups that are obtained. We determine the maximum speedups that can be obtained at each level, and prove that the transformers at each level terminate
Distillation with labelled transition systems
In this paper, we provide an improved basis for the âdistillationâ
program transformation. It is known that superlinear speedups can
be obtained using distillation, but cannot be obtained by other earlier
automatic program transformation techniques such as deforestation,
positive supercompilation and partial evaluation. We give
distillation an improved semantic basis, and explain how superlinear
speedups can occur