Appendix: Mikino

Mikino is written in Rust and is available as a Rust library

  • https://crates.io/crates/mikino_api
  • https://docs.rs/mikino_api/0.9.1/mikino_api

and a Rust birany

  • https://crates.io/crates/mikino

So, if you already have Rust installed on your system (or don't mind installing it) just make sure it is up-to-date and ask cargo to install mikino for you.

# update rust
> rustup self update
> rustup update

# install mikino, `-f` allows overwriting (updating)
# the previous mikino install if any
> cargo install -f mikino


Otherwise, head to mikino's release page and download the latest release for your operating system. The only other alternative is to build mikino from scratch.

Z3

Mikino requires the Z3 SMT solver. You can build it from source or recover a binary from the release page.

From this point forward I assume readers have a Z3 binary called z3 in their path. That is, running the command z3 -version should not fail and produce an output similar to

Z3 version 4.8.13 - 64 bit

Mikino, by default, assumes a Z3 binary is in your PATH with name z3. You can override this with the --z3_cmd command-line argument: mikino --z3_cmd "my_z3" ..., or mikino --z3_cmd "path/to/my_z3" ... if Z3 is not in your PATH.

Note that other efficient solvers exist such as Alt-Ergo, CVC4 and Yices 2. Solvers tend to be perform well on different kinds of problem, and verification frameworks routinely run several of them in parallel, wait for the quickest answer, and discard solver instances that are still running.

Build

You can also build mikino, it's actually quite easy. Install Rust or make sure it is up-to-date if it is installed already.

# update rust
> rustup self update
> rustup update

Clone mikino's (binary) repo, and cargo build it:

> clone https://github.com/OCamlPro/mikino_bin
> cd mikino_bin

# debug, unoptimized build
> cargo build
> ./target/debug/mikino -V
mikino 0.9.1

# release, optimized build
> cargo build --release
> ./target/release/mikino -V
mikino 0.9.1

Alternatively, you can ask cargo to install your local clone of the repo:

> clone https://github.com/OCamlPro/mikino_bin
> cargo install --path mikino_bin
> mikino -V
mikino 0.9.1