al-Kalam Institute · Formal Reasoning Lab
at.alkalam.org
al-Kalam

Experiment · The model divides, the provers prove, Rocq checks

Neural-symbolic theologian

Two versions · A small model we trained · Claude, with no further training · Preliminary results

A small trained model divides a goal into subgoals, automated provers prove them, and Rocq checks every step.

This page reports two versions of our neural-symbolic prover, Kalima. The first uses a small model that we trained for the task; the second uses Claude, a large language model, with no further training (jump to its results). For each: what it is, what it proved on its own, and what it has not yet proved. Every proof listed here can be downloaded with its Rocq check output; proofs that use only standard Rocq can also be re-checked in the runner at the bottom of the page.

How it works

HyperTree Proof Search

The prover follows the design of HyperTree Proof Search (HTPS): it splits a goal into smaller subgoals and proves them in turn.

  1. Divide. For the current goal, the model suggests eight possible ways to divide it (Rocq tactics): a case split, an intermediate statement to prove first, an induction, or a witness.
  2. Check. Rocq runs each step. A step either fails, or succeeds and leaves zero or more new subgoals.
  3. Prove the leaves. Each new subgoal is handed to the automated provers. A subgoal they prove is closed; one they cannot prove is divided further.
  4. Search. A goal is proved when one of its steps leaves no subgoals, or when every subgoal that step leaves is proved. The most promising open subgoals are expanded first.
  5. Verify. The finished proof is assembled into one file and compiled by Rocq from scratch. It counts only if it compiles and Print Assumptions shows nothing beyond the declared starting points and excluded middle.

The automated provers are Rocq's standard automation (firstorder, tauto, congruence, assumption) and, from round 4, CoqHammer, which sends a goal to the external provers Vampire and E and rebuilds any proof they find as Rocq tactics (sauto, sfirstorder, fcrush). The model's role is to divide the goals that the provers cannot prove by themselves.

The two arguments

What is being proved

The benchmark is the twenty steps of two classical arguments of Islamic theology for a first, uncaused cause — each concluding that something exists whose existence is from its own nature, received from nothing else.

  1. Dalīl al-kalima — a first-cause argument. Whatever receives its existence receives it from another. A thing cannot give existence to itself, a chain of giving cannot form a circle, and it cannot regress without end — what receives existence does not, in turn, give it. So the chain must end in a first cause that exists of itself and is given existence by nothing. (Seven steps.)
  2. Dalīl al-imkān — the argument from contingency (Ibn Sīnā). Every existent is either necessary in itself or merely possible in itself, and whatever is possible needs a cause. The aggregate of all possible things is itself possible, so it too needs a cause — one that can be neither a member of the aggregate nor the aggregate itself. That cause must therefore be a Necessary Existent, existing by its own nature. (Thirteen steps.)

Each step below is one of these twenty claims, written in Rocq from a small declared vocabulary and a few approved premises — nothing about God, time, or space is assumed. The prover is asked only to derive each step from the ones before it; the replay shows how.

Watch it search

Version 1 · small model · every step replayed

This diagram replays the prover's recorded search on each test task. Each rectangle is a goal, exactly as Rocq displayed it; each rounded label is a step that was tried on that goal, coloured by who proposed it, and it links to the subgoals it left. Press Play to watch the search unfold step by step, or select any goal or step to read it in full.

Select a stage to see its role; the matching parts of the search are highlighted.

Loading the recorded search…

 

100%

Recorded from the small model’s runs: round 5 on the first eight steps, round 6 on the twelve further steps, and round 4 for the proof by cases. A goal reached by two different steps is drawn once, under the step that reached it first; a dashed link marks the other. Failed attempts by the automation on new subgoals were counted but not recorded one by one, so they do not appear. The data behind this diagram.

What the model never saw

Hold-out rule

The proofs of dalīl al-kalima and dalīl al-imkān are the test. They were never used as training data, prompts, or examples. At test time the model sees only the goal that Rocq displays: the vocabulary, the definitions, the postulates stated in the theorem, and the statement to be proved. The eight test tasks are listed, without proofs, in heldout_tasks.v.

