מיכאל קודיש

אקדמי בכיר

Oracle semantics for prolog

Roberto Barbuti, Michael Codish, Roberto Giacobazzi, Michael J. Maher

This paper proposes to specify semantic definitions for logic programming languages such as Prolog in terms of an oracle which specifies the control strategy and identifies which clauses are to be applied to resolve a given goal. The approach is quite general. It can be applied to Prolog to specify both operational and declarative semantics as well as other logic programming languages. Previous semantic definitions for Prolog typically encode the sequential depth-first search of the language into various mathematical frameworks. Such semantics mimic a Prolog interpreter in the sense that following the “leftmost” infinite path in the computation tree excludes computation to the right of this path from being considered by the semantics. The basic idea in this paper is to abstract away from the sequential control of Prolog and to provide a declarative characterization of the clauses to apply to a given goal. The decision whether or not to apply a clause is viewed as a query to an oracle which is specified from within the semantics and reasoned about from outside. This approach results in simple and concise semantic definitions which are more useful for arguing the correctness of program transformations and providing the basis for abstract interpretations than previous proposals.

שפת פרסום אנגלית
דפים 178-200
כתב עת Information and Computation
כרך 122
נושא מספר 2
סטטוס פרסום פורסם - 01.11.1995

ASJC Scopus subject areas

Theoretical Computer Science
Information Systems
Computer Science Applications
Computational Theory and Mathematics
גישה למסמך
10.1006/inco.1995.1146
קבצים וקישורים אחרים
Link to publication in Scopus