6 research outputs found
Derived Preconditions and Their Use in Program Synthesis
In this paper we pose and begin to explore a deductive problem more general than that of finding a proof that a given goal formula logically follows from a given set of hypotheses. The problem is most simply stated in the propositional calculus: given a goal A and hypothesis H we wish to find a formula P, called a precondition, such that A logically follows from P A H. A precondition pro- vides any additional conditions under which A can be shown to follow from H. A slightly more complex definition of preconditions in a first-order theory is given and used throughout the paper. A formal system based on natural deduction is presented in which preconditions can be derived. A number of examples are then given which show how derived preconditions are used in a program synthesis method we are developing. These uses include theorem proving, formula simplification, simple code generation, the completion of partial specifications for a subalgorithm, and other tasks of a deductive nature.Foundation Research Program of the Naval Postgraduate SchoolChief of Naval ResearchApproved for public release; distribution is unlimited
Reformulating Constraints for Compilability and Efficiency
KBSDE is a knowledge compiler that uses a classification-based approach to map solution constraints in a task specification onto particular search algorithm components that will be responsible for satisfying those constraints (e.g., local constraints are incorporated in generators; global constraints are incorporated in either testers or hillclimbing patchers). Associated with each type of search algorithm component is a subcompiler that specializes in mapping constraints into components of that type. Each of these subcompilers in turn uses a classification-based approach, matching a constraint passed to it against one of several schemas, and applying a compilation technique associated with that schema. While much progress has occurred in our research since we first laid out our classification-based approach [Ton91], we focus in this paper on our reformulation research. Two important reformulation issues that arise out of the choice of a schema-based approach are: (1) compilability-- Can a constraint that does not directly match any of a particular subcompiler's schemas be reformulated into one that does? and (2) Efficiency-- If the efficiency of the compiled search algorithm depends on the compiler's performance, and the compiler's performance depends on the form in which the constraint was expressed, can we find forms for constraints which compile better, or reformulate constraints whose forms can be recognized as ones that compile poorly? In this paper, we describe a set of techniques we are developing for partially addressing these issues
Symmetry as Bias: Rediscovering Special Relativity
This paper describes a rational reconstruction of Einstein's discovery of special relativity, validated through an implementation: the Erlanger program. Einstein's discovery of special relativity revolutionized both the content of physics and the research strategy used by theoretical physicists. This research strategy entails a mutual bootstrapping process between a hypothesis space for biases, defined through different postulated symmetries of the universe, and a hypothesis space for physical theories. The invariance principle mutually constrains these two spaces. The invariance principle enables detecting when an evolving physical theory becomes inconsistent with its bias, and also when the biases for theories describing different phenomena are inconsistent. Structural properties of the invariance principle facilitate generating a new bias when an inconsistency is detected. After a new bias is generated. this principle facilitates reformulating the old, inconsistent theory by treating the latter as a limiting approximation. The structural properties of the invariance principle can be suitably generalized to other types of biases to enable primal-dual learning
Correct-schema-guided synthesis of steadfast programs
It can be argued that for (semi-)automated software development, program schemas are indispensable, since they capture not only structured program design principles, but also domain knowledge, both of which are of crucial importance for hierarchical program synthesis. Most researchers represent schemas purely syntactically (as higher-order expressions). This means that the knowledge captured by a schema is not formalized. We take a semantic approach and show that a schema can be formalized as an open (first-order) logical theory that contains an open logic program. By using a special kind of correctness for open programs, called steadfastness, we can define and reason about the correctness of schemas. We also show how to use correct schemas to synthesize steadfast programs
Proceedings of the Workshop on Change of Representation and Problem Reformulation
The proceedings of the third Workshop on Change of representation and Problem Reformulation is presented. In contrast to the first two workshops, this workshop was focused on analytic or knowledge-based approaches, as opposed to statistical or empirical approaches called 'constructive induction'. The organizing committee believes that there is a potential for combining analytic and inductive approaches at a future date. However, it became apparent at the previous two workshops that the communities pursuing these different approaches are currently interested in largely non-overlapping issues. The constructive induction community has been holding its own workshops, principally in conjunction with the machine learning conference. While this workshop is more focused on analytic approaches, the organizing committee has made an effort to include more application domains. We have greatly expanded from the origins in the machine learning community. Participants in this workshop come from the full spectrum of AI application domains including planning, qualitative physics, software engineering, knowledge representation, and machine learning
Derivaci贸n deductiva de programas funcionales con patrones
Una de las dificultades principales en el desarrollo de
software es la ausencia de un marco conceptual adecuado para
su estudio. Una propuesta la constituye el modelo transformativo,
que entiende el desarrollo de software como un proceso
iterativo de transformaci贸n de especificaciones: se parte de
una especificaci贸n inicial que va transform谩ndose sucesivamente
hasta obtener una especificaci贸n final que se toma como
programa. Este modelo b谩sico puede llevarse a la pr谩ctica de
varias maneras. En concreto, la aproximaci贸n deductiva toma
una sentencia l贸gica como especificaci贸n inicial y su proceso
transformador consiste en la demostraci贸n de la sentencia;
como producto secundario de la demostraci贸n se deriva un programa
que satisface la especificaci贸n inicial.
La tesis desarrolla un m茅todo deductivo para la derivaci贸n
de programas funcionales con patrones, escritos en un lenguaje
similar a Hope. El m茅todo utiliza una l贸gica multig茅nero, cuya
relaci贸n con el lenguaje de programaci贸n es estudiada. Tambi茅n
se identifican los esquemas de demostraci贸n necesarios para la
derivaci贸n de funciones con patrones, basados en la demostraci贸n
independiente de varias subsentencias. Cada subsentencia
proporciona una subespecificaci贸n de una ecuaci贸n del futuro
programa a derivar.
Nuestro m茅todo deductivo est谩 inspirado en uno previo de
Zohar Manna y Richard Waldinger, conocido como el cuadro
deductivo, que deriva programas en un lenguaje similar a Lisp.
El nuevo m茅todo es una modificaci贸n del cuadro de estos autores,
que incorpora g茅neros y permite demostrar una especificaci贸n
mediante varios cuadros. Cada cuadro demuestra una subespecificaci贸n
y por tanto deriva una ecuaci贸n del programa. Se
prev茅n mecanismos para que los programas derivados puedan contener
definiciones locales con patrones y variables an贸nimas y
sin贸nimas y para que las funciones auxiliares derivadas no
usen variables de las funciones principales.
La tesis se completa con varios ejemplos de aplicaci贸n, un
mecanismo que independentiza el m茅todo del lenguaje de programaci贸n
y un prototipo de entorno interactivo de derivaci贸n
deductiva.
Categor铆as y descriptores de materia CR
D.l.l [T茅cnicas de programaci贸n]: Programaci贸n funcional;
D.2.10 [Ingenier铆a de software]: Dise帽o - m茅todos; F.3.1
[L贸gica y significado de los programas]: Especificaci贸n, verificaci贸n
y razonamiento sobre programas - l贸gica de programas;
F.3.3 [L贸gica y significado de los programas]: Estudios de
construcciones de programas - construcciones funcionales;
esquemas de programa y de recursion; 1.2.2 [Inteligencia artificial]:
Programaci贸n autom谩tica - s铆ntesis de programas;
1.2.3 [Inteligencia artificial]: Deducci贸n y demostraci贸n de
teoremas]: extracci贸n de respuesta/raz贸n; inducci贸n matem谩tica.
T茅rminos generales
Programaci贸n funcional, s铆ntesis de programas, demostraci贸n
de teoremas.
Otras palabras claves y expresiones
Funciones con patrones, cuadro deductivo, especificaci贸n
parcial, inducci贸n estructural, teorema de descomposici贸n.---ABSTRACT---One of the main difficulties in software development is
the lack of an adequate conceptual framework of study. The
transformational model is one such proposal that conceives
software development as an iterative process of specifications
transformation: an initial specification is developed and
successively transformed until a final specification is
obtained and taken as a program. This basic model can be
implemented in several ways. The deductive approach takes a
logical sentence as the initial specification and its proof
constitutes the transformational process; as a byproduct of
the proof, a program which satisfies the initial specification
is derived.
In the thesis, a deductive method for the derivation of
Hope-like functional programs with patterns is developed. The
method uses a many-sorted logic, whose relation to the
programming language is studied. Also the proof schemes necessary
for the derivation of functional programs with patterns,
based on the independent proof of several subsentences, are
identified. Each subsentence provides a subspecification of
one equation of the future program to be derived.
Our deductive method is inspired on a previous one by
Zohar Manna and Richard Waldinger, known as the deductive
tableau, which derives Lisp-like programs. The new method
incorporates sorts in the tableau and allows to prove a sentence
with several tableaux. Each tableau proves a subspecification
and therefore derives an equation of the program.
Mechanisms are included to allow the derived programs to contain
local definitions with patterns and anonymous and synonymous
variables; also, the derived auxiliary functions cannot
reference parameters of their main functions.
The thesis is completed with several application examples,
i mechanism to make the method independent from the
programming language and an interactive environment prototype
for deductive derivation.
CR categories and subject descriptors
D.l.l [Programming techniques]: Functional programming;
D.2.10 [Software engineering]: Design - methodologies; F.3.1
[Logics and meanings of programa]: Specifying and verifying
and reasoning about programs - logics of programs; F.3.3
[Logics and meanings of programs]: Studies of program constructs
- functional constructs; program and recursion schemes;
1.2.2 [Artificial intelligence]: Automatic programming - program
synthesis; 1.2.3 [Artificial intelligence]: Deduction and
theorem proving - answer/reason extraction; mathematical
induction.
General tenas
Functional programming, program synthesis, theorem proving.
Additional key words and phrases
Functions with patterns, deductive tableau, structural
induction, partial specification, descomposition theorem