nunchaku-inria / nunchaku

Model finder for higher-order logic
https://nunchaku-inria.github.io/nunchaku/
BSD 2-Clause "Simplified" License
42 stars 3 forks source link
cvc4 higher-order hol isabelle logic model-finding proof-assistant sat

= Nunchaku :toc: macro :source-highlighter: pygments

image::https://github.com/nunchaku-inria/nunchaku/workflows/build/badge.svg[Build status on github]

A counter-example finder for higher-order logic, designed to be used from various proof assistants. A spiritual successor to Nitpick. Documentation at https://nunchaku-inria.github.io/nunchaku/.

Nunchaku requires http://cvc4.cs.nyu.edu/web/[CVC4] 1.5 or later. Alternatively, it can use other backends:

We have https://github.com/nunchaku-inria/nunchaku-problems[a set of problems] for tests and regressions, that can also be helpful to grasp the input syntax and see how to use the constructs of Nunchaku.

toc::[]

== Basic Usage

After installing nunchaku (see <>) and at least one backend, call the tool on problem files written in one of the accepted syntaxes (<>) as follows:


$ git clone https://github.com/nunchaku-inria/nunchaku-problems $ nunchaku nunchaku-problems/tests/first_order.nun SAT: { type term := {$term_0, $term_1}. type list := {$list_0, $list_1}. val nil := $list_1. val a := $term_1. val b := $term_0. val cons := (fun (v_0/75:term) (v_1/76:list). if v_0/75 = $term_0 then $list_0 else if v_1/76 = $list_0 then $list_1 else $list_0).} {backend:smbc, time:0.0s}

A list of options can be obtained by calling nunchaku --help. A few particularly useful options are:

== Contact

There is a dedicated mailing list at nunchaku-users@lists.gforge.inria.fr (https://lists.gforge.inria.fr/mailman/listinfo/nunchaku-users[register]). The https://github.com/nunchaku-inria/nunchaku/issues[issue tracker] can be used for reporting bugs.

== Documentation

See the website https://nunchaku-inria.github.io/nunchaku/ and link:/docs/index.adoc[the documentation sources].

[[install]] == Build/Install

To build Nunchaku, there are several ways.

=== Released versions

Releases can be found on https://gforge.inria.fr/projects/nunchaku .

=== Opam

The easiest way is to use http://opam.ocaml.org/[opam], the package manager for OCaml. Once opam is installed (don't forget to run evalopam config env`` when you want to use opam), the following should suffice:

opam pin add -k git nunchaku https://github.com/nunchaku-inria/nunchaku.git#master

then opam should propose to install nunchaku and its dependencies. To upgrade:

opam update
opam upgrade nunchaku

Note that the binary is called 'nunchaku.native' until is it installed.

=== Manually

You need to install the dependencies first, namely:

Once you have entered the source directory, type:

make

== License

Free software under the BSD license. See file 'LICENSE' for more details.

[[supported-formats]] == Input/Output/Solvers

Supported input formats are:

Supported solver backends:

=== How to make a release