Version 1: a small model we trained

Tools and code
  • Model: Qwen2.5-Coder-0.5B-Instruct, a small pretrained code model (0.5 billion parameters).
  • Fine-tuning: low-rank adaptation (LoRA, rank 64) with PyTorch, Hugging Face Transformers and PEFT, on one Apple M2 laptop.
  • Stage 1 (round 0): 20,000 goal-to-tactic pairs from CoqGym, a corpus of proofs from published Coq projects (Yang and Deng, 2019).
  • Stage 2 (rounds 1–2), expert iteration: the prover attempted first-order problems generated at random in an abstract vocabulary (predicates P, Q, R; relations E, F), each confirmed valid by the Z3 solver, and was retrained on the steps of its own Rocq-checked proofs.
  • Round 3: added 514 examples of proposing an intermediate lemma (assert) that splits a hard goal into two easier ones. A learned "critic" was also tried and dropped, because it made the search worse.
  • Round 4: retrained on 13,738 dividing steps only (case splits, intermediate statements, induction, witnesses), drawn from CoqGym, from the model's own proofs, and from the round-3 lemma examples. From this round the model proposes only dividing steps, and CoqHammer proves the leaves.
  • Round 5: added 1,200 generated problems in abstract symbols about chains of a relation, each solved by first stating a general claim about every chain and then proving it by induction. No problem has the form of premise 3 (a chain cannot return to its start) or of premise 1. An intermediate statement φ that the model proposes is also tried as a case split (φ or not φ).
  • Checking: Rocq 9.3.0 for every step and the final proof (rounds 0–3); Rocq 9.2.0 with CoqHammer 1.3.3 (rounds 4–5), since CoqHammer is not yet released for 9.3; Z3 for validating the generated training problems.

The code is published below. The trained model weights and the CoqGym-derived training data are not, because CoqGym bundles third-party projects under their own licenses.

Version 1: results on the two arguments

First eight steps, then all twenty

Each column is one way of searching for the proof. Symbolic only uses a fixed, hand-written list of steps instead of a model. The round-1 and round-3 columns use the trained model with Rocq's standard automation. CoqHammer alone is given each task directly, with no model. The last column is the current prover: the round-5 model divides the goals and CoqHammer, with the standard automation, proves the leaves. Each column is a single run.

TaskStatementSymbolic onlyUntrained modelRound-1 modelRound-3 modelCoqHammer aloneRound-5 model + CoqHammer
Dalīl al-kalima, premise 2Self-creation is impossible: nothing gives existence to itself.ProvedProvedProvedProvedProvedProved
Dalīl al-kalima, premise 4 (key step)What receives existence does not give existence to anything; this is the step that rules out an infinite regress of givers.ProvedProvedProvedProvedProvedProved
Dalīl al-kalima, premise 3Circular creation is impossible: no chain of existence-giving returns to where it started.Not provedNot provedNot provedNot provedNot provedNot proved
Dalīl al-kalima, premise 1The four possibilities (self-creation, circle, infinite regress, first cause) are the only ones.Not provedNot provedNot provedNot provedNot provedNot proved
The universe is causedSomething in the universe has its existence through another.ProvedNot provedProvedProvedProvedProved
Dalīl al-kalima, the first causeIf the universe has its existence through another, it has a first cause that exists of itself and is given existence by nothing.ProvedNot provedProvedProvedProvedProved
Dalīl al-imkān, step 3A possible existent needs a cause.ProvedNot provedNot provedProvedProvedProved
Dalīl al-imkān, conclusion (shorter route)A Necessary Existent exists.Not provedNot provedNot provedNot provedNot provedProved

Reading the table. The current prover proves six of the eight tasks in a single run. One of the six, the conclusion of dalīl al-imkān by the shorter route, is proved by no other column; CoqHammer alone does not prove it, either directly or after unfolding the definitions and taking the classical step. The other five are also proved by the hand-written list and by CoqHammer alone, so on those the model has not yet proved anything the existing tools could not. The higher-order prover Leo-III also proves the dalīl al-imkān conclusion directly; see the dalīl al-imkān report.

