123,468 research outputs found
Proof planning for logic program synthesis
The area of logic program synthesis is attracting increased interest. Most efforts
have concentrated on applying techniques from functional program synthesis to
logic program synthesis. This thesis investigates a new approach: Synthesizing
logic programs automatically via middle-out reasoning in proof planning.[Bundy et al 90a] suggested middle-out reasoning in proof planning. Middleout
reasoning uses variables to represent unknown details of a proof. Unifica¬
tion instantiates the variables in the subsequent planning, while proof planning
provides the necessary search control.Middle-out reasoning is used for synthesis by planning the verification of an
unknown logic program: The program body is represented with a meta-variable.
The planning results both in an instantiation of the program body and a plan for
the verification of that program. If the plan executes successfully, the synthesized
program is partially correct and complete.Middle-out reasoning is also used to select induction schemes. Finding an
appropriate induction scheme in synthesis is difficult, because the recursion in
the program, which is unknown at the outset, determines the induction in the
proof. In middle-out induction, we set up a schematic step case by representing
the constructors applied to the induction variables with meta-variables. Once
the step case is complete, the instantiated variables correspond to an induction
appropriate to the recursion of the program.The results reported in this thesis are encouraging. The approach has been
implemented as an extension to the proof planner CUM [Bundy et al 90c], called
Periwinkle, which has been used to synthesize a variety of programs fully automatically
Middle-Out Reasoning for Logic Program Synthesis
We propose a novel approach to automating the synthesis of logic programs: Logic programs are synthesized as a by-product of the planning of a verification proof. The approach is a two-level one: At the object level, we prove program verification conjectures in a sorted, first-order theory. The conjectures are of the form 8args \Gamma\Gamma\Gamma\Gamma! : prog(args \Gamma\Gamma\Gamma\Gamma! ) $ spec(args \Gamma\Gamma\Gamma\Gamma! ). At the meta-level, we plan the object-level verification with an unspecified program definition. The definition is represented with a (second-order) meta-level variable, which becomes instantiated in the course of the planning
A history-based scheme for accelerating Prolog interpretation
An algorithm for improving the performance of a Prolog interpreter is introduced. The algorithm, unlike the intelligent backtracking schemes which improve the performance by avoiding redundant redos, avoids redundant calls. The algorithm identifies the redundant calls by maintaining a history of the program execution. The algorithm can be used in conjunction with an intelligent backtracking scheme for a further speed-up of the programs
Noise-based information processing: Noise-based logic and computing: what do we have so far?
We briefly introduce noise-based logic. After describing the main motivations
we outline classical, instantaneous (squeezed and non-squeezed), continuum,
spike and random-telegraph-signal based schemes with applications such as
circuits that emulate the brain functioning and string verification via a slow
communication channel.Comment: Invited talk at the 21st International Conference on Noise and
Fluctuations, Toronto, Canada, June 12-16, 201
- …