A treatment of higher-order features in logic programming

被引:3
|
作者
Nadathur, G
机构
[1] Univ Minnesota, Digital Technol Ctr, Minneapolis, MN 55455 USA
[2] Univ Minnesota, Dept Comp Sci & Engn, Minneapolis, MN 55455 USA
关键词
lambda calculus; intensional higher-order programming; higher-order unification; abstract machine; compilation;
D O I
10.1017/S1471068404002297
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
The logic programming paradigm provides the basis for a new intensional view of higher-order notions. This view is realized primarily by employing the terms of a typed lambda calculus as representational devices and by using a richer form of unification for probing their structures. These additions have important meta-programming applications but they also pose non-trivial implementation problems. One issue concerns the machine representation of lambda terms suitable to their intended use: an adequate encoding must facilitate comparison operations over terms in addition to supporting the usual reduction computation. Another aspect relates to the treatment of a unification operation that has a branching character and that sometimes calls for the delaying of the solution of unification problems. A final issue concerns the execution of goals whose structures become apparent only in the course of computation. These various problems are exposed in this paper and solutions to them are described. A satisfactory representation for lambda terms is developed by exploiting the nameless notation of de Bruijn as well as explicit encodings of substitutions. Special mechanisms are molded into the structure of traditional Prolog implementations to support branching in unification and carrying of unification problems over other computation steps; a premium is placed in this context on exploiting determinism and on emulating usual first-order behaviour. An extended compilation model is presented that treats higher-order unification and also handles dynamically emergent goals. The ideas described here have been employed in the Teyjus implementation of the lambda Prolog language, a fact that is used to obtain a preliminary assessment of their efficacy.
引用
收藏
页码:305 / 354
页数:50
相关论文
共 50 条
  • [1] HIGHER-ORDER LOGIC PROGRAMMING
    MILLER, DA
    NADATHUR, G
    [J]. LECTURE NOTES IN COMPUTER SCIENCE, 1986, 225 : 448 - 462
  • [2] HIGHER-ORDER LOGIC PROGRAMMING
    MILLER, DA
    NADATHUR, G
    [J]. JOURNAL OF SYMBOLIC LOGIC, 1986, 51 (03) : 851 - 851
  • [3] Extensional Higher-Order Logic Programming
    Charalambidis, Angelos
    Handjopoulos, Konstantinos
    Rondogiannis, Panos
    Wadge, William W.
    [J]. LOGICS IN ARTIFICIAL INTELLIGENCE, JELIA 2010, 2010, 6341 : 91 - 103
  • [4] Extensional Higher-Order Logic Programming
    Charalambidis, Angelos
    Handjopoulos, Konstantinos
    Rondogiannis, Panagiotis
    Wadge, William W.
    [J]. ACM TRANSACTIONS ON COMPUTATIONAL LOGIC, 2013, 14 (03)
  • [5] Tabling for higher-order logic programming
    Pientka, B
    [J]. AUTOMATED DEDUCTION - CADE-20, PROCEEDINGS, 2005, 3632 : 54 - 68
  • [6] HILOG - A FOUNDATION FOR HIGHER-ORDER LOGIC PROGRAMMING
    CHEN, WD
    KIFER, M
    WARREN, DS
    [J]. JOURNAL OF LOGIC PROGRAMMING, 1993, 15 (03): : 187 - 230
  • [7] A higher-order logic programming language with constraints
    Leach, J
    Nieva, S
    [J]. FUNCTIONAL AND LOGIC PROGRAMMING, PROCEEDINGS, 2001, 2024 : 108 - 122
  • [8] Predicate abstractions in higher-order logic programming
    Chen, WD
    Warren, DS
    [J]. NEW GENERATION COMPUTING, 1996, 14 (02) : 195 - 236
  • [9] COMPILATION OF PREDICATE ABSTRACTIONS IN HIGHER-ORDER LOGIC PROGRAMMING
    CHEN, WD
    WARREN, DS
    [J]. LECTURE NOTES IN COMPUTER SCIENCE, 1991, 528 : 287 - 298
  • [10] Constructive Negation in Extensional Higher-Order Logic Programming
    Charalambidis, Angelos
    Rondogiannis, Panos
    [J]. FOURTEENTH INTERNATIONAL CONFERENCE ON THE PRINCIPLES OF KNOWLEDGE REPRESENTATION AND REASONING, 2014, : 12 - 21