A Simple Complete Search for Logic Programming

Authors Jason Hemann, Daniel P. Friedman, William E. Byrd, Matthew Might

Thumbnail PDF


  • Filesize: 379 kB
  • 8 pages

Document Identifiers

Author Details

Jason Hemann
Daniel P. Friedman
William E. Byrd
Matthew Might

Cite AsGet BibTex

Jason Hemann, Daniel P. Friedman, William E. Byrd, and Matthew Might. A Simple Complete Search for Logic Programming. In Technical Communications of the 33rd International Conference on Logic Programming (ICLP 2017). Open Access Series in Informatics (OASIcs), Volume 58, pp. 14:1-14:8, Schloss Dagstuhl – Leibniz-Zentrum für Informatik (2018)


Here, we present a family of complete interleaving depth-first search strategies for embedded, domain-specific logic languages. We derive our search family from a stream-based implementation of incomplete depth-first search. The DSL's programs' texts induce particular strategies guaranteed to be complete.
  • logic programming
  • streams
  • search
  • Racket
  • backtracking
  • relational programming


  • Access Statistics
  • Total Accesses (updated on a weekly basis)
    PDF Downloads


  1. Isaac Balbin and Koenraad Lecot. Logic Programming: A Classified Bibliography. Springer Science &Business Media, 2012. Google Scholar
  2. Olivier Danvy, Bernd Grobauer, and Morten Rhiger. A unifying approach to goal-directed evaluation. New Generation Computing, 20(1):53, 2002. URL: http://dx.doi.org/10.1007/BF03037259,
  3. Matthew Flatt and PLT. Reference: Racket. Technical Report PLT-TR-2010-1, PLT Design Inc., 2010. URL: http://racket-lang.org/tr1/.
  4. Daniel P. Friedman, William E. Byrd, and Oleg Kiselyov. The Reasoned Schemer. MIT Press, Cambridge, MA, 2005. Google Scholar
  5. Jason Hemann and Daniel P. Friedman. μKanren: A minimal functional core for relational programming. In Scheme 13, 2013. URL: http://schemeworkshop.org/2013/papers/HemannMuKanren2013.pdf.
  6. Jason Hemann, Daniel P. Friedman, William E. Byrd, and Matthew Might. A small embedding of logic programming with a simple complete search. In Proceedings of DLS quotesingle16. ACM, 2016. URL: http://dx.doi.org/10.1145/2989225.2989230.
  7. Ralf Hinze. Deriving backtracking monad transformers. In ACM SIGPLAN Notices, volume 35, pages 186-197. ACM, 2000. Google Scholar
  8. Ralf Hinze. Prolog’s control constructs in a functional setting: Axioms and implementation. International Journal of Foundations of Computer Science, 12(02):125-170, 2001. Google Scholar
  9. Oleg Kiselyov, Chung-chieh Shan, Daniel P. Friedman, and Amr Sabry. Backtracking, interleaving, and terminating monad transformers: (functional pearl). In Olivier Danvy and Benjamin C. Pierce, editors, Proceedings of the 10th ACM SIGPLAN ICFP, pages 192-203. ACM, September 2005. Google Scholar
  10. Olin Shivers. List Library. Scheme Request for Implementation. SRFI-1, 1999. URL: http://srfi.schemers.org/srfi-1/srfi-1.html.
  11. Ben A. Sijtsma. On the productivity of recursive list definitions. ACM Trans. Program. Lang. Syst., 11(4):633-649, October 1989. URL: http://doi.acm.org/10.1145/69558.69563, URL: http://dx.doi.org/10.1145/69558.69563.
  12. JM Spivey and Silvija Seres. Embedding Prolog in Haskell. In E. Meier, editor, Haskell 99, 1999. Google Scholar
  13. Mitchell Wand and Dale Vaillancourt. Relating models of backtracking. In Proceedings of the Ninth ACM SIGPLAN International Conference on Functional Programming, ICFP '04, pages 54-65, New York, NY, USA, 2004. ACM. URL: http://doi.acm.org/10.1145/1016850.1016861, URL: http://dx.doi.org/10.1145/1016850.1016861.
Questions / Remarks / Feedback

Feedback for Dagstuhl Publishing

Thanks for your feedback!

Feedback submitted

Could not send message

Please try again later or send an E-mail