Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Go (golang) bindings for Picosat, the satisfiability solver

Tested on Go versions 1.9 and 1.10, but likely works on earlier versions of Go.

GoDoc Build Status Coverage Status Go Report Card


The project is hosted on GitHub. You can either download a release or use "go get":

$ go get

PiGoSAT is a wrapper around Picosat, whose C source files are included in this repository.


If you notice a bug or would like to request a feature, please file an issue ticket, checking to see if one exists already.

If you would like to contribute code, please fork PiGoSAT and send a pull request.

Updating PicoSAT

Replace picsoat.h, picosat.c, and update PicosatVersion in pigosat.go. Copy LICENSE from PicoSAT to LICENSE.picosat in PiGoSAT.

Other maintenance notes

Test PiGoSAT by switching to its source directory and running

$ go test -race

Before committing, please run

$ gofmt -w -s .

The only place you need to update the version number is in pigosat.go's Version constant. However, if you git tag or make a release on GitHub, make sure the version number matches the tag name.

When a new major or minor version (x.0 or 1.x) of Go is available, increment the versions you test PiGoSAT with in .travis.yml, and make a note at the top of this README document. Go only supports the current and last minor versions (e.g., 1.8 and 1.7) with security releases, so these are the versions that PiGoSAT should support.