All Projects → nunchaku-inria → nunchaku

nunchaku-inria / nunchaku

Licence: BSD-2-Clause license
Model finder for higher-order logic

Programming Languages

ocaml
1615 projects
Makefile
30231 projects

Projects that are alternatives of or similar to nunchaku

discrete-math-python-scripts
Python code snippets from Discrete Mathematics for Computer Science specialization at Coursera
Stars: ✭ 98 (+145%)
Mutual labels:  logic, sat
ESCPOS
A ESC/POS Printer Commands Helper
Stars: ✭ 26 (-35%)
Mutual labels:  sat
Grakn
TypeDB: a strongly-typed database
Stars: ✭ 2,947 (+7267.5%)
Mutual labels:  logic
illogical
A micro conditional javascript engine used to parse the raw logical and comparison expressions, evaluate the expression in the given data context, and provide access to a text form of the given expressions.
Stars: ✭ 16 (-60%)
Mutual labels:  logic
CSCv2
Version 2 of my Crazy Small CPU
Stars: ✭ 53 (+32.5%)
Mutual labels:  logic
ioBroker.linkeddevices
Create linked objects (datapoints) of your devices with a self-defined structure. This makes it possible to create a structure in ioBroker, where all objects are centralized, e.g. to be used in the vis or scripts.
Stars: ✭ 17 (-57.5%)
Mutual labels:  logic
Imove
Move your mouse, generate code from flow chart
Stars: ✭ 3,282 (+8105%)
Mutual labels:  logic
switch
Switch is a small logic game that demonstrates usage of Pixar USD and Hydra on Windows.
Stars: ✭ 22 (-45%)
Mutual labels:  logic
truth-table-generator
truth-table-generator is a tool that allows to generate a truth table
Stars: ✭ 47 (+17.5%)
Mutual labels:  logic
awesome-philosophy
A curated list of awesome philosophy
Stars: ✭ 119 (+197.5%)
Mutual labels:  logic
bloc
A predictable state management library that helps implement the BLoC design pattern
Stars: ✭ 12 (-70%)
Mutual labels:  logic
rusty-razor
Razor is a tool for constructing finite models for first-order theories
Stars: ✭ 54 (+35%)
Mutual labels:  model-finding
LPL-solutions
Solutions for the book "Language Proof and Logic".
Stars: ✭ 51 (+27.5%)
Mutual labels:  logic
utp-main
An implementation of Hoare and He's Unifying Theories of Programming in Isabelle
Stars: ✭ 30 (-25%)
Mutual labels:  hol
CfdiUtils
PHP Common utilities for Mexican CFDI 3.2, 3.3 & 4.0
Stars: ✭ 97 (+142.5%)
Mutual labels:  sat
Limbo
A Reasoning System for a First-Order Logic of Limited Belief, written in C++
Stars: ✭ 233 (+482.5%)
Mutual labels:  logic
ciao
Ciao is a modern Prolog implementation that builds up from a logic-based simple kernel designed to be portable, extensible, and modular.
Stars: ✭ 190 (+375%)
Mutual labels:  logic
awesome-rust-formalized-reasoning
An exhaustive list of all Rust resources regarding automated or semi-automated formalization efforts in any area, constructive mathematics, formal algorithms, and program verification.
Stars: ✭ 185 (+362.5%)
Mutual labels:  logic
SMCDEL
A symbolic model checker for Dynamic Epistemic Logic.
Stars: ✭ 31 (-22.5%)
Mutual labels:  logic
consistency
Implementation of models in our EMNLP 2019 paper: A Logic-Driven Framework for Consistency of Neural Models
Stars: ✭ 26 (-35%)
Mutual labels:  logic

Nunchaku

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 CVC4 1.5 or later. Alternatively, it can use other backends:

We have 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.

Basic Usage

After installing nunchaku (see Build/Install) and at least one backend, call the tool on problem files written in one of the accepted syntaxes (Input/Output/Solvers) 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:

  • --help for listing options.

  • --timeout <n> (or -t <n>): maximal amount of seconds before returning "unknown"

  • j <n> for controlling the number of backend solvers active at the same time.

  • --solvers s1,s2 (or -s s1,s2) for using only the listed solvers.

  • --debug <n> (where n=1,2,…5) to enable debug printing. The maximal verbosity level is 5, and it is very verbose. Consider using nunchaku --debug 5 foo.nun | less -R to not drown in pages of text.

  • --pp-all (and each --pp-<pass>) for printing the problem after each transformation.

  • -nc to disable colored output if your terminal does not support it..

Contact

There is a dedicated mailing list at [email protected] (register). The issue tracker can be used for reporting bugs.

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 opam, the package manager for OCaml. Once opam is installed (don’t forget to run eval `opam 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.

Input/Output/Solvers

Supported input formats are:

  • nunchaku’s own input format, ML-like (extension .nun)

  • TPTP (very partial support, extension .p)

  • TIP (extension .smt2)

Supported solver backends:

How to make a release

  • udpate the repository itself

    • edit nunchaku.opam to change version number

    • git commit --amend to update the commit

    • git tag 0.42

    • git push origin stable --tags

  • make an archive:

    • tar.gz: git archive --prefix=nunchaku/ 0.42 -o nunchaku-0.42.tar.gz

    • zip: git archive --prefix=nunchaku/ 0.42 -o nunchaku-0.42.zip

  • upload the archive on gforge, write some release notes, send a mail.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].