Budgets. Rounds 3 and 5: 256 to 512 expansions and 15 minutes per task; the other model columns: 64 expansions and 3 minutes. The hand-written list, given classical case splits and a larger budget (1,024 expansions, 10 minutes), still proves the same five.

Why two remain unproved. Premises 1 and 3 of dalīl al-kalima need reasoning over chains of causes of any length. That reasoning works only if one first states and proves a more general claim about every chain, and then applies it. The round-5 model now proposes statements about chains and generalizes its hypotheses before induction, but it has not yet proposed the general claim these premises need. Training aimed at this gap is under way. These results are very preliminary.

All twenty steps · round-6 model with CoqHammer · one run

The first test above covered eight of the twenty steps of the two arguments. In a second test, the round-6 model attempted all twenty. It proved ten. The four new steps it proved are the four that CoqHammer also proves without a model; it did not prove the route of dalīl al-imkān through the aggregate (steps 6 to 12), or premises 1 and 3 of dalīl al-kalima. Its searches on all twenty steps can be replayed in Watch it search.

StepStatementCoqHammer aloneRound-6 model + CoqHammer
Dalīl al-kalima, premise 1The four possibilities are the only ones.Not provedNot proved
Dalīl al-kalima, premise 2Nothing gives existence to itself.ProvedProved
Dalīl al-kalima, premise 3No chain of existence-giving returns to where it started.Not provedNot proved
Dalīl al-kalima, premise 4 (key step)What receives existence does not give existence to anything.ProvedProved
Dalīl al-kalima, the first causeIf the universe has its existence through another, it has a first cause that exists of itself.ProvedProved
The universe is causedSomething in the universe has its existence through another.ProvedProved
Dalīl al-kalima, the conclusion without the “if”Something in the universe has a giver of existence that is necessary and depends on nothing.Not provedNot proved
Dalīl al-imkān, step 1Every existent is necessary or possible in itself, and not both.ProvedProved
Dalīl al-imkān, step 2The non-existence of what is necessary in itself is not possible.ProvedProved
Dalīl al-imkān, step 3A possible existent needs a cause.ProvedProved
Dalīl al-imkān, step 4Nothing gives existence to itself.ProvedProved
Dalīl al-imkān, step 5No possible existent lies outside the aggregate of possibles.ProvedProved
Dalīl al-imkān, step 6The aggregate is itself possible, and so has its existence through another.Not provedNot proved
Dalīl al-imkān, step 7What gives existence to the aggregate is not one of its members.Not provedNot proved
Dalīl al-imkān, step 8Neither a member, nor a group of members, nor the aggregate gives the aggregate existence.Not provedNot proved
Dalīl al-imkān, step 9The cause of the aggregate lies outside it and is not possible.Not provedNot proved
Dalīl al-imkān, step 10That cause is necessary in itself.Not provedNot proved
Dalīl al-imkān, step 11The aggregate has a cause that is necessary in itself.Not provedNot proved
Dalīl al-imkān, step 12 (aggregate route)A Necessary Existent exists.Not provedNot proved
Dalīl al-imkān, conclusion (shorter route)A Necessary Existent exists.Not provedProved

Version 1: the proofs it found

Round-5 model with CoqHammer · one run

Each proof below was found by the prover and then compiled from scratch. Steps are written in Rocq's tactic language; braces enclose the proof of each subgoal. Proofs that use CoqHammer's tactics (sauto, sfirstorder, fcrush) need the CoqHammer tactics library, which the runner on this page does not have; their Rocq check output is linked.

Dalīl al-imkān, conclusion (shorter route)

imkan_b_necessary_exists.v · found in 2 expansions · 73.6 s

Statement in English: A Necessary Existent exists, given that existence is from a thing's nature or from a giver (MP-008), that only what exists of itself gives existence (OP-001), and that something exists (SP-001).

The proof the prover found

(firstorder). { (apply NNPP; intro). { (unfold Necessary, MP008, OP001 in *; sauto q: on). } }

