Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1190 commits
Select commit Hold shift + click to select a range
8ede47a
Remove a stray backup of tc.rs
johnchandlerburnham Oct 27, 2026
7787451
Count the role binding's constants in the phase-4 coverage check
johnchandlerburnham Oct 27, 2026
ef326dc
Mirror the certified checker's frontend: require the prelude
johnchandlerburnham Oct 27, 2026
9c065bc
Measure the role table's evidence against quotient Source's
johnchandlerburnham Oct 27, 2026
39aee4b
Name the table's evidence records for quotient Source
johnchandlerburnham Oct 27, 2026
d43bfff
Bound the first-tier search by a polynomial in the table
johnchandlerburnham Oct 27, 2026
11358bf
Bound the family route's output by its full endpoint
johnchandlerburnham Oct 27, 2026
af3008c
State expansion and re-expansion under explicit budgets
johnchandlerburnham Oct 27, 2026
358651f
Describe Rust's exact phase-1 arithmetic in the Ixon notes
johnchandlerburnham Oct 27, 2026
5c33dc6
Name a polynomial budget for the production sharing rule
johnchandlerburnham Oct 27, 2026
6de0ef1
Add quotient Source's names to the role data
johnchandlerburnham Oct 27, 2026
829ba25
Read quotient Source's evidence from the table's records
johnchandlerburnham Oct 27, 2026
7c0f380
Read the bundle's records as the Ixon reader reads them
johnchandlerburnham Oct 27, 2026
93f6266
Check quotient Source's evidence against the table's on the artifact
johnchandlerburnham Oct 27, 2026
88e4bb4
Prove the role table's evidence passes where quotient Source's does
johnchandlerburnham Oct 27, 2026
5853926
Match the certified checker's safety tier
johnchandlerburnham Oct 27, 2026
1c8151d
Drop three unreachable checks from the family route
johnchandlerburnham Oct 27, 2026
bd3a819
Authenticate each record once per source
johnchandlerburnham Oct 27, 2026
fe58029
Extend the polynomial budget to tables and constants
johnchandlerburnham Oct 27, 2026
d18ff07
Order Source definition groups as Lean's all
johnchandlerburnham Oct 27, 2026
75f7747
Accept inductive blocks in any member order
johnchandlerburnham Oct 27, 2026
5ca3857
Compile Lean's declarations verbatim
johnchandlerburnham Oct 27, 2026
818cadc
Read theorems and opaques as headers in the report checks
johnchandlerburnham Oct 27, 2026
b1246df
Double the compile admission limit per healthy interval
johnchandlerburnham Oct 27, 2026
f40f9a0
Double the validation admission limit per healthy interval
johnchandlerburnham Oct 27, 2026
80d31f9
Skip the safety lookup for single-member blocks
johnchandlerburnham Oct 27, 2026
c9c2e83
Ramp by at most eight workers near the growth forecast
johnchandlerburnham Oct 27, 2026
9a6a629
Move a singleton record's reading to a larger context
johnchandlerburnham Oct 27, 2026
7d2f5e8
Read compiled singleton records as quotient Source's units
johnchandlerburnham Oct 27, 2026
7b44324
Read block units and generalise the streams reduction to all units
johnchandlerburnham Oct 27, 2026
72efa4c
Show that quotient Source declines cyclic definition groups
johnchandlerburnham Oct 27, 2026
5332d5e
Read a block compiled one member per class back as its sources
johnchandlerburnham Oct 27, 2026
f861ac6
Read an inductive block of several types in Lean's order
johnchandlerburnham Oct 27, 2026
710ffa3
Read an inductive block's recursors from their records
johnchandlerburnham Oct 27, 2026
ec4fab4
State quotient Source's conversion of an inductive group exactly
johnchandlerburnham Oct 27, 2026
f14de73
Lower a renamed inductive block at a related state
johnchandlerburnham Oct 27, 2026
94d79f1
Read an inductive block's record as quotient Source's unit renamed
johnchandlerburnham Oct 27, 2026
6bd34d7
Read a compiled recursor family's record as an inert unit
johnchandlerburnham Oct 27, 2026
0ba86c5
Read a compiled inductive block in a closure's context
johnchandlerburnham Oct 27, 2026
fe9110d
Read a compiled recursor family in a closure's context
johnchandlerburnham Oct 27, 2026
378f406
Read an inductive group compiled in Lean's order as its unit
johnchandlerburnham Oct 27, 2026
430139a
Accept mutual blocks in any member order in IxVM
johnchandlerburnham Oct 27, 2026
53edd0c
Relate typing claims to a specification, binding and axioms
johnchandlerburnham Oct 27, 2026
d56bf77
Read IxVM's primitives through the claim's role binding
johnchandlerburnham Oct 27, 2026
d74e9c7
Admit only Lean's standard axioms in IxVM claims
johnchandlerburnham Oct 27, 2026
c1cee9d
Record IxVM's boundary with IxC's reader obligations
johnchandlerburnham Oct 27, 2026
15f1d2a
Read a closure order in quotient Source's order, segment by segment
johnchandlerburnham Oct 27, 2026
a3759a2
Merge the sharing totality work
johnchandlerburnham Oct 27, 2026
0a85e45
Remove the Rust compiler's rewriting code
johnchandlerburnham Oct 27, 2026
4d952ce
Merge the native role admission work
johnchandlerburnham Oct 27, 2026
7599f7e
Show that quotient Source schedules referenced groups first
johnchandlerburnham Oct 27, 2026
7cb607c
Cut the compiled closure into segments in quotient Source's order
johnchandlerburnham Oct 27, 2026
8cbb5fe
Merge the reader's proofs for blocks compiled in Lean's order
johnchandlerburnham Oct 27, 2026
47d8ad1
Check IxVM's role constants once, under their groups' contexts
johnchandlerburnham Oct 27, 2026
31c4276
Merge the reader's record-level reading proofs
johnchandlerburnham Oct 27, 2026
4b87a80
Reduce the stored records' canonical encoding to the fold
johnchandlerburnham Oct 27, 2026
64a7b86
Drop a removed circuit from the IxVM trace selection
johnchandlerburnham Oct 27, 2026
0ff1b68
Merge the removal of the Rust compiler's rewriting code
johnchandlerburnham Oct 27, 2026
804cb3c
Bind the aggregate fixtures to the default table's section alone
johnchandlerburnham Oct 27, 2026
86a6cf3
Handle the verify_const witness error in two benchmarks
johnchandlerburnham Oct 27, 2026
c15d7d6
Place a group's references in the group or the groups it references
johnchandlerburnham Oct 27, 2026
1f2ce07
Give a collapsed duplicate's read an empty segment
johnchandlerburnham Oct 27, 2026
07e063c
Merge the PR branch into the reader's proofs
johnchandlerburnham Oct 27, 2026
8095612
Key the reference graph's expression memo exactly
johnchandlerburnham Oct 27, 2026
1cdada5
Merge the exact reference-graph memo into the reader's proofs
johnchandlerburnham Oct 27, 2026
06c01e5
Merge the IxVM update
johnchandlerburnham Oct 27, 2026
ce1b9ae
Compile Lean verbatim without the rewriting pipeline
johnchandlerburnham Oct 27, 2026
9bb28a0
Merge the exact reference-graph memo
johnchandlerburnham Oct 27, 2026
05bc7ad
Key the ground check's caches exactly
johnchandlerburnham Oct 27, 2026
c7bd654
Merge the PR branch into the reader's proofs
johnchandlerburnham Oct 27, 2026
d6964a1
Write the well-founded certificates so they close small
johnchandlerburnham Oct 27, 2026
9a4e823
Remove reserved compiler names and decompile records
johnchandlerburnham Oct 27, 2026
6ac005a
Merge the IxVM update into the PR branch
johnchandlerburnham Oct 27, 2026
cf48b57
Merge the PR branch with the IxVM update
johnchandlerburnham Oct 27, 2026
31e9e2a
Regenerate the default role table with the smaller certificates
johnchandlerburnham Oct 27, 2026
e936063
Show that the reference graph is exact
johnchandlerburnham Oct 27, 2026
7f3ed41
Write the role-bound environment as version 5
johnchandlerburnham Oct 27, 2026
256bea9
Retire the MLList reference check of the AuxGen tier service
johnchandlerburnham Oct 27, 2026
49d64b5
Relate a definition block's order to its members' terms
johnchandlerburnham Oct 28, 2026
6d39681
Merge the exact ground-check caches
johnchandlerburnham Oct 28, 2026
0a20afe
Merge the smaller well-founded certificates
johnchandlerburnham Oct 28, 2026
15e0486
Merge the PR branch into the compiler cut
johnchandlerburnham Oct 28, 2026
fc9f1aa
Merge the PR branch into the reader's proofs
johnchandlerburnham Oct 28, 2026
6fa7c9f
Show that a definition block reads as quotient Source's group
johnchandlerburnham Oct 28, 2026
7617738
Show that a definition group's member names are distinct
johnchandlerburnham Oct 28, 2026
9b4058c
Read a definition block's level parameters from accepted declarations
johnchandlerburnham Oct 28, 2026
98c3c24
Regenerate the IxVM and aggregate circuits' generated code
johnchandlerburnham Oct 28, 2026
7fcb8ff
Merge the PR branch into the reader's proofs
johnchandlerburnham Oct 28, 2026
616fc95
Read the fold's start without the clique schedule
johnchandlerburnham Oct 28, 2026
8bff1e2
Split the definition block reading's unbound premise in two
johnchandlerburnham Oct 28, 2026
4fff77f
Prove schedule ownership: a driver step keeps the resolution
johnchandlerburnham Oct 28, 2026
3ad768f
Read a group name's block from its block compile
johnchandlerburnham Oct 28, 2026
bd02adc
Merge the block layout reading and the unbound premise split
johnchandlerburnham Oct 28, 2026
cd766e7
Merge the regenerated circuit code
johnchandlerburnham Oct 28, 2026
b0d8fb1
Show that a definition block references its mentioned names' bindings
johnchandlerburnham Oct 28, 2026
2ca34bf
Merge the PR branch into the reader's proofs
johnchandlerburnham Oct 28, 2026
9689d84
Discharge the definition block reading's exact names from the artifact
johnchandlerburnham Oct 28, 2026
2b2bd03
Merge the definition block's exact-names reading
johnchandlerburnham Oct 28, 2026
23ed2a6
Show a block's members are unresolved at its own snapshot
johnchandlerburnham Oct 28, 2026
ff9f37c
Merge the fresh-snapshot provenance
johnchandlerburnham Oct 28, 2026
2c4f055
Merge the PR branch into the reader's proofs
johnchandlerburnham Oct 28, 2026
f2a11bc
Validate the role binding once per aggregate
johnchandlerburnham Oct 27, 2026
2f99ad5
Regenerate the IxVM and ix_aggr Rust code
johnchandlerburnham Oct 28, 2026
8c35bb2
Merge the binding validated once per aggregate
johnchandlerburnham Oct 28, 2026
a63e86e
Show a claiming block's own record is stored in the artifact
johnchandlerburnham Oct 28, 2026
4dee833
Merge the stored block-record provenance
johnchandlerburnham Oct 28, 2026
ce67f45
Show every block the compiler returns is wire-valid
johnchandlerburnham Oct 28, 2026
8723049
Expose the claim walk of a block's primary claims
johnchandlerburnham Oct 28, 2026
2901e2d
Prove the artifact facts of a claimed definition block
johnchandlerburnham Oct 28, 2026
a7f43f3
Show that a compiled block's reference table holds only allowed entries
johnchandlerburnham Oct 28, 2026
b2d5932
Merge the PR branch into the reader's proofs
johnchandlerburnham Oct 28, 2026
cf2acf8
Show the blobs a claimed block reads are in the artifact
johnchandlerburnham Oct 28, 2026
9cf697e
Prove the compiled closure's references from the block tables
johnchandlerburnham Oct 28, 2026
e41f20f
Merge the PR branch into the reader's proofs
johnchandlerburnham Oct 28, 2026
1809124
Read singleton records under any name relation that agrees on mentions
johnchandlerburnham Oct 28, 2026
2995d09
Prove the recursor edges of the closure layout
johnchandlerburnham Oct 28, 2026
3852212
Merge the PR branch into the closure layout's extra edges
johnchandlerburnham Oct 28, 2026
92e7d3f
Read the role table's maps by role without rebalancing
johnchandlerburnham Oct 28, 2026
75f7c1b
Regenerate the IxVM Rust code
johnchandlerburnham Oct 28, 2026
0c111ae
Regenerate the trace writers and CUDA units
johnchandlerburnham Oct 28, 2026
dda55a0
Re-pin the IxVM costs
johnchandlerburnham Oct 28, 2026
1406ec4
Read compiled singletons in the closure's reading context
johnchandlerburnham Oct 28, 2026
088d4da
Prove the ground edges of the closure layout
johnchandlerburnham Oct 28, 2026
e499cfe
Read a singleton group's segment as quotient Source's read
johnchandlerburnham Oct 28, 2026
4b74ebb
Merge the singleton segment readings
johnchandlerburnham Oct 28, 2026
738a698
Place a kept singleton's record in its own segment
johnchandlerburnham Oct 28, 2026
78383d1
Show a role's definition record is an input definition's
johnchandlerburnham Oct 28, 2026
1b25af5
Remove auxiliary regeneration; add three compile-report checks
johnchandlerburnham Oct 28, 2026
f3f1849
Read definition blocks under any name relation that agrees on mentions
johnchandlerburnham Oct 28, 2026
67d39db
Merge the ground edges of the closure layout
johnchandlerburnham Oct 28, 2026
0a85055
Merge the PR branch into the reader's proofs
johnchandlerburnham Oct 28, 2026
e894478
Show quotient Source declares an operation's role by a definition
johnchandlerburnham Oct 28, 2026
11ff473
Merge the PR branch into the closure layout's ground edges
johnchandlerburnham Oct 28, 2026
3afad1d
Read a definition block's segment in the closure's context
johnchandlerburnham Oct 28, 2026
7b19b4d
Merge the definition block segment readings
johnchandlerburnham Oct 28, 2026
2fc8322
Read inductive groups under any name relation that agrees on mentions
johnchandlerburnham Oct 28, 2026
4de74d0
Trace compiled literals through the expression compiler and sharing
johnchandlerburnham Oct 28, 2026
8d16fe2
Merge the literal tracing through the expression compiler
johnchandlerburnham Oct 28, 2026
0acd570
Read an inductive group in the closure's context
johnchandlerburnham Oct 28, 2026
6548826
Merge the inductive group readings in the closure's context
johnchandlerburnham Oct 28, 2026
2e31fb4
Trace a compiled block's literals to the terms its compile reads
johnchandlerburnham Oct 28, 2026
1614e4d
Merge the literal tracing through block compiles
johnchandlerburnham Oct 28, 2026
56d0099
Merge the PR branch into the compiler cut
johnchandlerburnham Oct 28, 2026
c162216
Drop the auxiliary map from a claimed block's publication facts
johnchandlerburnham Oct 28, 2026
440f0c7
Read the closure's blocks against the single binding map
johnchandlerburnham Oct 28, 2026
117a8ef
Port the fold's freshness and the closure layout to the plain compile
johnchandlerburnham Oct 28, 2026
861d780
State a block record's freshness over a predicate on member names
johnchandlerburnham Oct 28, 2026
dede30e
Read an inductive group's segment of the closure order
johnchandlerburnham Oct 28, 2026
81d5cf7
Assemble the closure layout's extra edges with literal edges
johnchandlerburnham Oct 28, 2026
daabcb5
Discharge the closure layout's block premise from the fold
johnchandlerburnham Oct 28, 2026
9c14083
Read a lone recursor compiled as a single constant
johnchandlerburnham Oct 28, 2026
3fd5a61
Merge the schedule and reader proofs for the remaining links
johnchandlerburnham Oct 28, 2026
51aa501
Show a closure group's names are its compile block's members
johnchandlerburnham Oct 28, 2026
a650c18
Refuse artifacts whose literal-support roles are unnamed
johnchandlerburnham Oct 28, 2026
223c7d6
Merge the ported proofs into the compiler cut
johnchandlerburnham Oct 28, 2026
a17b4f6
Keep the stored blob over a name blob at the same address
johnchandlerburnham Oct 28, 2026
92f1800
Read the trace's segments of the closure order index by index
johnchandlerburnham Oct 28, 2026
d6341df
State the recursors an inductive group lays out
johnchandlerburnham Oct 28, 2026
eb2623b
Show a published closure name's record resolves
johnchandlerburnham Oct 28, 2026
2d04167
Show the fold keeps its store canonically encoded
johnchandlerburnham Oct 28, 2026
1a728cc
Take level-parameter facts only where the collapse keeps a read
johnchandlerburnham Oct 28, 2026
860c18b
Show every binding of a fold state resolves in the artifact
johnchandlerburnham Oct 28, 2026
07bf227
Merge the reader's trace segments into the closure links
johnchandlerburnham Oct 28, 2026
7d177fd
Let a recursor's major premise lie in another block
johnchandlerburnham Oct 28, 2026
1ae2d75
Show an inductive group's compile blocks are its types' and recursors'
johnchandlerburnham Oct 28, 2026
92777a7
Merge the compiler cut into the schedule proofs
johnchandlerburnham Oct 28, 2026
8589c8f
Merge the PR branch into the closure links
johnchandlerburnham Oct 28, 2026
d56769e
Take the literal-roles check from the report and keep blob bytes
johnchandlerburnham Oct 28, 2026
0d0b815
Merge the PR branch into the closure links
johnchandlerburnham Oct 28, 2026
ba85952
Show a kept quotient constant's level parameters are distinct
johnchandlerburnham Oct 28, 2026
1339111
Merge the report's literal-roles check and exact blob bytes
johnchandlerburnham Oct 28, 2026
ba85b1e
Merge the closure links into the trace readings
johnchandlerburnham Oct 28, 2026
51a9871
Check literal-support roles only for the literals stored
johnchandlerburnham Oct 28, 2026
201ef0a
Show no constructor of a kept inductive group occurs in its types
johnchandlerburnham Oct 28, 2026
d67f439
Require a recursor block's recursors to carry their family's all
johnchandlerburnham Oct 28, 2026
470efe9
Show that Array.qsort sorts under a strict order
johnchandlerburnham Oct 28, 2026
4523df4
Read an inductive group's constructor lists and positions off its block
johnchandlerburnham Oct 28, 2026
0bd263a
Merge the recursor family's all requirement and qsort sortedness
johnchandlerburnham Oct 28, 2026
6097183
Merge the recursor family's all requirement into the trace readings
johnchandlerburnham Oct 28, 2026
c0f8398
Keep the prelude's recursors off blocks the stream supplies
johnchandlerburnham Oct 28, 2026
8ad2abf
Merge the PR branch into the closure links
johnchandlerburnham Oct 28, 2026
efeecef
Show a kept inductive group's level parameters are distinct
johnchandlerburnham Oct 28, 2026
b059e94
Take a family's shared level-parameter names from the report check
johnchandlerburnham Oct 28, 2026
f9b9eee
Merge the fallback recursors' reader change into the trace readings
johnchandlerburnham Oct 28, 2026
415722e
Show a kept axiom's or quotient constant's type does not name it
johnchandlerburnham Oct 28, 2026
5fd9593
Prove sourceClasses is the sorted permutation of its input
johnchandlerburnham Oct 28, 2026
bebc136
Show a group's compile block runs as the group in Lean's order
johnchandlerburnham Oct 28, 2026
71f3f5e
Merge the narrowed literal-role check into the proofs
johnchandlerburnham Oct 28, 2026
616e6c4
Merge the PR branch into the group runs
johnchandlerburnham Oct 28, 2026
7575cf1
Decline an inductive read whose declarations repeat a name
johnchandlerburnham Oct 28, 2026
61496cc
Show the closure's recursor index files an inductive group's family
johnchandlerburnham Oct 28, 2026
e2cae34
Read a fold block's blobs and reference table at its final state
johnchandlerburnham Oct 28, 2026
212cd6e
Merge the PR branch into the closure links
johnchandlerburnham Oct 28, 2026
64ccbf9
Merge the closure's recursor index proof
johnchandlerburnham Oct 28, 2026
777bf73
Refuse inductive inputs not of the shapes Lean gives
johnchandlerburnham Oct 28, 2026
2241fde
Show a fold block's mentioned bindings are published closure names
johnchandlerburnham Oct 28, 2026
afc81f6
Take the family block check from the compile report
johnchandlerburnham Oct 28, 2026
ebb2f78
Merge the PR branch into the repeated-name guard
johnchandlerburnham Oct 28, 2026
137baec
Show a block of definitions names its members exactly
johnchandlerburnham Oct 28, 2026
3ecaa3a
Show quotient Source keeps every inductive read whole
johnchandlerburnham Oct 28, 2026
11c3fa4
Merge the PR branch into the fold links
johnchandlerburnham Oct 28, 2026
f33d5cd
Show a block of several definitions is collapsed whole
johnchandlerburnham Oct 28, 2026
07ecd33
Merge the PR branch into the fold links
johnchandlerburnham Oct 28, 2026
f39e954
Use the report checks' meanings in place of local copies
johnchandlerburnham Oct 28, 2026
50a96ae
Merge the PR branch into the definition-block collapse
johnchandlerburnham Oct 28, 2026
d80efe7
Show quotient Source's converted groups lie in the scope of represent…
johnchandlerburnham Oct 28, 2026
7254576
Show the states quotient Source's trace reads from lie in the scope
johnchandlerburnham Oct 28, 2026
c015c58
Show the reader's streams of a closure from quotient Source's trace
johnchandlerburnham Oct 28, 2026
f4f5896
Show a stored definition projection's block is a block record
johnchandlerburnham Oct 28, 2026
64cd682
Refuse an artifact whose published definition has no hint
johnchandlerburnham Oct 28, 2026
b634ef0
Read a singleton definition's hint at its own record
johnchandlerburnham Oct 28, 2026
fce0c9a
Read each block member's hint at its projection record
johnchandlerburnham Oct 28, 2026
8181125
Remove the canonical-order comparator and class sort
johnchandlerburnham Oct 28, 2026
7b0f16a
Retire the twins and kernel-order suites
johnchandlerburnham Oct 28, 2026
8cd1f76
Check only recursor blocks' order; remove the block-order entry
johnchandlerburnham Oct 28, 2026
2176793
Remove the Rust comparators, sort_consts and the kernel's canonical c…
johnchandlerburnham Oct 28, 2026
55cd8eb
Prove the compiled closure's record layout
johnchandlerburnham Oct 28, 2026
9fe549a
Prove CompileCorrect with no premises
johnchandlerburnham Oct 28, 2026
067f9ab
Remove the unused strong-ordering helper from ix-common
johnchandlerburnham Oct 28, 2026
75d1565
Remove the kernel's unconstructed block-order error variants
johnchandlerburnham Oct 28, 2026
ca23048
Describe the kernel's recursor order against stored blocks
johnchandlerburnham Oct 28, 2026
e99680d
Drop the block-order variant from IxC's admission comments
johnchandlerburnham Oct 28, 2026
10e3939
Move the thread-stack setter out of the retired Ix.Tc namespace
johnchandlerburnham Oct 28, 2026
92f7835
Describe the typing tier's users without auxiliary generation
johnchandlerburnham Oct 28, 2026
e27dd0e
Describe the proved compiler theorem in the kernel docs
johnchandlerburnham Oct 28, 2026
30aea17
Describe the Ixon format without the retired compiler passes
johnchandlerburnham Oct 28, 2026
92c2e5f
Mark the canonicity document and benchmark record as historical
johnchandlerburnham Oct 28, 2026
f2caf6e
Describe test tiers and fixtures without the canonical order
johnchandlerburnham Oct 28, 2026
7760780
Drop the block-entry and recorded-failure checks from checkReport
johnchandlerburnham Oct 28, 2026
f802bfe
Move the group lookup lemmas into SourceStoredNames; drop the group plan
johnchandlerburnham Oct 28, 2026
26cb52a
Delete the proof modules that no statement or library reaches
johnchandlerburnham Oct 28, 2026
ca2ffe3
Remove the source-input helpers that no module uses
johnchandlerburnham Oct 28, 2026
39acabf
Move the tier's inductive conversion from LeanIngress into its suite
johnchandlerburnham Oct 28, 2026
e1b9495
Compile Lean exports from other toolchains
johnchandlerburnham Oct 28, 2026
9571a9d
Remove the surgeryFree premise from the emission and reading proofs
johnchandlerburnham Oct 28, 2026
dad25f8
Drop the surgery-sharing accumulators; write metaSharing empty
johnchandlerburnham Oct 28, 2026
43ec185
Merge the PR branch into the toolchain export bridge
johnchandlerburnham Oct 28, 2026
8573155
Merge the PR branch into the polish deletions
johnchandlerburnham Oct 28, 2026
ae791ae
State that the compiled closure is quotient Source renamed
johnchandlerburnham Oct 28, 2026
c9e3e50
Check the finalized artifact before it is written
johnchandlerburnham Oct 28, 2026
e1e0769
Make the certified compiler the command-line default
johnchandlerburnham Oct 28, 2026
e8765d0
Refuse non-scalar code points in IxVM string literals
johnchandlerburnham Oct 28, 2026
6f2d1c1
Merge the PR branch into the certified command-line path
johnchandlerburnham Oct 28, 2026
6841ffb
Range-check every byte the circuits read from IO
johnchandlerburnham Oct 28, 2026
cca4634
Regenerate the generated circuit code
johnchandlerburnham Oct 28, 2026
47da556
Specify the standard axioms' families as inductive blocks
johnchandlerburnham Oct 28, 2026
dba7bb0
Validate the standard axioms' families as blocks in IxVM
johnchandlerburnham Oct 28, 2026
eadc0dd
Regenerate the IxVM Rust code, trace writers and CUDA units
johnchandlerburnham Oct 28, 2026
51f7d71
Admit the standard axioms' families as blocks in the Rust kernel
johnchandlerburnham Oct 28, 2026
c5ce3bf
Bind the default role table at specification version 3
johnchandlerburnham Oct 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
35 changes: 35 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Generated files: GitHub collapses them in diffs and leaves them out of the
# language statistics. Each is regenerated by the tool named above it; CI checks
# the codegen and the trace bundle against their generators (`--check`).

