Skip to content

spec: Recursion - #943

Merged
erik-3milabs merged 31 commits into
spec/mainfrom
spec/recursion
Oct 2, 2026
Merged

erik-3milabs merged 31 commits into
spec/mainfrom
spec/recursion

Conversation

@erik-3milabs

Copy link
Copy Markdown
Collaborator

No description provided.

@erik-3milabs erik-3milabs self-assigned this Aug 21, 2026
@erik-3milabs erik-3milabs added the spec Updates and improvements to the spec document label Aug 21, 2026
@github-actions

Copy link
Copy Markdown

Kimi Code Review

⚠️ Review failed: Kimi API request failed with status 401


Automated review by Kimi (Moonshot AI)

@github-actions

Copy link
Copy Markdown

Codex Code Review

  • Medium — Recursive verification omits the required commitment (spec/recursion.typ:105). verify accepts a commitmentSpace, but the recursive branch treats commitment_1 as a function; lines 116–118 similarly pass verifier functions directly. Use an explicitly defined specialization operation producing comm(verify'(commitment_0, commitment_1, ·)). As written, the equations are ill-typed and do not establish the claimed recursive chain.

Comment thread spec/recursion.typ Outdated
Comment thread spec/recursion.typ Outdated
Comment thread spec/recursion.typ Outdated
Comment thread spec/recursion.typ Outdated
Comment thread spec/recursion.typ Outdated
Comment thread spec/recursion.typ Outdated
Comment thread spec/recursion.typ Outdated
Comment thread spec/recursion.typ Outdated
Comment thread spec/recursion.typ Outdated
Comment thread spec/recursion.typ Outdated
Comment thread spec/chapters/recursion.typ Outdated
Comment thread spec/recursion.typ Outdated
Comment thread spec/recursion.typ Outdated

@cdesaintguilhem cdesaintguilhem left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly minor comments!

Comment thread spec/recursion.typ Outdated
Comment thread spec/recursion.typ Outdated
Comment thread spec/recursion.typ Outdated
Comment thread spec/recursion.typ Outdated
Comment thread spec/recursion.typ Outdated
Comment thread spec/recursion.typ Outdated
Comment thread spec/recursion.typ Outdated
Comment thread spec/chapters/recursion.typ Outdated

@RobinJadoul RobinJadoul left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm wondering whether we should choose for the $f$ function in the proof system to be the ELF proof, or if it should purely be the VM itself, and moving the ELF into public inputs.

Comment thread spec/chapters/recursion.typ Outdated
Comment thread spec/chapters/recursion.typ Outdated
@RobinJadoul
RobinJadoul force-pushed the spec/recursion branch 4 times, most recently from 82dcc54 to a75546f Compare September 8, 2026 09:40

@RobinJadoul RobinJadoul left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not paying attention to all possible typography yet, trying to get the last high-level stuff out of the way
I'll try to do another pass later this week, but this is a first go at it

Comment thread spec/chapters/recursion.typ Outdated
Comment thread spec/chapters/recursion.typ Outdated
Comment thread spec/chapters/recursion.typ Outdated
Comment thread spec/chapters/recursion.typ
Comment thread spec/chapters/recursion.typ Outdated
Comment thread spec/chapters/recursion.typ
Comment thread spec/chapters/recursion.typ Outdated
Comment thread spec/chapters/recursion.typ Outdated
Comment thread spec/chapters/recursion.typ Outdated
Comment thread spec/chapters/recursion.typ Outdated
Comment thread spec/chapters/recursion.typ
Comment thread spec/chapters/recursion.typ Outdated
Comment thread spec/chapters/recursion.typ Outdated
Comment thread spec/chapters/recursion.typ Outdated
Comment thread spec/chapters/recursion.typ Outdated
Comment thread spec/chapters/recursion.typ Outdated
Comment thread spec/chapters/recursion.typ Outdated
Comment thread spec/book.typ Outdated
Comment thread spec/chapters/recursion.typ Outdated
Comment thread spec/chapters/recursion.typ

@RobinJadoul RobinJadoul left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A couple minor things, but looking better and better.
Probably good to have another review pass by @cdesaintguilhem around this point, too.

Comment thread spec/chapters/recursion.typ Outdated
Comment thread spec/chapters/recursion.typ Outdated
Comment thread spec/chapters/recursion.typ Outdated
Comment thread spec/chapters/recursion.typ Outdated
&= product(verify^*_0, verify^*_1)([comm(x), comm(y)], [[proof, b], r]),\
$
when
$r = d_(verify^*) ([comm(x), comm(y([comm(x), comm(y)], dot))], [proof, b])$.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This would need to define $d_{v^*}$, presumably in terms of $d_v$, as part of the definition of the split, I think.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We might even make the definition of a split into a triple (v_0, v_1, d_v).
This gets rid of the existential quantifier, and makes it explicit where everything comes from when we get to here

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As discussed, there's indeed a subtlety about non-generator records.
We probably need to split up the arrows so that we get

  • completeness: $v(x) = 1 \implies v_0(x, d(x)) = 1 \wedge v_1(x, d(x)) = 1$
  • soundness: $\forall r. v_0(x, r) = 1 \wedge v_1(x, r) = 1 \implies v(x) = 1$

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

Comment thread spec/chapters/recursion.typ Outdated
Comment thread spec/chapters/recursion.typ

@cdesaintguilhem cdesaintguilhem left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've read until, but not including, "34.4 Split-recursion". See typos and aesthetic remark in comments, otherwise everything reads very nicely up until then!

Comment thread spec/chapters/recursion.typ Outdated
Comment thread spec/chapters/recursion.typ Outdated
Comment thread spec/chapters/recursion.typ Outdated
Comment thread spec/chapters/recursion.typ Outdated
Comment thread spec/chapters/recursion.typ Outdated

@cdesaintguilhem cdesaintguilhem left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some more nits and notation comments, but otherwise looks good to me.

Comment thread spec/chapters/recursion.typ Outdated
Comment thread spec/chapters/recursion.typ Outdated
Comment thread spec/chapters/recursion.typ Outdated
Comment thread spec/chapters/recursion.typ Outdated
Comment thread spec/chapters/recursion.typ Outdated
Comment thread spec/chapters/recursion.typ Outdated
@erik-3milabs
erik-3milabs marked this pull request as ready for review October 2, 2026 06:17
@github-actions

github-actions Bot commented Oct 2, 2026

Copy link
Copy Markdown

Kimi Code Review

⚠️ Review failed: Kimi API request failed with status 401


Automated review by Kimi (Moonshot AI)

erik-3milabs and others added 25 commits October 2, 2026 14:12
Co-authored-by: Erik <159244975+erik-3milabs@users.noreply.github.com>
Co-authored-by: Robin Jadoul <robin.jadoul@gmail.com>
Co-authored-by: Erik <159244975+erik-3milabs@users.noreply.github.com>
Co-authored-by: Robin Jadoul <robin.jadoul@gmail.com>
Co-authored-by: Cyprien de Saint Guilhem <c.desaintguilhem@gmail.com>
Co-authored-by: Cyprien de Saint Guilhem <c.desaintguilhem@gmail.com>
Co-authored-by: Robin Jadoul <robin.jadoul@gmail.com>
Co-authored-by: Erik <159244975+erik-3milabs@users.noreply.github.com>
@erik-3milabs
erik-3milabs merged commit b08d7dd into spec/main Oct 2, 2026
2 checks passed
@erik-3milabs
erik-3milabs deleted the spec/recursion branch October 2, 2026 12:14
@RobinJadoul
RobinJadoul restored the spec/recursion branch October 2, 2026 12:24
@RobinJadoul
RobinJadoul deleted the spec/recursion branch October 2, 2026 12:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

spec Updates and improvements to the spec document

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants