Git Product home page Git Product logo

crest-z3's Introduction

Thanks for downloading and trying out CREST.

You can get the latest version of CREST, as well as news and
announcements at CREST's homepage: http://code.google.com/p/crest.


PREPARING A PROGRAM FOR CREST --

To use CREST on a C program, use functions CREST_int, CREST_char,
etc., declared in "crest.h", to generate symbolic inputs for your
program.  For examples, see the programs in test/.

For simple, single-file programs, you can use the build script
"bin/crestc" to instrument and compile your test program.

CREST can be used to instrument multi-file programs, too --
instructions will be added soon.  In the meantime, you can take a look
at an example, instrumented form of grep-2.2, available at CREST's
homepage.  Contact [email protected] for details.


RUNNING CREST --

CREST is run on an instrumented program as:
    bin/run_crest PROGRAM NUM_ITERATIONS -STRATEGY

Possibly strategies include: dfs, cfg, random, uniform_random, random_input.
Some strategies take optional parameters.

Example commands to test the "test/uniform_test.c" program:
    cd test
    ../bin/crestc uniform_test.c
    ../bin/run_crest ./uniform_test 10 -dfs

This should produce output roughly like:
    ... [GARBAGE] ...
    Read 8 branches.
    Read 13 nodes.
    Wrote 6 branch edges.

    Iteration 0 (0s): covered 0 branches [0 reach funs, 0 reach branches].
    Iteration 1 (0s): covered 1 branches [1 reach funs, 8 reach branches].
    Iteration 2 (0s): covered 3 branches [1 reach funs, 8 reach branches].
    Iteration 3 (0s): covered 5 branches [1 reach funs, 8 reach branches].
    Iteration 4 (0s): covered 7 branches [1 reach funs, 8 reach branches].
    GOAL!
    Iteration 5 (0s): covered 8 branches [1 reach funs, 8 reach branches].

NOTE: run_crest and crestc currently leave a lot of files lying
around, some of which are temporary and some of which must be kept.
In particular, "cfg_branches" and "branches" are output by the
instrumentation process and are needed to run run_crest, and run_crest
produces "coverage", a list of the ID's of all covered branches.


SETUP --

CREST depends on Yices, an SMT solver tool and library available at
http://yices.csl.sri.com/.  To build and run CREST, you must download
and install Yices, and change YICES_DIR in src/Makefile to point to
Yices location.

CREST uses CIL to instrument C programs for testing.  A modified
distribution of CIL is included in directory cil/.  To build CIL,
simply run "configure" and "make" in the cil/ directory.

Finally, CREST can be built by running "make" in the src/ directory.


LICENSE --

CREST is distributed under the revised BSD license.  See LICENSE for
details.

This distribution includes a modified version of CIL, a tool for
parsing, analyzing, and transforming C programs.  CIL is written by
George Necula, Scott McPeak, Wes Weimer, Ben Liblit, and Matt Harren.
It is also distributed under the revised BSD license.  See cil/LICENSE
for details.

crest-z3's People

Contributors

dqx avatar heechul avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

crest-z3's Issues

Crest-Z3 does not allow for the unary minus operator

This fork of Crest does not allow for the unary minus operator. For instance, the following constraint will crash Crest:

if (x_x_x == -8) {
printf("here");
}

Subtraction seems to be allowed, but any time the unary minus operator appears, Crest crashes.

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.