Skip to content

shonfeder/99-lambda-prolog-problems

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 

Repository files navigation

99 λProlog Problems

A (WIP) adaptation of the classic 99 Prolog Problems by Werner Hett to higher-order logic programming in λProlog.

The spirit of the problems

Before undertaking the problems, you may wish to review this slight adaptation of Hett’s wonderful guidance (additions in []):

The purpose of this problem collection is to give you the opportunity to practice your skills in [higher-order] logic programming. Your goal should be to find the most elegant solution of the given problems. Efficiency is important, but logical clarity is even more crucial. Some of the (easy) problems can be trivially solved using built-in predicates. However, in these cases, you learn more if you try to find your own solution.

Every predicate that you define should begin with a comment that describes it in a declarative statement. Do not describe procedurally, what the predicate does, but write down a logical statement which includes the arguments of the predicate, [and then describe the flow of data through the unification of terms].

[Construct types to formalize the possible data for the predicates and functions, then specify the types and modes for their arguments.]

The problems

The problems have different levels of difficulty. Those marked with a single asterisk (*) are easy. If you have successfully solved the preceeding problems you should be able to solve them within a few (say 15) minutes. Problems marked with two asterisks (**) are of intermediate difficulty. If you are a skilled Prolog programmer it shouldn’t take you more than 30-90 minutes to solve them. Problems marked with three asterisks (***) are more difficult. You may need more time (i.e. a few hours or more) to find a good solution.

The solutions

Solutions are written targeting the Elpi dialect and tested by running with Elpi.

About

99 λProlog Problems (eventually)

Topics

Resources

Stars

Watchers

Forks

Languages