Skip to content

Conversation

@johnchandlerburnham
Copy link
Member

big refactor of the ix compiler, the ixon format and implementation of the decompiler

roundtrip compilation/decompilation of Std, Lean and Ix itself now working (modulo Expr.mdata, which is currently not captured by Ixon metadata, but arguably should be)

johnchandlerburnham and others added 26 commits March 15, 2025 18:56
- CompileM is now persistent with the filemapped store
- constructing evaluation claims is done through MetaM rather than CompileM
- CLI now features the Prove command
arthurpaulino
arthurpaulino previously approved these changes May 23, 2025
Copy link
Member

@arthurpaulino arthurpaulino left a comment

Choose a reason for hiding this comment

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

I'm not sure about the coding style that deviates from the common Lean 4 usage. But the sources look good. Huge achievement!

| _, .none => .error "bad address {meta}"
let cont <- StoreIO.toIO (Store.readConst c)
let meta <- StoreIO.toIO (Store.readConst m)
let ix := Ix.TransportM.rematerialize cont meta
Copy link
Member

Choose a reason for hiding this comment

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

Would it make sense to call this just "materialize"? In some cases, one might want to materialize something that was never read from a Lean source, like the result of some reduction by the IxVM.

Copy link
Member Author

@johnchandlerburnham johnchandlerburnham May 24, 2025

Choose a reason for hiding this comment

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

the analogy is with the star trek transporter https://en.wikipedia.org/wiki/Transporter_(Star_Trek), which dematerializes in one place and rematerializes somewhere else. Here dematerialization means the transformation from Ix.IR into an Ixon.Const and Ixon.Metadata. The IxVM operates just over the Ixon.Const, since the metadata isn't relevant for proving. In the proving case, we also already know the output from building the claim.

If we wanted to reduce Ix constants in a non-proving context and construct new outputs, then that would need an "Ix Runtime" which should operate over Ix.IR, not Ixon, as you'd want to also transform the metadata so that the output is human readable

@johnchandlerburnham johnchandlerburnham merged commit 70f569a into main May 24, 2025
17 of 18 checks passed
@johnchandlerburnham johnchandlerburnham deleted the jcb/ix-tests branch May 24, 2025 10:13
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.

4 participants