Who did what: The automation took the existing thing x from “something exists”. The model then proposed proving the conclusion by contradiction (apply NNPP; intro): suppose no Necessary Existent exists. CoqHammer then derived the contradiction.

Check: Rocq 9.2.0 with CoqHammer's tactics compiles the assembled proof from scratch; Print Assumptions shows excluded middle (classic) only, beyond the postulates written into the statement.

Dalīl al-imkān, step 3

step3_possible_needs_cause.v · found in 3 expansions · 73.7 s

Statement in English: A possible existent needs a cause.

The proof the prover found

(unfold ThroughAnother, Possible, MP008 in *; firstorder). { (apply NNPP; intro). { (firstorder). } }

Who did what: The automation unfolded the definitions; the model proposed the step by contradiction (apply NNPP; intro), and the automation closed the rest.

Check: Rocq 9.2.0 with CoqHammer's tactics compiles the assembled proof from scratch; Print Assumptions shows excluded middle (classic) only, beyond the postulates written into the statement.

The universe is caused

pr011_something_caused.v · found in 1 expansion · 21.9 s

Statement in English: Something in the universe has its existence through another.

The proof the prover found

(apply NNPP; intro). { (unfold ThroughAnother, Possible, InUniverse, MP008, OP006 in *; sfirstorder). }

Who did what: The model proposed the step by contradiction (apply NNPP; intro); CoqHammer closed the remaining goal.

Check: Rocq 9.2.0 with CoqHammer's tactics compiles the assembled proof from scratch; Print Assumptions shows excluded middle (classic) only, beyond the postulates written into the statement.

Dalīl al-kalima, the first cause

kalima_first_cause.v · found in 1 expansion · 3.0 s

Statement in English: If the universe has its existence through another, it has a first cause that exists of itself and is given existence by nothing.

The proof the prover found

(unfold ThroughAnother, OfItself, OP001 in *; sfirstorder).

Who did what: CoqHammer proved this goal directly. The model contributed nothing here.

Check: Rocq 9.2.0 with CoqHammer's tactics compiles the assembled proof from scratch; Print Assumptions shows no axioms at all, beyond the postulates written into the statement.

Dalīl al-kalima, premise 2

pr002_no_self_creation.v · found in 1 expansion · 2.1 s

Statement in English: Self-creation is impossible: nothing gives existence to itself.

The proof the prover found

(firstorder).

Who did what: The automation (firstorder) closed this goal at the first step. The model contributed nothing here.

Check: Rocq 9.2.0 compiles the assembled proof from scratch; Print Assumptions shows no axioms at all, beyond the postulates written into the statement.

Dalīl al-kalima, premise 4 (key step)

pr004_no_two_step_giving.v · found in 1 expansion · 2.2 s

Statement in English: What receives existence does not give existence to anything; this is the step that rules out an infinite regress of givers.

The proof the prover found

(firstorder).

Who did what: The automation (firstorder) closed this goal at the first step. The model contributed nothing here.

Check: Rocq 9.2.0 compiles the assembled proof from scratch; Print Assumptions shows no axioms at all, beyond the postulates written into the statement.

A second proof of the dalīl al-imkān conclusion · round-4 model, separate run

In an earlier run on three tasks, the round-4 model proved the same conclusion by a different division: two cases.

Dalīl al-imkān, conclusion (shorter route), by cases

imkan_b_necessary_exists.v · found in 6 expansions · 303.5 s

Statement in English: A Necessary Existent exists (same statement as above).

The proof the prover found

(unfold Necessary, MP008, OP001, SP001 in *; firstorder).
{ (unfold ThroughAnother, OfItself in *; firstorder).
  { (destruct (classic (exists y : Thing, Gives y x)) as [Hs|Hs]).
    { (unfold ThroughAnother in *; fcrush). }
    { (firstorder). } } }

Who did what: The automation unfolded the definitions and took the existing thing x. The model then proposed the statement “something gives existence to x”, which the search used as a case split. CoqHammer (fcrush) proved the first case: if x has a giver, that giver exists of itself and is therefore necessary. The automation proved the second: if x has none, x is itself necessary.

