CHECKPROOF(1)

πŸ’– CHECKPROOF(1) πŸ’–

okay bestie, buckle up, we're doing the checkproof page, a User Commands situation, and honestly? it's giving "I will absolutely tell you whether your proof slaps, with caveats." let's get into it πŸ¦‹


✨ NAME ✨

checkproof β€” the manual page for checkproof 3.5.1, yes the whole page is basically named after itself, iconic behavior honestly πŸ‘‘

✨ SYNOPSIS ✨

checkproof [options] [files]

✨ DESCRIPTION ✨

so. checkproof 3.5.1, right? what it does is it reads an UPCL2 protocol and then goes and verifies the inferences using one of a whole variety of external provers. like it outsources the hard part to other little programs, which is so real of it πŸ’…

heads up bestie, this is a _very_ experimental program 😭

here's the honest truth. passing checkproof does indicate that all inferences in an UPCL2 protocol are correct β€” meaning the conclusion is logically implied by the premisses. but that whole thing comes with a giant asterisk, and the asterisk is: if you believe that the transformation process and the used prover are correct. so yeah, it's correct pending your faith in the machinery πŸ™ˆ

also, and this is the part that takes me out, checkproof will e.g. gladly show that the empty proof protocol does not contain any buggy steps. like. congratulations, zero steps, zero bugs, we ate πŸŽ€

now the sad part. if a proof protocol fails to pass this test, the proof may still be correct. let me say that again because it matters: failing β‰  wrong proof, fr fr.

why? multiple reasons:

  • incomplete strategies β€” and this applies in particular to Otter 😭
  • build-in limits (Otter again, bestie)
  • bugs in the prover β€” potentially all systems, but this was observed in SPASS 0.55 πŸ’€

so a prover might just fail to verify a step that is objectively correct. not its fault, not your fault, the vibes are simply off.

and it gets more real: because of the different strategies, calculi, and in particular the different term orderings chosen by the systems, a single UPCL2 inference may result in a proof problem that is very hard to verify for other provers. so one step β†’ one problem β†’ some prover is fighting for its life 🌸

but!! if a proof step is rejected by more than one system, you should probably look at this step in detail. that's your red flag moment, bestie πŸ’…

🌈 Options 🌈

  • -h, --help β€” Print a short description of program usage and options. the classic "what does this do" button 🫢
  • --version β€” Print the version number of the program. number reveal πŸ’…
  • -v, --verbose[=<arg>] β€” Verbose comments on the progress of the program. the short form, or the long form without the optional argument, is equivalent to --verbose=1. so no-arg = 1, capiche ✨
  • -o <arg>, --output-file=<arg> β€” Redirect output into the named file. bye bye terminal, hello file πŸŽ€
  • -s, --silent β€” Equivalent to --output-level=0. shhh 🀫
  • -l <arg>, --output-level=<arg> β€” Select an output level, and yeah, greater values imply more verbose output. rn the levels are:
    • level 0 only prints the result
    • level 1 prints inference steps as they are verified
    • level 2 prints prover commands issued
    • level 3 prints all prover output (which may be very little) 😭
  • -p <arg>, --prover-type=<arg> β€” Set the type of the prover to use for proof verification. this determines problem syntax, options, and check for success. supported options at are 'E' (the default), 'Otter', 'SPASS', and 'scheme-setheo' (not yet implemented πŸ™ˆ). SPASS support is only tested with SPASS 0.55 and may fail if the problem contains identifiers reserved by SPASS. and there have been some supple syntax changes, so more recent SPASS versions will probably fail as well. so like, good luck with SPASS bestie πŸ’€
  • -x <arg>, --executable=<arg> β€” Give the name under which the prover can be called. if no executable is given, checkproof will guess a name based on the type of the prover. and this guess may be way off! πŸ“
  • -t <arg>, --prover-cpu-limit=<arg> β€” Limit the CPU time prover may spend on a single step. Default is 10 seconds. ⏱️

πŸ› REPORTING BUGS πŸ›

Report bugs to <schulz@eprover.org>. and if you can, pretty please include the following:

  • The version of the package as reported by eprover --version.
  • The operating system and version.
  • The exact command line that leads to the unexpected behaviour.
  • A description of what you expected and what actually happened.
  • If possible all input files necessary to reproduce the bug.

Copyright 1998-2026 by Stephan Schulz, schulz@eprover.org, and the E contributors (see DOC/CONTRIBUTORS).

This program is a part of the distribution of the equational theorem prover E. You can find the latest version of the E distribution as well as additional information at http://www.eprover.org

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program (it should be contained in the top level directory of the distribution in the file COPYING); if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

We welcome bug reports and even reasonable questions. if the prover behaves in an unexpected way, please include the following information:

  • What did you observe?
  • What did you expect?
  • The output of eprover --version
  • The full commandline that lead to the unexpected behaviour
  • The input file(s) that lead to the unexpected behaviour

Most bug reports should be send to <schulz@eprover.org>. Bug reports with respect to the HO-version should be send to or at least copied to <jasmin.blanchette@gmail.com>. Please remember that this is an unpaid volunteer service 🫢 (be nice, they're doing this for free, no cap)

The original copyright holder can be contacted via email or as

Stephan Schulz
DHBW Stuttgart
Fakultaet Technik Informatik
Lerchenstrasse 1
70174 Stuttgart
Germany

and that's the whole thing, bestie πŸŽ€ this was checkproof 3.5.1, from the August 2026 era of the E distribution, and honestly it ate πŸ’… go verify some inferences, or don't, the empty protocol has no bugs either way βœ¨πŸ¦‹

πŸ“¦ where this page comes from