kanren
An extensible, lightweight relational/logic programming DSL written in pure Python (by pythological)
clpz
Constraint Logic Programming over Integers (by triska)
kanren | clpz | |
---|---|---|
3 | 5 | |
169 | 178 | |
0.0% | - | |
0.0 | 4.4 | |
over 1 year ago | 7 months ago | |
Python | Prolog | |
GNU General Public License v3.0 or later | - |
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
kanren
Posts with mentions or reviews of kanren.
We have used some of these posts to build our list of alternatives
and similar projects.
- Kanren: An extensible, lightweight relational/logic programming DSL in Python
-
When do you use generators?
Kanren for Pyhon implements a logic programming paradigm using generators giving substitutions for logical variables. It allows to deal with infinite solutions that can be conjoined (interleaved) with others seamlessly
-
Five-minute Multimethods in Python by Guido van Rossum - March 30, 2005
found about this decorator while playing with https://github.com/pythological/kanren
clpz
Posts with mentions or reviews of clpz.
We have used some of these posts to build our list of alternatives
and similar projects. The last one was on 2023-06-01.
-
Logic programming is overrated, at least for logic puzzles (2013)
As pointed out in the comments in the article, these kinds of logic puzzles are easier to solve using constraint programming than "regular" logic programming.
For example, see the solution to the Zebra Puzzle here: https://www.metalevel.at/prolog/puzzles which uses CLPZ[^1].
[^1]: https://github.com/triska/clpz
-
Markus Triska Interview on Prolog
Scryer has the strings-as-lists-but-implemented-efficiently thing, possibly more strict ISO Prolog compatible syntax, and it may ship with a more advanced constraint library (I'm not clear on the relationship between SWI's clpfd and Scryer clpz).
-
is it possible to have a reversable operation
None of these are full-fledged programming languages, however. They're limited to problems that lie in the polynomial hierarchy (A class which contains P and NP). Logic programming is generally only used to solve hard problems for which no good algorithm is known. Prolog also sort of fits this niche and it has a bunch of solvers integrated into it. Notably CLPFD which uses https://github.com/triska/clpz for constraint logic programming. Rosette (https://docs.racket-lang.org/rosette-guide/index.html) is another solver-based language. Except it uses lisp syntax (it's embedded in the Racket language). It uses Z3 as a solver (linked above for SMT theories)
- Ask HN: Do you use an optimization solver? Which one? Why? Do you like it?
-
What is the difference between constraint solving and constraints programming?
Constraint programming I guess is when one uses a prolog library such as: https://github.com/triska/clpz
What are some alternatives?
When comparing kanren and clpz you can also consider the following projects:
minizinc-python - Access to all MiniZinc functionality directly from Python
prolog-checkers - A Player vs AI game of checkers implemented in Prolog