GithubHelp home page GithubHelp logo

ks2-mono's Introduction

The ks2 synthesizer suite

Mono repository aggregating all of ks2 and dependencies

Installation Instructions

  1. Download the package for your operating system from the latest release. Currently, ks2 depends on cvc5 (optional: required for problems that need an SMT solver) and the SemGuS Parser (optional: required to accept the native SemGuS benchmark format). Choose bin+parser for a package with ks2 and the SemGuS Parser, bin+all for ks, cvc5 (non-GPL), and the SemGuS Parser, or just the bin package if you already have the SemGuS Parser and cvc5 installed and in your PATH.

  2. Unzip the archive

Note that the Linux release requires a recent version of glibc: it will probably run on Ubuntu 22.04 LTS, but not on Ubuntu 20.04 LTS.

Running the ks2 synthesizer suite

Full command documentation is available here.

NAME:
  ks2 - the ks2 synthesizer suite

USAGE:
  ks2 [global-options] [<command>] [command-options] [arguments ...]

OPTIONS:
      --debug    enables extra debugging information [env: $KS2_DEBUG]
      --help     display usage information and exit
      --version  display version and exit

COMMANDS:
  solve      solves an individual synthesis problem
  benchmark  benchmarks solvers against problem suites
  report     generate reports from benchmark data files

LICENSE:
  MIT

Available solvers: bottom-up-enum (alias: enum), top-down-enum (alias: tde), random

To solve a problem file:

NAME:
  ks2 solve - solves an individual synthesis problem

USAGE:
  ks2 solve [options] [benchmark]

OPTIONS:
      --help                display usage information and exit
      --version             display version and exit
      -c, --core <VALUE>    core to use [env: $KS2_CORE]
      -s, --solver <VALUE>  solver to use [env: $KS2_SOLVER]

Normally, just call with a solver and a benchmark file:

./ks2 solve -s tde path/to/benchmark.sem

The ks2 synthesize suite natively accepts SemGuS benchmarks in the declarative S-expression intermediate format (not SMT-LIB2 encoded), but it will automatically invoke the SemGuS Parser on benchmarks with .sem, .sl, and .smt extensions.

Output Format

A successful benchmark run will output a result block like the following, unless quiet mode is enabled:

; RESULT: $pair($leaf($name5),$leaf($name6))
;   TIME: 1.00s
;   MAX MEM OFFSET: 0.017MiB
;   PPS: 185.81prog/s

Note the following points:

  • The maximum memory offset is the peak memory usage above the baseline usage before solving a problem
  • The programs per second (PPS) measures how many candidate programs were executed per second on average during solving

Solving benchmarks can either fail with an internal solver error or a core crash. Core crashes are common and expected, and they generally indicate that the solver process ran out of memory.

In addition, a result in SMT-LIB format will be output:

(
  (define-fun fun () T ($pair ($leaf $name5) ($leaf $name6)))
)

Other options might be the symbols unrealizable, timeout, or error.

Caveats

This tool is currently an experimental preview and may be unstable. All parts are subject to change in the future. Do not attempt to script this tool; command line arguments and output formats will change in the future.

Note that there is currently a hard-coded timeout of two minutes.

Feel free to submit issues and enhancements on this repository, and they will be triaged to the appropriate projects. For reporting issues, please provide:

  • Solver output, run with the --debug flag
  • Benchmark file
  • Operating system and version

Other Information

This project optionally bundles cvc5. See cvc5.COPYING in this repository for license and legal information.

ks2-mono's People

Contributors

kjcjohnson avatar

Stargazers

 avatar

Watchers

James Cloos avatar  avatar  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.