The Next Logic Programming Language
Communicated by E. Pontelli


The discussion on the development of a new logic programming language has drawn a lot of attention in the last few months, thanks to the nice proposal developed by Peter Stuckey (see the ``Straw Man Proposal for NLP'' in the February issue of the Newsletter) as well as the Open Meeting on the Next Logic Programming Language held at ICLP'03 (see the minutes of the meeting in the February issue of the Newsletter).
Here below you can find another submission on this topic, by Walter Wilson. As the topic seems of wide interest to the community, I would like to encourage further discussions on this issue, in the form of brief position statements. These do not need to be polished and formal statements, but simply your own personal view on the matter (it will not be refereed and you will not be able to claim it in your annual report for a salary raise :-) ). I plan to dedicate a section of each issue of the newsletter to collect your thoughts and discussions. So, let's keep them coming!!


A Long-Term Logic Programming Language
Proposal Communicated by Walter W. Wilson

The design of the new logic programming language is influenced by the need for an efficient implementation, which is reasonable given the near-term requirements. But there can also be value in taking a long-term view, as Paul Graham suggests in "The Hundred-Year Language" (http://www.paulgraham.com/hundred.html). We should ask ourselves, what would the ideal language be if efficiency was not a consideration?

This article proposes such a language. The language objectives are

  1. a pure-specification language -- implementation is ignored,
  2. minimal, but extensible -- nothing is built-in, and
  3. a meta-language -- able to imitate and thus subsume other languages.

The language, called "axiomatic language", is based on the idea that the external behavior of any function or program, even an interactive program, can be represented by a static infinite set of symbolic expressions that enumerate all possible inputs, or sequences of inputs, along with the corresponding outputs. Thus the language is just a formal system for generating these symbolic expressions. Axiomatic language can be described as pure, definite Prolog with Lisp syntax, plus HiLog higher-order generalization, plus "string variables", which match a string of expressions in a sequence. Details and examples can be found at www.axiomaticlanguage.org.

I believe the various features being considered for the new LP language (constraints, types, modules, etc.) can be defined within this much simpler language using its extensibility. The papers on the language website show how Lisp-like expression evaluation and even a simple procedural language can be defined. Thus debates over language features would become debates over what to put in a library.

The challenge, of course, is to automatically generate efficient programs from specifications. Hopefully it won't take 100 years! Perhaps human-aided program synthesis is a practical intermediate goal.

A consensus on a long-term LP language would provide a target which might benefit the current NLPL design and might help focus research on program transformation. The language may also be useful as a non-executable language for software specification.