# Aiur codegen of the IxVM, ix_aggr and multi-stark programs (`ix codegen`)
crates/ixvm-codegen/src/aiur_ixvm.rs linguist-generated=true
crates/ixvm-codegen/src/aiur_ix_aggr.rs linguist-generated=true
crates/ixvm-codegen/src/aiur_multi_stark.rs linguist-generated=true

# Trace writers, CUDA units and their manifest (`ix codegen --trace-bundle`)
crates/aiur/src/trace_codegen/programs/ixvm.rs linguist-generated=true
crates/aiur/src/trace_codegen/programs/ixvm_cuda.rs linguist-generated=true
crates/aiur/src/trace_codegen/programs/ix_aggr.rs linguist-generated=true
crates/aiur/src/trace_codegen/programs/ix_aggr_cuda.rs linguist-generated=true
crates/aiur/src/trace_codegen/programs/multi_stark.rs linguist-generated=true
crates/aiur/src/trace_codegen/programs/multi_stark_cuda.rs linguist-generated=true
crates/aiur/cuda/generated/production/** linguist-generated=true

# Trace-codegen test fixtures (`lake exe trace-fixtures`)
crates/aiur/src/trace_codegen/tests/generated.rs linguist-generated=true
crates/aiur/src/trace_codegen/tests/generated_cuda.rs linguist-generated=true
crates/aiur/src/trace_codegen/tests/blake3.rs linguist-generated=true
crates/aiur/src/trace_codegen/tests/blake3_cuda.rs linguist-generated=true
crates/aiur/cuda/generated/blake3.cu linguist-generated=true
crates/aiur/cuda/generated/fixtures.cu linguist-generated=true

# AuxGen's frozen reference outputs; the decoder beside them is hand-written
Tests/Ix/AuxGen/Reference/*.lean linguist-generated=true
Tests/Ix/AuxGen/Reference/JsonTable.lean -linguist-generated

# The default role table, its evidence and the Ixon prelude (`kernel-pin-gen`)
IxC/Kernel/Ixon/RoleData.lean linguist-generated=true

# The compiler's non-canonical record (the `twins` suite's re-record mode)
Tests/Ix/Compile/NonCanonicalDefault.lean linguist-generated=true
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ jobs:
diff lean-toolchain Models/SetTheory/lean-toolchain
- name: Test Ix CLI
if: github.event_name != 'push'
run: lake test --wfail -- cli
run: lake test --wfail -- --tier ci:cli
- name: Test Ixon v4 contracts and consumers
if: github.event_name != 'push'
run: |
Expand Down
39 changes: 14 additions & 25 deletions .github/workflows/merge-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -126,31 +126,26 @@ jobs:
include:
- name: Lake ignored tests (compile pipeline)
kind: lake
test_args: >-
--ignored
rust-canon-roundtrip serial-canon-roundtrip parallel-canon-roundtrip
graph-cross condense-cross rust-serialize ixon-corpus
rust-decompile validate-aux aux-gen-diff decompile-diff
aux-gen-closure canon-closure-aux
test_args: --tier ci:compile-pipeline
- name: Lake ignored tests (compiler closures)
kind: lake
test_args: --tier ci:compiler-closures
- name: Lake ignored tests (compile)
kind: lake
test_args: --ignored compile
test_args: --tier ci:compile
- name: Lake ignored tests (decompile)
kind: lake
test_args: --ignored decompile
test_args: --tier ci:decompile
- name: Lake ignored tests (misc)
kind: lake
test_args: >-
--ignored
shard-map catalog-dedup commit-io fidelity-initstd
kernel-ixon-roundtrip kernel-tutorial kernel-check-env kernel-check-const
rust-kernel-build-primitives rust-kernel-build-prim-origs ixvm
test_args: --tier ci:misc
zk_voting: true
- name: Ix.Tc unit and parity tests
kind: tc
test_args: >-
tc-anon-diff tc-init tc-tutorial tc-roundtrip tc-ingress-meta
tc-pins tc-accel-diff
- name: Lake ignored tests (landing, compilers)
kind: lake
test_args: --tier ci:landing-compilers
- name: Lake ignored tests (landing, Init+Std)
kind: lake
test_args: --tier ci:landing-initstd
- name: Certified kernel
kind: kernel
# On-demand rather than Spot: a reclaimed partition restarts from scratch
Expand All @@ -169,7 +164,7 @@ jobs:
TEST_KIND: ${{ matrix.kind }}
run: |
case "$TEST_KIND" in
lake|tc|kernel) ;;
lake|kernel) ;;
*) echo "::error::Unknown merge-test variant: $TEST_KIND"; exit 1 ;;
esac

Expand Down Expand Up @@ -215,12 +210,6 @@ jobs:
if: ${{ matrix.kind == 'lake' && matrix.zk_voting }}
run: lake exe Apps.ZKVoting.Prover

- name: Run Ix.Tc unit, parity, and regression tests
if: ${{ matrix.kind == 'tc' }}
run: |
lake test --wfail -- tc-unit
lake test --wfail -- --ignored ${{ matrix.test_args }}

# The certified kernel gate (docs/kernel.md): the standalone IxC
# package build, which has no dependencies and so proves the kernel needs
# only the toolchain, then the host tests, the Rust differentials, the
Expand Down
4 changes: 3 additions & 1 deletion Apps/ZKVoting/Prover.lean
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import Ix.Claim
import Ix.Commit
import Ix.ClaimContext
import Ix.Address
import Ix.Meta
import Ix.CompileM
Expand Down Expand Up @@ -52,6 +53,7 @@ def main : IO UInt32 := do
let arg : Lean.Expr ← runMeta (metaMakeList voteType as) env
let (lvls, input, output, type, _sort) ←
runMeta (metaMakeEvalClaim ``runElection [arg]) env
let claim ← IO.ofExcept <| Ix.Commit.evalClaim compileEnv lvls input output type
let ctx ← IO.ofExcept Ix.ClaimContext.ofDefaultTable
let claim ← IO.ofExcept <| Ix.Commit.evalClaim ctx compileEnv lvls input output type
IO.println s!"{claim}"
return 0
11 changes: 11 additions & 0 deletions BENCHMARKS.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,14 @@
> Historical pipeline results (the refresh below is dated 2026-08-07).
> The measurements and methodology describe that pipeline: its `Ix.Tc`
> checker, regenerating Lean decompiler, canonical block order and
> auxiliary regeneration, all since removed. Recorded agreement concerns
> the measured inputs.
>
> Current `ix check-lean` uses IxC and rejects nonzero `--clear-every`,
> including the recorded `--clear-every 50`. The compiler now compiles
> Lean verbatim. See the [current benchmark commands](docs/benchmarking.md#local-usage)
> and [checker contract and commands](docs/kernel.md#environment-check).

# Ix pipeline benchmarks: pure-Lean vs Rust

Head-to-head timings for every stage of the Ix pipeline across three
Expand Down
213 changes: 213 additions & 0 deletions Benchmarks/Canon/IxeDiff.lean
Original file line number Diff line number Diff line change
@@ -0,0 +1,213 @@
/-
ixe-diff: which Lean names changed address between two compiled
environments, grouped by the block they belong to, with a one-word
cause where it can be inferred.

```
ixe-diff <old.ixe> <new.ixe> [--names] [--tsv <rows.tsv>]
```

The join and the per-field classification are
`Ixon.rsDiffEnvFiles` (both files memory-mapped, anonymous structure
only; the ripple verdict marks a row whose change is explained by
re-addressed dependencies). Each changed name is then placed in a group
and given a cause:

* the group is the Muts block its old address projects into, else the
block its new address projects into, else the name alone;
* `cascade`: the constant itself is unchanged; only addresses it refers
to moved (Rust's ripple verdict, which includes a block whose sibling
moved);
* `packaging`: the name moved between a projection and a standalone
constant, or between blocks of different sizes;
* `nested-order`: a projection into a block of the same size at another
index (a permutation of the block);
* `content`: anything else (the constant's own terms changed).

Printed: totals per cause, one line per group (first member, size,
counts per cause), added and removed names, and with `--names` every
changed name. `--tsv` writes `name, group, cause, old kind, new kind`.

Untrusted measurement tooling; it never writes an environment.
-/
import Ix.Ixon

namespace Benchmarks.Canon.IxeDiff

open Ixon

/-- The shape of a constant: standalone (with its kind) or a projection
into a block of `size` members at `idx`. -/
inductive Shape where
| standalone (kind : String)
| proj (kind : String) (block : Address) (idx : UInt64) (size : Nat)
| missing
deriving Inhabited, BEq

def Shape.kind : Shape → String
| .standalone k => k
| .proj k .. => k
| .missing => "missing"

def Shape.block? : Shape → Option Address
| .proj _ b .. => some b
| _ => none

/-- Constant windows of one file. -/
structure Slices where
buf : ByteArray
idx : Std.HashMap Address (Nat × Nat)

def Slices.load (path : String) : IO Slices := do
let buf ← IO.FS.readBinFile path
let raw ← IO.ofExcept (Ixon.rsDeEnvLazyFFI buf)
let idx := raw.consts.foldl (init := {}) fun m s =>
m.insert s.addr (s.offset.toNat, s.len.toNat)
return { buf, idx }

def Slices.get? (s : Slices) (a : Address) : Option Constant :=
match s.idx.get? a with
| some (off, len) => (LazyConstant.ofSlice s.buf off len).get?
| none => none

/-- The shape of the constant at `a`; block sizes are cached. -/
def shapeOf (s : Slices) (cache : IO.Ref (Std.HashMap Address Nat)) (a : Address) :
IO Shape := do
let some c := s.get? a | return .missing
let blockSize (b : Address) : IO Nat := do
if let some n := (← cache.get).get? b then return n
let n := match s.get? b with
| some { info := .muts ms, .. } => ms.size
| _ => 0
cache.modify (·.insert b n)
return n
match c.info with
| .defn _ => return .standalone "defn"
| .recr _ => return .standalone "recr"
| .axio _ => return .standalone "axio"
| .quot _ => return .standalone "quot"
| .muts _ => return .standalone "muts"
| .dPrj p => return .proj "dprj" p.block p.idx (← blockSize p.block)
| .rPrj p => return .proj "rprj" p.block p.idx (← blockSize p.block)
| .iPrj p => return .proj "iprj" p.block p.idx (← blockSize p.block)
| .cPrj p => return .proj "cprj" p.block p.idx (← blockSize p.block)

/-- Packaging: a projection on one side and a standalone constant on the
other, or projections into blocks of different sizes. -/
def isPackaging : Shape → Shape → Bool
| .proj .., .standalone _ => true
| .standalone _, .proj .. => true
| .proj _ _ _ n, .proj _ _ _ m => n != m
| _, _ => false

def isReorder : Shape → Shape → Bool
| .proj _ _ i n, .proj _ _ j m => n == m && i != j
| _, _ => false

structure Row where
name : String
group : String
cause : String
oldKind : String
newKind : String
deriving Inhabited

def groupKey (name : String) (a b : Shape) : String :=
match a.block?, b.block? with
| some x, _ => s!"old:{x}"
| none, some y => s!"new:{y}"
| none, none => s!"name:{name}"

def causes : List String := ["packaging", "nested-order", "cascade", "content"]

/-- Print the grouped report of `rows`. -/
def report (rows : Array Row) (names : Bool) : IO Unit := do
let mut perCause : Std.HashMap String Nat := {}
let mut groups : Std.HashMap String (Array Row) := {}
for r in rows do
perCause := perCause.insert r.cause (perCause.getD r.cause 0 + 1)
groups := groups.insert r.group ((groups.getD r.group #[]).push r)
IO.println <| s!"changed names: {rows.size}; " ++ ", ".intercalate
(causes.map fun c => s!"{c} {perCause.getD c 0}")
-- groups, labelled by their least member name, sorted by label
let labelled := groups.toArray.map fun (_, rs) =>
let sorted := rs.qsort (·.name < ·.name)
(sorted[0]!.name, sorted)
let labelled := labelled.qsort (·.1 < ·.1)
let mut groupsPerCause : Std.HashMap String Nat := {}
for (_, rs) in labelled do
let main := causes.find? (fun c => rs.any (·.cause == c)) |>.getD "content"
groupsPerCause := groupsPerCause.insert main (groupsPerCause.getD main 0 + 1)
IO.println <| s!"groups: {labelled.size}; by leading cause: " ++ ", ".intercalate
(causes.map fun c => s!"{c} {groupsPerCause.getD c 0}")
for (label, rs) in labelled do
let counts := causes.filterMap fun c =>
let n := rs.foldl (fun k r => if r.cause == c then k + 1 else k) 0
if n == 0 then none else some s!"{c} {n}"
IO.println s!" {label} ({rs.size}): {", ".intercalate counts}"
if names then
for r in rs do
let kind := if r.oldKind == r.newKind then r.oldKind else s!"{r.oldKind}→{r.newKind}"
IO.println s!" {r.name} {kind} {r.cause}"

def writeTsv (path : String) (rows : Array Row) : IO Unit := do
let lines := rows.map fun r => s!"{r.name}\t{r.group}\t{r.cause}\t{r.oldKind}\t{r.newKind}"
IO.FS.writeFile path ("name\tgroup\tcause\told_kind\tnew_kind\n" ++ "\n".intercalate lines.toList ++ "\n")

def diffMode (oldPath newPath : String) (names : Bool) (tsv? : Option String) : IO UInt32 := do
let t0 ← IO.monoMsNow
if ← Ixon.rsIxeFilesEqual oldPath newPath then
IO.println "identical"
return 0
let d ← Ixon.rsDiffEnvFiles oldPath newPath false
IO.eprintln s!"[ixe-diff] diff: {d.namedChanged.size} changed, {d.namedAdded.size} added, \
{d.namedRemoved.size} removed ({(← IO.monoMsNow) - t0} ms)"
let sa ← Slices.load oldPath
let sb ← Slices.load newPath
let ca ← IO.mkRef ({} : Std.HashMap Address Nat)
let cb ← IO.mkRef ({} : Std.HashMap Address Nat)
let mut rows : Array Row := #[]
for c in d.namedChanged do
-- synthetic Muts names (`Ix.<block hash>.…`) never join as changed rows
let a ← shapeOf sa ca c.oldAddr
let b ← shapeOf sb cb c.newAddr
let cause :=
if c.rippled then "cascade"
else if isPackaging a b then "packaging"
else if isReorder a b then "nested-order"
else "content"
rows := rows.push { name := c.name, group := groupKey c.name a b, cause,
oldKind := a.kind, newKind := b.kind }
IO.println s!"# ixe-diff {oldPath} → {newPath}"
report rows names
let isSyn (s : String) : Bool := s.startsWith "Ix." && ((s.drop 3).takeWhile (· != '.')).positions.length == 64
let added := d.namedAdded.filter (!isSyn ·.1)
let removed := d.namedRemoved.filter (!isSyn ·.1)
IO.println s!"added names: {added.size}; removed names: {removed.size} \
(synthetic block names: {d.namedAdded.size - added.size} added, \
{d.namedRemoved.size - removed.size} removed)"
if names then
for (n, _) in added do IO.println s!" + {n}"
for (n, _) in removed do IO.println s!" - {n}"
if let some p := tsv? then writeTsv p rows
IO.eprintln s!"[ixe-diff] done ({(← IO.monoMsNow) - t0} ms)"
return if rows.isEmpty && added.isEmpty && removed.isEmpty then 0 else 1

def usage : String :=
"usage: ixe-diff <old.ixe> <new.ixe> [--names] [--tsv <rows.tsv>]"

def main (args : List String) : IO UInt32 := do
let rec flags (acc : Bool × Option String) : List String → Option (Bool × Option String)
| [] => some acc
| "--names" :: rest => flags (true, acc.2) rest
| "--tsv" :: p :: rest => flags (acc.1, some p) rest
| _ => none
match args with
| a :: b :: rest =>
let some (names, tsv?) := flags (false, none) rest | IO.eprintln usage; return 2
diffMode a b names tsv?
| _ => IO.eprintln usage; return 2

end Benchmarks.Canon.IxeDiff

def main (args : List String) : IO UInt32 := Benchmarks.Canon.IxeDiff.main args
Loading
Loading