{"id":20521082,"url":"https://github.com/shonfeder/99-lambda-prolog-problems","last_synced_at":"2026-03-19T16:13:38.097Z","repository":{"id":70809531,"uuid":"433012068","full_name":"shonfeder/99-lambda-prolog-problems","owner":"shonfeder","description":"99 λProlog Problems (eventually)","archived":false,"fork":false,"pushed_at":"2022-05-01T00:52:51.000Z","size":28,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"trunk","last_synced_at":"2025-02-28T16:17:05.572Z","etag":null,"topics":["99problems","lambda-prolog","prolog"],"latest_commit_sha":null,"homepage":"","language":"AMPL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shonfeder.png","metadata":{"files":{"readme":"README.org","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-11-29T11:15:36.000Z","updated_at":"2023-12-20T12:44:09.000Z","dependencies_parsed_at":null,"dependency_job_id":"234b19f2-0cfc-45ba-9d6b-59e0956d4176","html_url":"https://github.com/shonfeder/99-lambda-prolog-problems","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shonfeder%2F99-lambda-prolog-problems","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shonfeder%2F99-lambda-prolog-problems/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shonfeder%2F99-lambda-prolog-problems/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shonfeder%2F99-lambda-prolog-problems/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shonfeder","download_url":"https://codeload.github.com/shonfeder/99-lambda-prolog-problems/tar.gz/refs/heads/trunk","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242124584,"owners_count":20075581,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["99problems","lambda-prolog","prolog"],"created_at":"2024-11-15T22:26:03.382Z","updated_at":"2026-01-29T05:47:49.091Z","avatar_url":"https://github.com/shonfeder.png","language":"AMPL","funding_links":[],"categories":[],"sub_categories":[],"readme":"#+TITLE: 99 λProlog Problems\n\nA (WIP) adaptation of the classic [[https://sites.google.com/site/prologsite/prolog-problems][99 Prolog Problems]] by [[https://sites.google.com/site/prologsite/author][Werner Hett]] to\nhigher-order logic programming in [[http://www.lix.polytechnique.fr/~dale/lProlog/][λProlog]].\n\n\n* The spirit of the problems\nBefore undertaking the problems, you may wish to review this slight adaptation\nof Hett's wonderful guidance (additions in =[]=):\n\n#+begin_quote\nThe purpose of this problem collection is to give you the opportunity to\npractice your skills in [higher-order] logic programming. Your goal should be to\nfind the most elegant solution of the given problems. Efficiency is important,\nbut logical clarity is even more crucial. Some of the (easy) problems can be\ntrivially solved using built-in predicates. However, in these cases, you learn\nmore if you try to find your own solution.\n\nEvery predicate that you define should begin with a comment that describes it in\na declarative statement.  Do not describe procedurally, what the predicate does,\nbut write down a logical statement which includes the arguments of the\npredicate, [and then describe the flow of data through the unification of terms].\n\n[Construct types to formalize the possible data for the predicates and\nfunctions, then specify the types and modes for their arguments.]\n#+end_quote\n\n\n* The problems\n\n#+begin_quote\nThe problems have different levels of difficulty. Those marked with a single\nasterisk (*) are easy. If you have successfully solved the preceeding problems\nyou should be able to solve them within a few (say 15) minutes. Problems marked\nwith two asterisks (**) are of intermediate difficulty. If you are a skilled\nProlog programmer it shouldn't take you more than 30-90 minutes to solve them.\nProblems marked with three asterisks (***) are more difficult. You may need more\ntime (i.e. a few hours or more) to find a good solution.\n#+end_quote\n\n- [[file:problems/lists.org][Lists]]\n\n* The solutions\n\nSolutions are written targeting the [[https://github.com/LPCIC/elpi][Elpi]] dialect and tested by running with\nElpi.\n\n- [[file:solutions/lists.mod][Lists]]\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshonfeder%2F99-lambda-prolog-problems","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshonfeder%2F99-lambda-prolog-problems","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshonfeder%2F99-lambda-prolog-problems/lists"}