Deriving Programs that Develop Programs
1997
Sign up for access to the world's latest research
Abstract
AI
AI
This research discusses the challenges in programming, particularly focusing on program derivation and the software crisis characterized by unclear behavior and maintenance issues. It introduces the concept of meta-programming, where a program is created to synthesize other programs, and presents meta-derivation as a way to utilize deductive methods in a meta-calculus framework. The work aims to elevate the abstraction level in program construction through a formalized meta-theory, culminating in the development of a global search theory that incorporates meaningful space descriptors and their manipulation.
Related papers
Lecture Notes in Computer Science, 2012
The use of general descriptive names, registered names, trademarks, etc. in this publication does not imply, even in the absence of a specific statement, that such names are exempt from the relevant protective laws and regulations and therefore free for general use.
The Journal of Logic Programming, 1998
Let Func be a set of function symbols, Pred be a set of predicate symbols, Vars be a denumerable set of variables. f /n denotes an arbitrary function symbol, and capital letters denote variables. Term denotes the set of terms that can be constructed from Func and Vars. t, t i and f (t 1 , • • • , t n) denote arbitrary terms. Atom denotes the set of atoms constructible from Pred, Func and Vars. a 1 and a 2 denote arbitrary atoms. θ and θ i denote substitutions. Let θ be a substitution and V ⊆ Vars. dom(θ) denotes the domain of θ. θ| \ V denotes the restriction of θ to V. As a convention, the function composition operator • binds stronger than | \. For instance, θ 1 • θ 2 | \ V is equal to (θ 1 • θ 2)| \ V. An expression O is a term, an atom, a literal, a clause, a goal etc. vars(O) denotes the set of variables in O. An equation is a formula of the form l = r where either l, r ∈ Term or l, r ∈ Atom. The set of all equations is denoted as Eqn. Let E ∈ ℘(Eqn). E is in solved form if, for each equation l = r in E, l is a variable that does not occur on the right side of any equation in E. For a set of equations E ∈ ℘(Eqn), mgu : ℘(Eqn) → Sub ∪ {fail } returns either a most general unifier for E if E is unifiable or fail otherwise, where Sub is the set of substitutions. mgu({l = r}) is sometimes written as mgu(l, r). Let θ•fail def = fail and fail •θ def = fail for any θ ∈ Sub∪{fail }. There is a natural bijection between substitutions and the sets of equations in solved form. eq(θ) denotes the set of equations in solved form corresponding to a substitution θ. eq(fail) def = fail. We will use a renaming substitution Ψ which renames a variable into a variable that has not been encountered before. Let F : D → ℘(E) be a function. F : ℘(D) → ℘(E) is defined as F (X) def = x∈X F (x).
IEEE Transactions on Software Engineering, 2000
The paper describes a method of program development which guarantees correctness. Our programs consist of an operational part, called instruction, and a specification. Both these parts are subject to the development and the refinement process. The specification consists of a pre-and postcondition called global specification and a set of assertions called local specification. A specified program is called correct if: 1) the operational part is totally correct w.r.t. the pre-and postcondition, 2) the precondition guarantees nonabortion, 3) local assertions are adequate for the proof of 1) and 2). The requirement of nonabortion leads to the use of a three-valued predicate calculus. We use McCarthy's calculus in that place. The paper contains a description of an experimental programming language PROMET-1 designed for our style of programming. The method is illustrated by the derivation of a bubblesort procedure.
ACM SIGPLAN Notices, 2002
Meta-programming is a discipline of writing programs in a certain programming language that generate, manipulate or execute programs written in another language. In a typed setting, meta-programming languages usually contain a modal type constructor to distinguish the level of object programs (which are the manipulated data) from the meta programs (which perform the computations). In functional programming, modal types of object programs generally come in two flavors: open and closed, depending on whether the expressions they classify may contain any free variables or not. Closed object programs can be executed at run-time by the meta program, but the computations over them are more rigid, and typically produce less efficient residual code. Open object programs provide better inlining and partial evaluation, but once constructed, expressions of open modal type cannot be evaluated.
Theoretical Computer Science, 1994
Science 135 (I 994) 267-288 Elsevier 267
Theory and Practice of Logic Programming, 2019
Processing programs as data is one of the successes of functional and logic programming. Higher-order functions, as program-processing programs are called in functional programming, and meta-programs, as they are called in logic programming, are widespread declarative programming techniques. In logic programming, there is a gap between the meta-programming practice and its theory: The formalizations of meta-programming do not explicitly address its impredicativity and are not fully adequate. This article aims at overcoming this unsatisfactory situation by discussing the relevance of impredicativity to meta-programming, by revisiting former formalizations of meta-programming, and by defining Reflective Predicate Logic, a conservative extension of first-order logic, which provides a simple formalization of meta-programming.
1994
Das Intemationales Begegnungs-und Forschungszentrum für Informatik (IBFI) ist eine gemeinnützige GmbH. Sie veranstaltet regelmäßig wissenschaftliche Seminare, welche nach Antrag der Tagungsleiter und Begutachtung durch das wissenschaftliche Direktorium mit persönlich eingeladenen Gästen durchgeführt werden.
1984
Abstrac. t:. We'introduce the notion of gens' Mc'8xampz'es as a unifying principle for vari ous phenomena in computer science, such as initia. i: st-Fuctures-in the area of abstrayt data types. Armstrong relations in the area ot dat~ pases. Generic examples are also useful in defining the semantics of logic progra,{IlIIliP-g, in tb, e formal theory of program te~ ting and in compleXity theory. We. characterize initial structures in terms of their genericity propertjes ano: give a syntactic chara<; terization of first order theories. a.
Software Engineering, 2015
Computer science" (informatics) is really program science since a computer, by itself too general a machine to be of practical interest, yields useful machines through programs that people write for it. While the theoretical study of programs fills volumes, few people realize that a handful of concepts from elementary set theory suffice to establish a clear and practical basis. Among the results: • To describe a specification or a program, it suffices to define one relation and one set. • To describe the concepts of programming, concurrent as well as sequential, three elementary operations on sets and relations suffice: union, composition and restriction. • These techniques suffice to derive the axioms of classic papers on the "laws of programming" as straightforward consequences. • To define both program correctness and refinement, the ordinary subset operator "" suffices. Paragraphs labeled "Intuition" relate the concepts to the experience of readers having done some programming. Readers with knowledge of previous views of theoretical informatics will find comparisons in "Comment" paragraphs. Section 5 provides more discussion. 1 Programs A program is a simple mathematical object: a constrained relation over a set of states.

Loading Preview
Sorry, preview is currently unavailable. You can download the paper by clicking the button above.