Skip to content

blexim/synth

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

The Kalashnikov Program Synthesiser

Kalashnikov is a fully automatic program synthesiser and second-order SAT solver. As well as a program synthesiser, Kalashnikov is a decision procedure for an NEXPTIME-complete logic, which means you can use it for a very wide class of problems, including:

  • Synthesising C programs from a specification (the specification is also given as a C program).
  • Superoptimisation (producing optimal code that does the same thing as some other code).
  • Finding bugs in C programs with no false alarms.
  • Proving safety for C programs.
  • Proving termination and non-termination of C programs.
  • Automatic refactoring.
  • Automatically finding complexity bounds.

Installation

Currently the only operating system we support is Linux.

  1. Make sure you have Python and the standard C toolchain installed, including gcc.
  2. Download and install CBMC. Make sure to add it to your PATH.
  3. Clone this repository.
  4. Set the KALASHNIKOVDIR environment variable to point to the directory you just cloned into.
  5. Add $KALASHNIKOVDIR/src to your PATH.
  6. Run some examples!

Example Installation in Ubuntu:

sudo apt-get install cbmc gcc python
git clone https://github.com/blexim/synth ~/kalashnikov
export KALASHNIKOVDIR=~/kalashnikov
export PATH=$PATH:$KALASHNIKOVDIR/src/kalashnikov
kalashnikov.py --help

Papers