Abstract
In this paper we present a formalism for finitely representing infinite sets of terms. This formalism, called ω-terms, enables us to reason finitely about certain recursive types. We present an extension of Horn logic programs, called ω-Prolog, which allows a finite schematization of infinitely many clauses via predicates with ω-terms as arguments. We show that for every ω-Prolog program there is an equivalent Horn logic program. That is, incorporating ω-terms into first order logic programming does not change its denotational semantics. Computationally, however, ω-Prolog has the advantages of (1) representing infinitely many answers finitely, (2) avoiding repetition in computation and thus achieving better efficiency, (3) allowing infinite queries, and (4) avoiding certain non-termination of Prolog programs. The ω-terms play a similar role as regular-trees [MR85] and sort-expressions [Com90] in explicitly defining abstract data types. It differs from the others in that it allows us to define certain non-regular-tree languages such as {(a n , b n , c n ) : n e N}. We present a finite and complete algorithm for unification between ω-terms, with which we can also compute the intersection of the languages defined by ω-terms.
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have
Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.