GithubHelp home page GithubHelp logo

srtool's People

Contributors

adraghici avatar costika1234 avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

srtool's Issues

Advanced analysis features

To score a very high mark for Part 2 of the coursework you will need to implement some innovative features to make your tool perform especially well. You can be creative in this, but here are some ideas (in no particular order).
• To find bugs more effectively you could try implementing a simple dynamic symbolic execution algo- rithm to explore individual program paths individually.
• To find bugs you could also try compiling a Simple C program into a C program, and running the C program with random inputs in an attempt to trigger assertion failures. You would have to find a suitable way to represent non-C language features.
• To boost verification, you could implement some strategies for guessing candidate loop invariants to be used as input to Houdini, because the input program might not contain sufficient loop invariants and candidate loop invariants to enable verification.
• For verification, you could implement sound bounded model checking (with unwinding assertions).
• You could experiment with running a variety of analyses in parallel, returning the first useful result that
is returned by an analysis.

Implement loop summarisation

Implement loop summarisation, so that your tool can successfully verify single-procedure programs for which sufficient non-candidate loop invariants are provided.

Failing official tests

Failing Tests (39):
SRT :: tests/official/part2/correct/part2_correct_11.c
SRT :: tests/official/part2/correct/part2_correct_13.c
SRT :: tests/official/part2/correct/part2_correct_143.c
SRT :: tests/official/part2/correct/part2_correct_17.c
SRT :: tests/official/part2/correct/part2_correct_23.c
SRT :: tests/official/part2/correct/part2_correct_29.c
SRT :: tests/official/part2/correct/part2_correct_35.c
SRT :: tests/official/part2/correct/part2_correct_39.c
SRT :: tests/official/part2/correct/part2_correct_41.c
SRT :: tests/official/part2/correct/part2_correct_55.c
SRT :: tests/official/part2/correct/part2_correct_59.c
SRT :: tests/official/part2/correct/part2_correct_63.c
SRT :: tests/official/part2/correct/part2_correct_79.c
SRT :: tests/official/part2/correct/part2_correct_85.c
SRT :: tests/official/part2/correct/part2_correct_89.c
SRT :: tests/official/part2/correct/part2_correct_9.c
SRT :: tests/official/part2/incorrect/part2_incorrect_107.c
SRT :: tests/official/part2/incorrect/part2_incorrect_11.c
SRT :: tests/official/part2/incorrect/part2_incorrect_119.c
SRT :: tests/official/part2/incorrect/part2_incorrect_13.c
SRT :: tests/official/part2/incorrect/part2_incorrect_15.c
SRT :: tests/official/part2/incorrect/part2_incorrect_17.c
SRT :: tests/official/part2/incorrect/part2_incorrect_21.c
SRT :: tests/official/part2/incorrect/part2_incorrect_23.c
SRT :: tests/official/part2/incorrect/part2_incorrect_25.c
SRT :: tests/official/part2/incorrect/part2_incorrect_31.c
SRT :: tests/official/part2/incorrect/part2_incorrect_33.c
SRT :: tests/official/part2/incorrect/part2_incorrect_35.c
SRT :: tests/official/part2/incorrect/part2_incorrect_37.c
SRT :: tests/official/part2/incorrect/part2_incorrect_43.c
SRT :: tests/official/part2/incorrect/part2_incorrect_45.c
SRT :: tests/official/part2/incorrect/part2_incorrect_49.c
SRT :: tests/official/part2/incorrect/part2_incorrect_61.c
SRT :: tests/official/part2/incorrect/part2_incorrect_63.c
SRT :: tests/official/part2/incorrect/part2_incorrect_65.c
SRT :: tests/official/part2/incorrect/part2_incorrect_69.c
SRT :: tests/official/part2/incorrect/part2_incorrect_81.c
SRT :: tests/official/part2/incorrect/part2_incorrect_9.c
SRT :: tests/official/part2/incorrect/part2_incorrect_91.c

Implement the Houdini algorithm (with no candidate pre/post conditions)

Implement the Houdini algorithm for procedures with loops, initially assuming that candidate pre/post- conditions are not provided (so that the only candidates in a program are candidate loop invariants). Your tool should then be capable of proving correctness of loops for which the given Houdini candidates provide at least the invariants needed for verification.

Implement procedure summarisation

Implement procedure summarisation, so that your tool can successfully verify multi-procedure programs for which sufficient non-candidate loop invariants, preconditions and postconditions are provided.

Implement unsound bounded model checking

Implement unsound bounded model checking, giving your tool an option for controlling the loop un- winding depth, so that your tool can find bugs in incorrect programs with loops.

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.