4,393 research outputs found
Carbon--The First Frontier of Information Processing
Information is often encoded as an aperiodic chain of building blocks. Modern
digital computers use bits as the building blocks, but in general the choice of
building blocks depends on the nature of the information to be encoded. What
are the optimal building blocks to encode structural information? This can be
analysed by substituting the operations of addition and multiplication of
conventional arithmetic with translation and rotation. It is argued that at the
molecular level, the best component for encoding discretised structural
information is carbon. Living organisms discovered this billions of years ago,
and used carbon as the back-bone for constructing proteins that function
according to their structure. Structural analysis of polypeptide chains shows
that an efficient and versatile structural language of 20 building blocks is
needed to implement all the tasks carried out by proteins. Properties of amino
acids indicate that the present triplet genetic code was preceded by a more
primitive one, coding for 10 amino acids using two nucleotide bases.Comment: (v1) 9 pages, revtex. (v2) 10 pages. Several arguments expanded to
make the article self-contained and to increase clarity. Applications pointed
out. (v3) 11 pages. Published version. Well-known properties of proteins
shifted to an appendix. Reformatted according to journal styl
A survey of program transformation with special reference to unfold/fold style program development
This paper consists of a survey of current, and past, work on *program transformation* for the purpose of optimization. We first discuss some of the general methodological frameworks for program modification, such as *analogy*, *explanation based learning*, *partial evaluation*, *proof theoretic optimization*, and the *unfold/fold* technique. These frameworks are not mutually exclusive, and the latter, unfold/fold, is certainly the most widely used technique, in various guises, for program transformation. Thus we shall often have occasion to: compare the relative merits of systems that employ the technique in some form, *and*; compare the unfold/fold systems with those that employ alternative techniques. We also include (and compare with unfold/fold) a brief survey of recent work concerning the use of *formal methods* for program transformation
Transformation of logic programs: Foundations and techniques
AbstractWe present an overview of some techniques which have been proposed for the transformation of logic programs. We consider the so-called “rules + strategies” approach, and we address the following two issues: the correctness of some basic transformation rules w.r.t. a given semantics and the use of strategies for guiding the application of the rules and improving efficiency. We will also show through some examples the use and the power of the transformational approach, and we will briefly illustrate its relationship to other methodologies for program development
Verifying Catamorphism-Based Contracts using Constrained Horn Clauses
We address the problem of verifying that the functions of a program meet
their contracts, specified by pre/postconditions. We follow an approach based
on constrained Horn clauses (CHCs) by which the verification problem is reduced
to the problem of checking satisfiability of a set of clauses derived from the
given program and contracts. We consider programs that manipulate algebraic
data types (ADTs) and a class of contracts specified by catamorphisms, that is,
functions defined by simple recursion schemata on the given ADTs. We show by
several examples that state-of-the-art CHC satisfiability tools are not
effective at solving the satisfiability problems obtained by direct translation
of the contracts into CHCs. To overcome this difficulty, we propose a
transformation technique that removes the ADT terms from CHCs and derives new
sets of clauses that work on basic sorts only, such as integers and booleans.
Thus, when using the derived CHCs there is no need for induction rules on ADTs.
We prove that the transformation is sound, that is, if the derived set of CHCs
is satisfiable, then so is the original set. We also prove that the
transformation always terminates for the class of contracts specified by
catamorphisms. Finally, we present the experimental results obtained by an
implementation of our technique when verifying many non-trivial contracts for
ADT manipulating programs.Comment: Paper presented at the 38th International Conference on Logic
Programming (ICLP 2022), 16 pages; added Journal reference and related DO
On Unfolding Completeness for Rewriting Logic Theories
Many transformation systems for program optimization, program synthesis, and program specialization are based on fold/unfold transformations. In this paper, we investigate the semantic properties of a narrowing-based unfolding transformation that is useful to transform rewriting logic theories. We also present a transformation methodology that is able to determine whether an unfolding transformation step would cause incompleteness and avoid this problem by completing the transformed rewrite theory with suitable extra rules. More precisely, our methodology identifies the sources of incompleteness and derives a set of rules that are added to the transformed rewrite theory in order to preserve the semantics of the original theory.Alpuente Frasnedo, M.; Baggi, M.; Ballis, D.; Falaschi, M. (2010). On Unfolding Completeness for Rewriting Logic Theories. http://hdl.handle.net/10251/863
- …