Code Monkey home page Code Monkey logo

cdgp's Introduction

CDGP

Counterexample-Driven Genetic Programming (CDGP) aims to close the gap between inductive program synthesis methods using heuristic search, more precisely genetic programming (GP), and (deductive) program synthesis from a formal specification of the problem. To ensure that a synthesized program meets the formal specification for all possible inputs, a logical proof must be conducted. In our implementation, for proving program correctnes we employ an external Satisfiability Modulo Theories (SMT) solver.

CDGP, similarly to the standard GP, utilizes evolutionary search to find the expected program. It starts with an empty set of test cases. After a new population is created and evaluated on the current set of tests, solutions are verified against the formal specification. If a program is correct, then the evolution ends and it is returned. If a program is incorrect, a counterexample input returned by an SMT solver is transformed to a test and added to the set of test cases. A parameter '--testsRatio' can be used to specify, what ratio of collected tests must be passed in order to apply verification.

Here is the conceptual diagram of CDGP, taken from the publication:

CDGP diagram

Dependencies

  • FUEL - main evolution engine.
  • SWIM - GP utilities for FUEL.
  • SyGuS - parser for the format used by the SyGuS ('Syntax Guided Synthesis') competition.

How to build

You can create a project in an IDE such as Eclipse or IntelliJ IDEA, or use SBT to automatically download all dependencies and produce a jar file.

How to run

A path to the benchmark (i.e. problem specification) is specified with '--benchmark' option.

CDGP to run requires a path to the SMT solver, which must be provided using the '--solverPath' option. CDGP was tested for the following open source SMT solvers:

Because of slight differences between them and different required parameters, a type of the solver must be provided as an argument of the '--solverType' option. The accepted values are: 'z3' (default), 'cvc4', 'other'. With the '--moreArgs' option you can provide additional solver parameters, which will be prepended to those preset for the given solver.

How to cite

K. Krawiec, I. Błądek, J. Swan, Counterexample-Driven Genetic Programming, Genetic and Evolutionary Computation Conference (GECCO), Berlin, July 17-19, 2017, DOI: http://dx.doi.org/10.1145/3071178.3071224.

cdgp's People

Contributors

iwob avatar kkrawiec 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.