backyard/logic/README.md

24 lines
1.1 KiB
Markdown

satisfy them booleans, solve them integers.
`cnf.py` is a small library for creating formulas in conjunctive normal form,
and also for dealing with the eponymous CNF file format.
the types used internally and exposed externally are very simple:
booleans, integers, and lists of each.
`z0.py` is a slightly larger library that builds upon `cnf.py`,
mimicing a tiny subset of the [z3](https://github.com/Z3Prover/z3)
library's interface. it exposes classes for high-level bitvectors and
[unary-encoded integers.](https://en.wikipedia.org/wiki/Unary_numeral_system)
(unary is sometimes more efficient to solve)
`sugarcane4unary2.py` utilizes z0 to solve a (pretty arbitrary) problem
relating to farming sugarcane in Minecraft. you will need to set
the environment variable `SOLVER` to (the path of) an external SAT solver.
[kissat](https://github.com/arminbiere/kissat) works well.
`hex_problem.py` creates a hexagon grid with some colored numbers in it.
it doesn't really a serve a purpose.
`yices_solution.py` parses a solution from a SAT solver,
given the original yices-generated CNF.