# Lithium examples

# Binaries

This folder contains binaries `XXX` and associated `XXX.txt` testcases.

* Calling the former without arguments will generate the latter.
* `XXX input` will generally output "INTERESTING" if the binary finds the
  input file interesting. That's the case for XXX.txt.

## Variants of test cases

* best-case: interesting testcase that can be reduced in best time by lithium.
* clustered-monotonic-case: interesting monotonic testcase that is reduced to a
  C-clustered testcase by lithium.
* wost-monotonic-case: interesting monotonic testcase that is reduced in worst
  time by lithium.
* worst-case: interesting testcase that is reduced in worst time by lithium.
* semicolon-separators: interesting testcase that uses semi-colon separators.

## Variants of binaries

* hang: hangs on interesting testcases.
* crash: crashes on interesting testcases.
* non-deterministic: if the input interesting, "INTERESTING" is only output with
  some low probability.
* captcha-interesting: before checking for interestingness, this will ask the
  user to reply to a simple captcha in via the command line interface.
* non-deterministic-hang: will hang with some high probability before trying to
  determine whether the input is interesting.

## Helpers

* manual.py: interestingness script for Lithium that asks the user to manually
  check whether the testcase is interestingness.
* repeat.sh: bash script to repeat several times a command.
* parallelize.sh: same but do it in parallel and kill processes after a timeout.