Check: Rocq 9.2.0 with CoqHammer's tactics compiles the assembled proof from scratch; Print Assumptions shows excluded middle (classic) only, beyond the postulates written into the statement.

Earlier proofs · round-3 model, without CoqHammer

Before CoqHammer was added, the round-3 model proved five of the eight tasks with Rocq's standard automation. In two of them it made the key step. These proofs were re-checked in Rocq 9.3.0.

Dalīl al-kalima, premise 2

pr002_no_self_creation.v · found in 1 expansion · 1.3 s

Statement in English: Self-creation is impossible: nothing gives existence to itself.

The proof the prover found

(firstorder).

Who did what: The automation (firstorder) closed this goal at the first step. The model contributed nothing here.

Check: Rocq 9.3.0 compiles the assembled proof from scratch; Print Assumptions shows no axioms at all, beyond the postulates written into the statement.

Dalīl al-kalima, premise 4 (key step)

pr004_no_two_step_giving.v · found in 1 expansion · 1.3 s

Statement in English: What receives existence does not give existence to anything; this is the step that rules out an infinite regress of givers.

The proof the prover found

(firstorder).

Who did what: The automation (firstorder) closed this goal at the first step. The model contributed nothing here.

Check: Rocq 9.3.0 compiles the assembled proof from scratch; Print Assumptions shows no axioms at all, beyond the postulates written into the statement.

The universe is caused

pr011_something_caused.v · found in 8 expansions · 26.2 s

Statement in English: Something in the universe has its existence through another.

The proof the prover found

(apply NNPP; intro). { (firstorder). }

Who did what: The model proposed the classical step apply NNPP; intro (prove the statement by showing its denial is impossible). The automation then closed the remaining goal.

Check: Rocq 9.3.0 compiles the assembled proof from scratch; Print Assumptions shows excluded middle (classic) only, beyond the postulates written into the statement.

Dalīl al-kalima, the first cause

kalima_first_cause.v · found in 2 expansions · 5.3 s

Statement in English: If the universe has its existence through another, it has a first cause that exists of itself and is given existence by nothing.

The proof the prover found

(firstorder). { (exists x; firstorder). }

Who did what: The automation reduced the goal; the model then proposed the witness step exists x; firstorder, naming which thing is the first cause.

Check: Rocq 9.3.0 compiles the assembled proof from scratch; Print Assumptions shows no axioms at all, beyond the postulates written into the statement.

Dalīl al-imkān, step 3

step3_possible_needs_cause.v · found in 31 expansions · 140.4 s

Statement in English: A possible existent needs a cause.

The proof the prover found

(unfold ThroughAnother, Possible, MP008 in *; firstorder). { (apply NNPP; intro). { (firstorder). } }

Who did what: The automation unfolded the definitions; the model then proposed the classical step apply NNPP; intro, and the automation closed the rest.

Check: Rocq 9.3.0 compiles the assembled proof from scratch; Print Assumptions shows excluded middle (classic) only, beyond the postulates written into the statement.

Version 2: Claude, with no further training

All twenty steps · three runs

What “pretrained, with no further training” means. A language model is first trained by its developer on a large body of text and code, and usually refined by the developer before release. A model in that state is called pretrained: it has a general command of language, mathematics and programming, but has not been trained for any particular task. The small model of version 1 was pretrained by its developer and then trained further by us, on proofs, for this task. Claude (model claude-sonnet-5-5, by Anthropic) was used exactly as released: we did not train it in any way, and it learned nothing from one attempt to the next. Neither model was ever given our proofs of the two arguments.

How it was run. Each call to Claude was isolated: no tools, no files, no internet, no memory of earlier calls. It was shown only the vocabulary, the declared starting points, any lemmas it had already proved for the current step, and the statement to prove. For each goal the automated provers were tried first. If they failed, Claude could propose complete proofs, or divide the goal into two to four subgoals, each then treated the same way. Rocq checked every proposal, and a division counted only when every subgoal was proved. The finished proof was compiled from scratch; the only logical assumption allowed was excluded middle.

