My Picat page

This page is maintained by Hakan Kjellerstrand (hakank@gmail.com)

Picat is a general-purpose programming language that incorporates features from logic programming, functional programming, and scripting languages. The letters in the name summarize Picat's features: Picat is created by Neng-Fa Zhou and Jonathan Fruhman.

Some links:

Book: Constraint Solving and Planning with Picat

Book by Neng-Fa Zhou, Håkan Kjellerstrand, and Jonathan Fruhman: Constraint Solving and Planning with Picat, Springer Verlag. ISBN: 9783319258812 (paper), 9783319258836 (e-book).



From the Springer page:
This book introduces a new logic-based multi-paradigm programming language that integrates logic programming, functional programming, dynamic programming with tabling, and scripting, for use in solving combinatorial search problems, including CP, SAT, and MIP (mixed integer programming) based solver modules, and a module for planning that is implemented using tabling.

The book is useful for undergraduate and graduate students, researchers, and practitioners.

The book page at http://picat-lang.org/ .
The complete book is available as a PDF.

My Picat programs/models

Here are some of my Picat programs/models. Many are ported from (or inspired by) my earlier B-Prolog models. There are also quite a few non-CP programs, e.g. problem from Rosetta Code and Project Euler.

The files are available (or will soon be available) at my Github repo: https://github.com/hakank/hakank/tree/master/picat .

They are separated in different sections:

Program for Picat v3

These programs are for Picat version v3 with (Prolog) Horn clauses, DCG's etc. Also, see Neng-Fa Zhou's port of GeoQuery to Picat v3:
github.com/nfzhou/geoquery.

Prolog benchmark suite, van Roy (etc)

The following programs are ported from SWI Prolog benchmark suite (https://github.com/SWI-Prolog/bench). Run with run_benchmark_v3.pi

Jan Burse's Prolog Benchmark

Jan Burse has a collection of some of the van Roy benchmarks. This benchmark is ported in benchmark_burse_v3.pi.

Pereira's Prolog Benchmark

Here is a port of the Fernando Pereira's Prolog benchmark collection: pereira_v3.pi

Other programs in v3

Here are some other programs, mostly ports from Prolog programs. Note: Some program use the utils in v3_utils.pi which must also be downloaded.

Constraint Programming and SAT models

Here are models that mainly use the Constraint Programming (import cp.) or SAT (import sat.) solvers.

Decompositions of global constraints

Here are some (decompositions of) global constraints or similar general constraints:

MIP / Float models

These models use the mip module ( import mip.).

Project Euler problem

Here are some solutions for the
Project Euler problems:
Total time for running all problems #1..#50 is < 5 seconds (on my Linux Ubuntu 18.04, 28 core Intel i9-7940X, 3.10GHz). Some programs contains several alternative solutions. All programs takes < 1s.

test_euler.pi: Simple Picat program for testing all the Project Euler programs (#1..#50).

Rosetta Code problem

Picat solutions for some
Rosetta Code problems.

Planning problems

Miscellaneous planning problems. Most use some of the planning modules: the build in planner module,
bplan.pi, or gps_utils.pi.

Miscellaneous programs

Here are some other programs, modules, utilities, e.g. ported from standard Prolog/GOFAI examples etc where the no cp/sat/mip/smt/planner module is used.

Also, see information about other constraint programming systems:
* My Constraint Programming Blog
* Constraint Programming
* My MiniZinc page
* My Zinc page
* My JaCoP page
* My JaCoP page
* My Choco page
* My Gecode/R page
* My Comet page
* My Gecode page
* My ECLiPSe page
* My Tailor/Essence' page
* My SICStus Prolog page
* My Google or-tools page
* My OscaR page
* My JSR-331 page
* My Numberjack page
* My AIMMS+CP page
* My B-Prolog page
* My Choco3 page
* My Z3 page
* My SWI-Prolog page


Back to my homepage
Created by Hakan Kjellerstrand hakank@gmail.com