Giter VIP home page Giter VIP logo

grasshopper's Introduction

GRASShopper

Version 0.6 pre BSD licensed Build Status

GRASShopper is an experimental verification tool for programs that manipulate dynamically allocated data structures. GRASShopper programs can be annotated with specifications expressed in a decidable specification logic to check functional correctness properties. The logic supports mixing of separation logic and first-order logic assertions, yielding expressive yet concise specifications.

The tool is released under a BSD license, see file LICENSE for details.

Installation Requirements

  • OCaml, version >= 4.07

  • OCaml Findlib, version >= 1.6.2

  • Z3, version >= 4.5, and/or

  • CVC4, version >= 1.5

GRASShopper has been tested on Linux, Mac OS, and Windows/Cygwin.

The easiest way to satisfy all OCaml-related installation requirements is to install the OCaml package manager OPAM and then execute the following commands

opam switch 4.07.0
opam install -y ocamlfind
opam install -y ocamlbuild
eval $(opam config env)

To run the tests (see below) you will also need the gtime, gdate commands, which can be installed in Mac OS using homebrew (brew install coreutils).

Installation Instructions

  • To produce native code compiled executables, run
./build.sh
  • Optional: to check whether the build succeeded, run
./build.sh tests

Usage

To run GRASShopper, execute e.g.

./grasshopper.native tests/spl/sl/sl_reverse.spl

The analyzer expects the Z3 (respectively, CVC4) executable in the path.

To see the available command line options, run

./grasshopper.native -help

Emacs Major Mode

GRASShopper provides an Emacs major mode for GRASShopper programs. The mode provides syntax highlighting and automatic indentation for the GRASShopper input programs (see tests/spl for examples).

To use the Emacs mode, copy the files in the directory emacs-mode to your site-lisp directory and add the following line to your .emacs file:

(load "spl-mode")

Optional: Flycheck minor mode

If you are using Emacs 24.1 or newer, we suggest to use the flycheck minor mode of the SPL emacs mode. To do so, copy the file emacs-mode/flycheck.el into your site-lisp directory. Additionally, you need to put the GRASShopper executable in your path and rename it to grasshopper. The mode supports on-the-fly syntax and type checking of SPL programs and provides keyboard shortcuts for verifying the program from inside buffers. See the documentation in the file spl-mode.el for details.

Note that we are using a patched version of the original flycheck mode by Sebastian Wiesner. The minor mode will not work correctly with the original version of the flycheck mode.

For more information visit http://cs.nyu.edu/wies/software/grasshopper

grasshopper's People

Contributors

dzufferey avatar ericox avatar janeeyre446 avatar kbansal avatar nrp364 avatar siddharth-krishna avatar thepup avatar wies avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.