University of Cambridge > Talks.cam > Microsoft Research Cambridge, public talks > Logic programming beyond Prolog

Logic programming beyond Prolog

Add to your list(s) Download to your calendar using vCal

If you have a question about this talk, please contact Microsoft Research Cambridge Talks Admins.

This event may be recorded and made available internally or externally via http://research.microsoft.com. Microsoft will own the copyright of any recordings made. If you do not wish to have your image/voice recorded please consider this before attending

A program in pure Prolog is an executable specification. For example, Quicksort in Prolog is a logical formula, yet shows creditable performance on long lists. But such executable specifications are a compromise: the logic is compromised by algorithmic considerations, yet only indirectly executable via an abstract machine.

This talk introduces relational programming, a method that solves the difficulty with Prolog programming by a separation of concerns. It requires writing three texts: (1) Axioms, a logical formula that specifies the problem and is not compromised by algorithmic considerations, (2) Theorem, a logical formula that expresses the algorithm, and (3) Code, a transcription of Theorem to C++. Correctness of Code relies on the logical justification of Theorem by Axioms and on a faithful transcription of Theorem to C++.

Sorting is an example where relational programming has the advantage of a higher degree of abstractness: the data to be sorted can be any C++ data type that satisfies the axioms of linear order, while the Prolog version is limited to the Herbrand universe. Another advantage of relational programs is that they can be shown to have a model-theoretic and fixpoint semantics equivalent to each other and analogous to those of pure Prolog programs.

This talk is part of the Microsoft Research Cambridge, public talks series.

Tell a friend about this talk:

This talk is included in these lists:

Note that ex-directory lists are not shown.

 

© 2006-2019 Talks.cam, University of Cambridge. Contact Us | Help and Documentation | Privacy and Publicity