Skip to content

Merge PFT proof replay into master - #18

Merged
dnezam merged 28 commits into
masterfrom
bot/opus/pft-replay
Oct 27, 2026
Merged

dnezam merged 28 commits into
masterfrom
bot/opus/pft-replay

Conversation

@sequent-bot

@sequent-bot sequent-bot Bot commented Oct 27, 2026 •

Copy link
Copy Markdown

Proposes merging the pft branch, the PFT v1 proof-trace replayer, into master, so that replaying HOL4-produced proof traces in Candle lives on the main line rather than on a long-lived branch.

This is a plain merge of pft into current master, with no conflicts and no changes to the pft work itself: the files under candle/pft/ are byte-identical to pft's. Against master the net change is four new files:

  • candle/pft/replay.ml: the replayer (reads a binary PFT v1 trace with the candle ruleset and replays it through Candle's kernel, including compute commands; replay_all replays several files in order, keeping saved theorems between them)
  • candle/pft/pft.ml: loads the kernel and early HOL Light files needed for replay, in place of hol.ml
  • candle/pft/misc.ml, candle/pft/extract_footer: helpers

No HOL Light file, candle/kernel.ml, ocaml.ml or the FFI patch changes: the ocaml.ml and basis_ffi.c.patch additions pft made were already merged into master with #10. Everything new stays inside candle/pft/, so syncs with upstream HOL Light are unaffected. History is a merge, so the pft commits keep their authorship.

As on pft, loading replay.ml ends by replaying candle/pft/merged.candle.pft.bin (paths are relative to the repository root).

Checking. No local build; the repository's regression workflow (./test.sh) checks that the merged tree still builds and passes the existing suite. The replayer itself isn't exercised by that workflow.

🤖 Generated with Claude Code

dnezam and others added 28 commits March 26, 2026 13:06
Mostly corresponds to CakeML's Word8Array.
In particular before indexing into arrays or calling Candle functions which
could fail. That way, we have an easier time pinpointing where the failure
happened.
Some of the issues were due to HOL Light shadowing kernel definitions such as
new_specification. We avoid this issue by using qualified names.

pft.ml is essentially a prefix of hol_lib.ml that does not include any (HOL)
definitions. This allows us to replay proof traces that define constants such as
bool's T.
As discussed on Zulip, the spec is updated and the variables will appear first
in the tuple list representing substitutions.
Assisted-by: Claude:claude-opus-4-6
Replay works. At the end we run into an error, since it is trying to interpret
the footer as another command.
Brings the binary PFT v1 replayer (candle/pft/) onto current master.
The branch only adds files under candle/pft/; the ocaml.ml and FFI
additions it needed are already on master.

Bot: opus (Claude Opus 5.5)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@sequent-bot
sequent-bot Bot force-pushed the bot/opus/pft-replay branch from bfa064b to 379758f Compare October 27, 2026 10:27
@xrchz
xrchz marked this pull request as ready for review October 27, 2026 10:52
@dnezam
dnezam merged commit 646e3a2 into master Oct 27, 2026
1 check passed
@dnezam
dnezam deleted the bot/opus/pft-replay branch October 27, 2026 11:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant