Skip to main content

Some scripts to help manipulate Coq developments and minimize error-producing Coq code

Project description

Build Status PyPI version

coq-tools

Some scripts to help manipulate Coq developments

coq-bug-minimizer

Some scripts to help construct small reproducing examples of bugs.

The script find-bug.py is the main program; run find-bug.py -h to see the options. The script will ask you two questions: whether or not it successfully determined the error you're seeking to reproduce, and whether or not it created a regular expression which captures that error. After that, it will run without user input until it finishes.

Usage

Standard usage is to invoke with the buggy file name and the output (minimized) file name:

python find-bug.py BUGGY_FILE.v OUTPUT_FILE.v

You can add -v for a more verbose output.

If you are using a non-system version of Coq, you can pass --coqtop /path/to/coqtop and --coqc /path/to/coqc. If you pass -R . Foo to, say, coq_makefile, you can inform find-bug.py of this fact using -R . Foo.

Examples

There is an example in the examples directory. You can run run-example-01.sh to see how the program works. You can pass this script the arguments -v, -vv, or -vvv for different levels of verbosity. Look at the contents of run-example-01.sh to see how to invoke the program.

Known Bugs

Note that this program can fail in mysterious ways when run using Windows Python 2.7 under cygwin; it seems that buffering and stdin and stderr and Popen are screwed up. To work around this, there is a coqtop.bat file which is chosen as the default coqtop program. Somehow running via a .bat file makes things work. You will probably have to use a similar wrapper if you use a custom coqtop executable.

Additionally, quirks in module name resolution can result in inlining failures (see https://github.com/JasonGross/coq-tools/issues/16), and global side effects of Require can also result in failures (see https://github.com/JasonGross/coq-tools/issues/41).

Publications

minimize-requires

The script minimize-requires.py can be used to remove unneeded Require statements. Run minimize-requires.py -h to see the options.

Usage

Standard usage is to run

minimize-requires.py some-file1.v some-file2.v ... --in-place .bak

or, if you want to minimize an entire project,

minimize-requires.py --all -f _CoqProject

(you can add --in-place .bak if you want to save backup files)

proof-using-helper

The script proof-using-helper.py is the main program; run proof-using-helper.py -h to see the options.

Usage

Standard usage is to invoke with the any -R arguments passed to Coq, and either pipe the output of make quick with Global Set Suggest Proof Using on, to this script, or to give it a file containing said output.

make quick -j -k | tee -a proof_using.log
python /path/to/proof-using-helper.py proof_using.log

You can add -v for a more verbose output.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

coq_tools-0.0.44.tar.gz (131.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

coq_tools-0.0.44-py3-none-any.whl (143.4 kB view details)

Uploaded Python 3

File details

Details for the file coq_tools-0.0.44.tar.gz.

File metadata

  • Download URL: coq_tools-0.0.44.tar.gz
  • Upload date:
  • Size: 131.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for coq_tools-0.0.44.tar.gz
Algorithm Hash digest
SHA256 f9fc1a4d6f0c1ae4903e078058462d582b71d44471b31f45fda2f30fd5cbed11
MD5 2aeac6f0baa0e80cd2f72573433e2f53
BLAKE2b-256 170d6e556329db692b8d9e5f5a3c6265cd19189720003f2853d4de7adca318b6

See more details on using hashes here.

Provenance

The following attestation bundles were made for coq_tools-0.0.44.tar.gz:

Publisher: publish.yml on JasonGross/coq-tools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file coq_tools-0.0.44-py3-none-any.whl.

File metadata

  • Download URL: coq_tools-0.0.44-py3-none-any.whl
  • Upload date:
  • Size: 143.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for coq_tools-0.0.44-py3-none-any.whl
Algorithm Hash digest
SHA256 6258f8ee70b8b27923afc09fcae4b70634094e72e35d35ac5b01821087a84bcf
MD5 22aaf9c39baa3517906e5d67a0bb87a2
BLAKE2b-256 c1929bcf64f2a67139931e76d7c1015e9e0b98694df80017ff3efc71ca0037f5

See more details on using hashes here.

Provenance

The following attestation bundles were made for coq_tools-0.0.44-py3-none-any.whl:

Publisher: publish.yml on JasonGross/coq-tools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page