Mono repository aggregating all of ks2 and dependencies
-
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+parserfor a package with ks2 and the SemGuS Parser,bin+allfor ks, cvc5 (non-GPL), and the SemGuS Parser, or just thebinpackage if you already have the SemGuS Parser and cvc5 installed and in yourPATH. -
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.
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.
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.
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
--debugflag - Benchmark file
- Operating system and version
This project optionally bundles cvc5. See cvc5.COPYING in this repository for
license and legal information.