Download and uncompress a trace:
wget https://holtrace.cr.yp.to/prime.50.gz
gunzip prime.50
Start a HOL Light session (not reusing a pre-HOLTrace session):
hol.sh
In that session, verify the trace:
holtrace_restore !theorems "prime.50";;
The expected outputs are many lines that start matching
and then the following, with more lines in place of ...
:
type IDs: 597
term IDs: 176388
theorem IDs: 91115
inference IDs: 91115
typedef IDs: 6
tag / 0.000000 seconds 327 occurrences
...
tag t 0.000000 seconds 91115 occurrences
total 0.000000 seconds
val it : unit = ()
You can also try holtrace_restore_time
instead of holtrace_restore
;
then there will be actual timings instead of 0.000000 seconds
.
Inspect the restored ONE_OR_PRIME
theorem:
holtrace_restore_name2thm "ONE_OR_PRIME";;
The expected output is the following:
val it : thm =
|- forall p.
p = 1 \/ prime p <=> (forall n. n divides p ==> n = 1 \/ n = p)
Check that the restored theorem matches the theorem from the HOL Light standard library:
equals_thm it ONE_OR_PRIME;;
The expected output is val it : bool = true
.
Outside the HOL Light session, verify the same trace from the command line:
./holtrace-verify-simple < prime.50
./holtrace-verify < prime.50
The expected output is
verified 2399423 bytes, 359543 lines, 597 types, 176388 terms, 91115 infs, 91115 thms, 6 typedefs
from holtrace-verify-simple
,
and the same from holtrace-verify
.
Check that the trace is already pruned
down to what is needed for the ONE_OR_PRIME
theorem:
./holtrace-prune ONE_OR_PRIME < prime.50 | cmp - prime.50
The expected output is nothing.
Convert the trace to a TeX file:
./holtrace2tex < prime.50 > prime.tex
xelatex prime
The last theorem on the last page of the resulting prime.pdf
is expected to say the following:
"Theorem (ONE_OR_PRIME). Fix p ∈ ℕ. Then p = 1 or p is prime if and only if we have n = 1 or n = p for each n ∈ ℕ such that n divides p."
Test some libraries used by the Python scripts:
./type.py
./term.py
./ptparse.py
The expected outputs are test type
and test term
and test ptparse
.
Try the built-in suite of test traces:
./testtraces < testtraces.in | cmp - testtraces.exp
This takes 22 seconds
on rome1
.
The expected output is nothing.
Version: This is version 2025.06.17 of the "Test" web page.