Result. All twenty steps were proved in the first run, and again in a second run. The automated provers proved six steps without Claude. Of the other fourteen, Claude wrote the complete proof of nine in run 1 and divided five into lemmas; in run 2, ten and four.

Run 3: Claude states subgoals only. Because Claude wrote most proofs itself, a third run tested the design strictly: Claude could only state subgoals, never write a proof step, and every step of every proof had to be found by the automated provers (Rocq’s automation, a fixed tactic that applies induction to a chain and then calls the automation, and CoqHammer). It proved 16 of the 20 steps. Nine needed no division. The other seven, including premise 3 of dalīl al-kalima and steps 6–10 and 12 of dalīl al-imkān, were proved only after Claude divided them, sometimes over several levels; of the 111 lemmas in these proofs, Rocq’s automation proved 64 and CoqHammer 47. Four steps were not proved. For one of them, the conclusion without the “if”, Claude’s three subgoals are each true and together imply the goal, but the provers did not find the combination.

StepStatementRun 1Run 2Run 3 · subgoals only
Dalīl al-kalima, premise 1The four possibilities are the only ones.Proved
Claude wrote the proof
proof
Proved
Claude wrote the proof
proof
Not proved
4 calls to Claude
Dalīl al-kalima, premise 2Nothing gives existence to itself.Proved
automation, no model
proof
Proved
automation, no model
proof
Proved
provers alone, no model
proof
Dalīl al-kalima, premise 3No chain of existence-giving returns to where it started.Proved
Claude divided it into 7 lemmas
proof
Proved
Claude wrote the proof
proof
Proved
Claude’s subgoals; 12 lemmas, all proved by the provers
proof
Dalīl al-kalima, premise 4 (key step)What receives existence does not give existence to anything.Proved
automation, no model
proof
Proved
automation, no model
proof
Proved
provers alone, no model
proof
Dalīl al-kalima, the first causeIf the universe has its existence through another, it has a first cause that exists of itself.Proved
Claude wrote the proof
proof
Proved
Claude wrote the proof
proof
Proved
provers alone, no model
proof
The universe is causedSomething in the universe has its existence through another.Proved
Claude wrote the proof
proof
Proved
Claude wrote the proof
proof
Proved
provers alone, no model
proof
Dalīl al-kalima, the conclusion without the “if”Something in the universe has a giver of existence that is necessary and depends on nothing.Proved
Claude wrote the proof
proof
Proved
Claude wrote the proof
proof
Not proved
1 calls to Claude
Dalīl al-imkān, step 1Every existent is necessary or possible in itself, and not both.Proved
automation, no model
proof
Proved
automation, no model
proof
Proved
provers alone, no model
proof
Dalīl al-imkān, step 2The non-existence of what is necessary in itself is not possible.Proved
automation, no model
proof
Proved
automation, no model
proof
Proved
provers alone, no model
proof
Dalīl al-imkān, step 3A possible existent needs a cause.Proved
Claude wrote the proof
proof
Proved
Claude wrote the proof
proof
Proved
provers alone, no model
proof
Dalīl al-imkān, step 4Nothing gives existence to itself.Proved
automation, no model
proof
Proved
automation, no model
proof
Proved
provers alone, no model
proof
Dalīl al-imkān, step 5No possible existent lies outside the aggregate of possibles.Proved
automation, no model
proof
Proved
automation, no model
proof
Proved
provers alone, no model
proof
Dalīl al-imkān, step 6The aggregate is itself possible, and so has its existence through another.Proved
Claude wrote the proof
proof
Proved
Claude wrote the proof
proof
Proved
Claude’s subgoals; 4 lemmas, all proved by the provers
proof
Dalīl al-imkān, step 7What gives existence to the aggregate is not one of its members.Proved
Claude divided it into 3 lemmas
proof
Proved
Claude divided it into 4 lemmas
proof
Proved
Claude’s subgoals; 12 lemmas, all proved by the provers
proof
Dalīl al-imkān, step 8Neither a member, nor a group of members, nor the aggregate gives the aggregate existence.Proved
Claude divided it into 4 lemmas
proof
Proved
Claude wrote the proof
proof
Proved
Claude’s subgoals; 16 lemmas, all proved by the provers
proof
Dalīl al-imkān, step 9The cause of the aggregate lies outside it and is not possible.Proved
Claude wrote the proof
proof
Proved
Claude divided it into 3 lemmas
proof
Proved
Claude’s subgoals; 20 lemmas, all proved by the provers
proof
Dalīl al-imkān, step 10That cause is necessary in itself.Proved
Claude divided it into 4 lemmas
proof
Proved
Claude divided it into 6 lemmas
proof
Proved
Claude’s subgoals; 16 lemmas, all proved by the provers
proof
Dalīl al-imkān, step 11The aggregate has a cause that is necessary in itself.Proved
Claude wrote the proof
proof
Proved
Claude wrote the proof
proof
Not proved
1 calls to Claude
Dalīl al-imkān, step 12 (aggregate route)A Necessary Existent exists.Proved
Claude divided it into 7 lemmas
proof
Proved
Claude wrote the proof
proof
Proved
Claude’s subgoals; 22 lemmas, all proved by the provers
proof
Dalīl al-imkān, conclusion (shorter route)A Necessary Existent exists.Proved
Claude wrote the proof
proof
Proved
Claude divided it into 5 lemmas
proof
Not proved
2 calls to Claude

