Relational Rippling: A General Approach
چکیده
We propose a new version of rippling, called relational rippling. Rippling is a heuristic for guiding proof search, especially in the step cases of inductive proofs. Relational rippling is designed for representations in which value passing is by shared existential variables, as op posed to function nesting. Thus relational rip pling can be used to guide reasoning about logic programs or circuits represented as relations. We give an informal motivation and introduc tion to relational rippling. More details, includ ing formal definitions and termination proofs can be found in the longer version of this pa per, [Bundy and Lombart, 1995]. 1 Introduction Rippling is a heuristic technique for controlling search during automatic theorem proving, [Bundy et a/., 1993]. It was originally developed for inductive theorem prov ing. Its role is to manipulate the induction conclusion to make it more like the induction hypothesis, thus en abling the hypothesis to prove the conclusion. Rippling can also be used for non-inductive proofs whenever a problem can be solved by reducing a syntactic difference between it and some previously solved problem. "Part of the research reported in this paper was conducted while the first author was a visitor at the Max Planck Insti-tut fur Informatik in Saarbriicken. He would like to thank his hosts, Harald Ganzinger and David Basin for inviting him to MPI and making his stay so pleasant. We would also like to thank lian Richardson and members of the mathematical reasoning group at Edinburgh for discussions about earlier versions of the ideas described here. Rippling works by identifying the syntactic differ ence between the current problem and the previous one, [Basin and Walsh, 1993], and then moving that difference through nested functions to a place where it no longer prevents a match between them. Following Boyer and Moore, this matching process is called fertilization. Rip pling is predicated on the assumption that value passing is done via function nesting. But there is a popular al ternative technique for value-passing: via existentially quantified shared variables. This is the technique used, for instance, in logic programming. It is also used in the relational representation of circuits. There is thus a strong motivation to adapt the ideas of rippling to situ ations in which value passing is done via shared variables between relations, instead of nested functions. We will call this adapted rippling, relational rippling. When we need to draw a distinction, we …