My Picat page

This page is maintained by Hakan Kjellerstrand (

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 .

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: .

They are separated in different sections:

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:

MIP models

These models use the new mip module introduced in version 0.3 ( import mip.).

Project Euler problem

Here are some solutions for the
Project Euler problems:
Total time for running all problems #1..#50 is < 10 seconds (on my Linux Ubuntu 12.04, 8 core Intel i7 CPU 930@2.80GHz). Some programs contains several alternative solutions. There are only 2 problems that takes longer than 1s: #14 and #23; all other 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.

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

Back to my homepage
Created by Hakan Kjellerstrand