The same diagram for Claude, built from its three recorded runs on all twenty steps. In run 3, Claude’s only steps are divisions into subgoals; every proof step is by Rocq’s automation or CoqHammer. Select a step and a run; every rectangle is a goal, and every rounded label is a step that was tried on it: Rocq’s automation, a complete proof written by Claude, or a division of the goal into subgoals proposed by Claude. Select a division to read the subgoals Claude proposed.

Select a stage to see its role; the matching parts of the search are highlighted.

Loading the recorded search…

 

100%

Recorded from Claude’s three runs. A goal reached twice is drawn once, under the step that reached it first; a dashed link marks the other. The data behind this diagram.

Two divisions worth reading. For premise 3 of dalīl al-kalima (run 1), Claude first stated and proved, by induction, the general claim the small model never found: whatever depends on another through a chain of any length has its existence through it; from it, no chain returns to its start (pr003_no_circle.v). For the conclusion of dalīl al-imkān by the aggregate route (run 1), it divided the goal into seven lemmas, among them that no circle of existence-giving is possible and that, if no Necessary Existent existed, some aggregate would be given existence by one of its own members (imkan_s12_necessary_exists.v).

Limits. These are three runs, and Claude’s output varies from run to run. Every prompt was checked automatically against the 420 proof lines of our published Rocq files, and none appeared; but the data on which Claude was trained by its developer cannot be inspected, and our proofs were published in September 2026. A run was interrupted once by a fault in our test harness (a Rocq check exceeded its time limit); the two steps affected were run again, and the interrupted log is kept.

Files. Every prompt, every response and every Rocq check: run 1, run 2, run 3. Code: pilot.py (the search), pilot20.py (all twenty steps), heldout20.py (the twenty statements), verify20.py (the independent check), pilot_decomp.py (subgoals only).

Results on generated problems

150 test problems

The generated test problems are first-order problems that the automation cannot solve directly. They were never used in training.

ConfigurationProved (of 150)
Symbolic only (hand-written list)80
Round-1 model with the hand-written list91
Round-1 model alone91
Round-3 model alone (no critic, at most 2 lemmas per goal)87

Against the hand-written list, the round-1 model with the list proves 12 problems the list alone does not, and misses 1 that the list proves (sign test p = 0.003). Every configuration, with its limits, is listed in summary.csv.

Files

Downloads

Run it yourself

Rocq 9.3 · re-check a proof

Load any proof above into this editor and run it on this server's Rocq 9.3 in an isolated, network-disabled worker. Runs are limited to 60 seconds.

Loading…

Isolated run · 60-second limit · output retained 2h