C Go
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this 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 github.com/wkschwartz/pigosat

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.