Aiur verified-compiler proof scaffolding - #399

Open
arthurpaulino wants to merge 1 commit into
mainfrom
ap/aiur-compiler
Open

Aiur verified-compiler proof scaffolding#399
arthurpaulino wants to merge 1 commit into
mainfrom
ap/aiur-compiler

Conversation

@arthurpaulino

Copy link
Copy Markdown
Member

Summary

End-to-end Lean proof scaffolding for the Aiur compiler pipeline, landing Aiur.Toplevel.compile_correct modulo 16 named axioms sitting next to the theorems they replace. Build is green, no sorrys, no warnings.

Pipeline

Source.Toplevel
├── mkDecls → Source.Decls
├── checkAndSimplify → Typed.Decls
├── concretize → Concrete.Decls
├── lower → Bytecode + preNameMap
└── deduplicate → Bytecode + remap

compile_correct composes three top-level lemmas:

  1. compile_progress_entry (Progress)
  2. compile_preservation_entry (Preservation)
  3. compile_correct_concRetFnFree_entry (FnFree projection)

Organization

  • Ix/Aiur/Semantics/ — semantic predicates and evaluator definitions (WellFormed, TypedEval, ConcreteEval, DrainInvariants, Relation, etc.). Anything that defines what a program means.
  • Ix/Aiur/Proofs/ — proof modules. Proof-internal predicates kept in self-contained contexts; cross-cutting predicates lifted into Semantics/.
  • Each remaining axiom lives in the file of its consumer theorem, declared at the dispatch site with a closure-plan docstring (file/line target, closure path, infrastructure to reuse, dependency notes, LoC estimate, risk factors).

Cross-evaluator value bridging

The cross-evaluator value bridge is carried by ValueR (in Proofs/Simulation.lean), routing concrete-eval ctors at polymorphic-mangled keys (e.g. Option_U32.None) to source ctors with no same-key preimage. The TermBridge.app constructor carries a name-map witness
(concretizeName g_src tArgs = g_conc ∨ same-key).

Axioms (16)

Each axiom is grouped by the file where it lives, with its consumer theorem.

Proofs/LowerSoundControl.lean

  • interp_preserves_ValueHasTyp
  • Function_body_preservation_succ_fuel

Proofs/ConcretizeSound/Layout.lean

  • dataTypeFlatSize_bound_saturation_wf

Proofs/ConcretizeSound/SizeBound.lean

  • Global.toString_init
  • dt.params parser-shape invariant
  • MonoShape projection
  • spine_transfer_aux.tuple arm
  • spine_transfer_aux.array arm
  • spine_transfer_aux.app mono-hit arm
  • mkParamSubst_some_implies_param

Proofs/CompilerProgress.lean

  • body_compile_ok
  • function_compile_progress_entry

Proofs/StructCompatible.lean

  • typFlatSize_eq_typSize_under_match_wf (CLOSED — kept named)
  • compile_ok_implies_struct_compatible_of_entry

Proofs/Simulation.lean

  • step_R_preservation_applyGlobal

Proofs/CompilerCorrect.lean

  • body_termBridge_at_function_key

Invariants

  1. Wiring discipline — every theorem in Ix/Aiur/Proofs/*.lean (except compile_correct) is transitively reachable from compile_correct. Orphan-free.
  2. No body sorries — every remaining work-unit is a named axiom with a sig + closure docstring sitting next to its consumer.
  3. Sig stability — axiom signatures are locked; sig changes require explicit amendment documented in the axiom's docstring.

Stats

  • ~59 files changed, ~64k insertions
  • 277 build jobs green
  • 0 sorries, 0 warnings
  • 16 axioms, each with closure docstring

Test plan

  • lake build green
  • No sorry reachable from compile_correct
  • No warnings
  • Orphan check: every Proofs theorem reaches compile_correct

## Summary
End-to-end Lean proof scaffolding for the Aiur compiler pipeline,
landing `Aiur.Toplevel.compile_correct` modulo **16 named axioms**
sitting next to the theorems they replace. Build is green, no
`sorry`s, no warnings.
## Pipeline
```
Source.Toplevel
├── mkDecls → Source.Decls
├── checkAndSimplify → Typed.Decls
├── concretize → Concrete.Decls
├── lower → Bytecode + preNameMap
└── deduplicate → Bytecode + remap
```
`compile_correct` composes three top-level lemmas:
1. `compile_progress_entry` (Progress)
2. `compile_preservation_entry` (Preservation)
3. `compile_correct_concRetFnFree_entry` (FnFree projection)
## Organization
- `Ix/Aiur/Semantics/` — semantic predicates and evaluator
definitions (`WellFormed`, `TypedEval`, `ConcreteEval`,
`DrainInvariants`, `Relation`, etc.). Anything that defines
what a program *means*.
- `Ix/Aiur/Proofs/` — proof modules. Proof-internal predicates
kept in self-contained contexts; cross-cutting predicates
lifted into `Semantics/`.
- Each remaining axiom lives in the file of its consumer
theorem, declared at the dispatch site with a closure-plan
docstring (file/line target, closure path, infrastructure to
reuse, dependency notes, LoC estimate, risk factors).
## Cross-evaluator value bridging
The cross-evaluator value bridge is carried by `ValueR` (in
`Proofs/Simulation.lean`), routing concrete-eval ctors at
polymorphic-mangled keys (e.g. `Option_U32.None`) to source
ctors with no same-key preimage. The `TermBridge.app` constructor
carries a name-map witness
`(concretizeName g_src tArgs = g_conc ∨ same-key)`.
## Axioms (16)
Each axiom is grouped by the file where it lives, with its consumer
theorem.
**`Proofs/LowerSoundControl.lean`**
- `interp_preserves_ValueHasTyp`
- `Function_body_preservation_succ_fuel`
**`Proofs/ConcretizeSound/Layout.lean`**
- `dataTypeFlatSize_bound_saturation_wf`
**`Proofs/ConcretizeSound/SizeBound.lean`**
- `Global.toString_init`
- `dt.params` parser-shape invariant
- `MonoShape` projection
- `spine_transfer_aux` `.tuple` arm
- `spine_transfer_aux` `.array` arm
- `spine_transfer_aux` `.app` mono-hit arm
- `mkParamSubst_some_implies_param`
**`Proofs/CompilerProgress.lean`**
- `body_compile_ok`
- `function_compile_progress_entry`
**`Proofs/StructCompatible.lean`**
- `typFlatSize_eq_typSize_under_match_wf` (CLOSED — kept named)
- `compile_ok_implies_struct_compatible_of_entry`
**`Proofs/Simulation.lean`**
- `step_R_preservation_applyGlobal`
**`Proofs/CompilerCorrect.lean`**
- `body_termBridge_at_function_key`
## Invariants
1. **Wiring discipline** — every theorem in `Ix/Aiur/Proofs/*.lean`
(except `compile_correct`) is transitively reachable from
`compile_correct`. Orphan-free.
2. **No body sorries** — every remaining work-unit is a named
axiom with a sig + closure docstring sitting next to its
consumer.
3. **Sig stability** — axiom signatures are locked; sig changes
require explicit amendment documented in the axiom's
docstring.
## Stats
- ~59 files changed, ~64k insertions
- 277 build jobs green
- 0 sorries, 0 warnings
- 16 axioms, each with closure docstring
## Test plan
- [x] `lake build` green
- [x] No `sorry` reachable from `compile_correct`
- [x] No warnings
- [x] Orphan check: every Proofs theorem reaches `compile_correct`
Sign up for freeto 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

@arthurpaulino
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Aiur verified-compiler proof scaffolding - #399

Open
arthurpaulino wants to merge 1 commit into
mainfrom
ap/aiur-compiler
Open

Aiur verified-compiler proof scaffolding#399
arthurpaulino wants to merge 1 commit into
mainfrom
ap/aiur-compiler

Conversation

@arthurpaulino

Copy link
Copy Markdown
Member

Summary

End-to-end Lean proof scaffolding for the Aiur compiler pipeline, landing Aiur.Toplevel.compile_correct modulo 16 named axioms sitting next to the theorems they replace. Build is green, no sorrys, no warnings.

Pipeline

Source.Toplevel
├── mkDecls → Source.Decls
├── checkAndSimplify → Typed.Decls
├── concretize → Concrete.Decls
├── lower → Bytecode + preNameMap
└── deduplicate → Bytecode + remap

compile_correct composes three top-level lemmas:

  1. compile_progress_entry (Progress)
  2. compile_preservation_entry (Preservation)
  3. compile_correct_concRetFnFree_entry (FnFree projection)

Organization

  • Ix/Aiur/Semantics/ — semantic predicates and evaluator definitions (WellFormed, TypedEval, ConcreteEval, DrainInvariants, Relation, etc.). Anything that defines what a program means.
  • Ix/Aiur/Proofs/ — proof modules. Proof-internal predicates kept in self-contained contexts; cross-cutting predicates lifted into Semantics/.
  • Each remaining axiom lives in the file of its consumer theorem, declared at the dispatch site with a closure-plan docstring (file/line target, closure path, infrastructure to reuse, dependency notes, LoC estimate, risk factors).

Cross-evaluator value bridging

The cross-evaluator value bridge is carried by ValueR (in Proofs/Simulation.lean), routing concrete-eval ctors at polymorphic-mangled keys (e.g. Option_U32.None) to source ctors with no same-key preimage. The TermBridge.app constructor carries a name-map witness
(concretizeName g_src tArgs = g_conc ∨ same-key).

Axioms (16)

Each axiom is grouped by the file where it lives, with its consumer theorem.

Proofs/LowerSoundControl.lean

  • interp_preserves_ValueHasTyp
  • Function_body_preservation_succ_fuel

Proofs/ConcretizeSound/Layout.lean

  • dataTypeFlatSize_bound_saturation_wf

Proofs/ConcretizeSound/SizeBound.lean

  • Global.toString_init
  • dt.params parser-shape invariant
  • MonoShape projection
  • spine_transfer_aux.tuple arm
  • spine_transfer_aux.array arm
  • spine_transfer_aux.app mono-hit arm
  • mkParamSubst_some_implies_param

Proofs/CompilerProgress.lean

  • body_compile_ok
  • function_compile_progress_entry

Proofs/StructCompatible.lean

  • typFlatSize_eq_typSize_under_match_wf (CLOSED — kept named)
  • compile_ok_implies_struct_compatible_of_entry

Proofs/Simulation.lean

  • step_R_preservation_applyGlobal

Proofs/CompilerCorrect.lean

  • body_termBridge_at_function_key

Invariants

  1. Wiring discipline — every theorem in Ix/Aiur/Proofs/*.lean (except compile_correct) is transitively reachable from compile_correct. Orphan-free.
  2. No body sorries — every remaining work-unit is a named axiom with a sig + closure docstring sitting next to its consumer.
  3. Sig stability — axiom signatures are locked; sig changes require explicit amendment documented in the axiom's docstring.

Stats

  • ~59 files changed, ~64k insertions
  • 277 build jobs green
  • 0 sorries, 0 warnings
  • 16 axioms, each with closure docstring

Test plan

  • lake build green
  • No sorry reachable from compile_correct
  • No warnings
  • Orphan check: every Proofs theorem reaches compile_correct

## Summary
End-to-end Lean proof scaffolding for the Aiur compiler pipeline,
landing `Aiur.Toplevel.compile_correct` modulo **16 named axioms**
sitting next to the theorems they replace. Build is green, no
`sorry`s, no warnings.
## Pipeline
```
Source.Toplevel
├── mkDecls → Source.Decls
├── checkAndSimplify → Typed.Decls
├── concretize → Concrete.Decls
├── lower → Bytecode + preNameMap
└── deduplicate → Bytecode + remap
```
`compile_correct` composes three top-level lemmas:
1. `compile_progress_entry` (Progress)
2. `compile_preservation_entry` (Preservation)
3. `compile_correct_concRetFnFree_entry` (FnFree projection)
## Organization
- `Ix/Aiur/Semantics/` — semantic predicates and evaluator
definitions (`WellFormed`, `TypedEval`, `ConcreteEval`,
`DrainInvariants`, `Relation`, etc.). Anything that defines
what a program *means*.
- `Ix/Aiur/Proofs/` — proof modules. Proof-internal predicates
kept in self-contained contexts; cross-cutting predicates
lifted into `Semantics/`.
- Each remaining axiom lives in the file of its consumer
theorem, declared at the dispatch site with a closure-plan
docstring (file/line target, closure path, infrastructure to
reuse, dependency notes, LoC estimate, risk factors).
## Cross-evaluator value bridging
The cross-evaluator value bridge is carried by `ValueR` (in
`Proofs/Simulation.lean`), routing concrete-eval ctors at
polymorphic-mangled keys (e.g. `Option_U32.None`) to source
ctors with no same-key preimage. The `TermBridge.app` constructor
carries a name-map witness
`(concretizeName g_src tArgs = g_conc ∨ same-key)`.
## Axioms (16)
Each axiom is grouped by the file where it lives, with its consumer
theorem.
**`Proofs/LowerSoundControl.lean`**
- `interp_preserves_ValueHasTyp`
- `Function_body_preservation_succ_fuel`
**`Proofs/ConcretizeSound/Layout.lean`**
- `dataTypeFlatSize_bound_saturation_wf`
**`Proofs/ConcretizeSound/SizeBound.lean`**
- `Global.toString_init`
- `dt.params` parser-shape invariant
- `MonoShape` projection
- `spine_transfer_aux` `.tuple` arm
- `spine_transfer_aux` `.array` arm
- `spine_transfer_aux` `.app` mono-hit arm
- `mkParamSubst_some_implies_param`
**`Proofs/CompilerProgress.lean`**
- `body_compile_ok`
- `function_compile_progress_entry`
**`Proofs/StructCompatible.lean`**
- `typFlatSize_eq_typSize_under_match_wf` (CLOSED — kept named)
- `compile_ok_implies_struct_compatible_of_entry`
**`Proofs/Simulation.lean`**
- `step_R_preservation_applyGlobal`
**`Proofs/CompilerCorrect.lean`**
- `body_termBridge_at_function_key`
## Invariants
1. **Wiring discipline** — every theorem in `Ix/Aiur/Proofs/*.lean`
(except `compile_correct`) is transitively reachable from
`compile_correct`. Orphan-free.
2. **No body sorries** — every remaining work-unit is a named
axiom with a sig + closure docstring sitting next to its
consumer.
3. **Sig stability** — axiom signatures are locked; sig changes
require explicit amendment documented in the axiom's
docstring.
## Stats
- ~59 files changed, ~64k insertions
- 277 build jobs green
- 0 sorries, 0 warnings
- 16 axioms, each with closure docstring
## Test plan
- [x] `lake build` green
- [x] No `sorry` reachable from `compile_correct`
- [x] No warnings
- [x] Orphan check: every Proofs theorem reaches `compile_correct`
Sign up for freeto 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

@arthurpaulino
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Aiur verified-compiler proof scaffolding - #399

Open
arthurpaulino wants to merge 1 commit into
mainfrom
ap/aiur-compiler
Open

Aiur verified-compiler proof scaffolding#399
arthurpaulino wants to merge 1 commit into
mainfrom
ap/aiur-compiler

Conversation

@arthurpaulino

Copy link
Copy Markdown
Member

Summary

End-to-end Lean proof scaffolding for the Aiur compiler pipeline, landing Aiur.Toplevel.compile_correct modulo 16 named axioms sitting next to the theorems they replace. Build is green, no sorrys, no warnings.

Pipeline

Source.Toplevel
├── mkDecls → Source.Decls
├── checkAndSimplify → Typed.Decls
├── concretize → Concrete.Decls
├── lower → Bytecode + preNameMap
└── deduplicate → Bytecode + remap

compile_correct composes three top-level lemmas:

  1. compile_progress_entry (Progress)
  2. compile_preservation_entry (Preservation)
  3. compile_correct_concRetFnFree_entry (FnFree projection)

Organization

  • Ix/Aiur/Semantics/ — semantic predicates and evaluator definitions (WellFormed, TypedEval, ConcreteEval, DrainInvariants, Relation, etc.). Anything that defines what a program means.
  • Ix/Aiur/Proofs/ — proof modules. Proof-internal predicates kept in self-contained contexts; cross-cutting predicates lifted into Semantics/.
  • Each remaining axiom lives in the file of its consumer theorem, declared at the dispatch site with a closure-plan docstring (file/line target, closure path, infrastructure to reuse, dependency notes, LoC estimate, risk factors).

Cross-evaluator value bridging

The cross-evaluator value bridge is carried by ValueR (in Proofs/Simulation.lean), routing concrete-eval ctors at polymorphic-mangled keys (e.g. Option_U32.None) to source ctors with no same-key preimage. The TermBridge.app constructor carries a name-map witness
(concretizeName g_src tArgs = g_conc ∨ same-key).

Axioms (16)

Each axiom is grouped by the file where it lives, with its consumer theorem.

Proofs/LowerSoundControl.lean

  • interp_preserves_ValueHasTyp
  • Function_body_preservation_succ_fuel

Proofs/ConcretizeSound/Layout.lean

  • dataTypeFlatSize_bound_saturation_wf

Proofs/ConcretizeSound/SizeBound.lean

  • Global.toString_init
  • dt.params parser-shape invariant
  • MonoShape projection
  • spine_transfer_aux.tuple arm
  • spine_transfer_aux.array arm
  • spine_transfer_aux.app mono-hit arm
  • mkParamSubst_some_implies_param

Proofs/CompilerProgress.lean

  • body_compile_ok
  • function_compile_progress_entry

Proofs/StructCompatible.lean

  • typFlatSize_eq_typSize_under_match_wf (CLOSED — kept named)
  • compile_ok_implies_struct_compatible_of_entry

Proofs/Simulation.lean

  • step_R_preservation_applyGlobal

Proofs/CompilerCorrect.lean

  • body_termBridge_at_function_key

Invariants

  1. Wiring discipline — every theorem in Ix/Aiur/Proofs/*.lean (except compile_correct) is transitively reachable from compile_correct. Orphan-free.
  2. No body sorries — every remaining work-unit is a named axiom with a sig + closure docstring sitting next to its consumer.
  3. Sig stability — axiom signatures are locked; sig changes require explicit amendment documented in the axiom's docstring.

Stats

  • ~59 files changed, ~64k insertions
  • 277 build jobs green
  • 0 sorries, 0 warnings
  • 16 axioms, each with closure docstring

Test plan

  • lake build green
  • No sorry reachable from compile_correct
  • No warnings
  • Orphan check: every Proofs theorem reaches compile_correct

## Summary
End-to-end Lean proof scaffolding for the Aiur compiler pipeline,
landing `Aiur.Toplevel.compile_correct` modulo **16 named axioms**
sitting next to the theorems they replace. Build is green, no
`sorry`s, no warnings.
## Pipeline
```
Source.Toplevel
├── mkDecls → Source.Decls
├── checkAndSimplify → Typed.Decls
├── concretize → Concrete.Decls
├── lower → Bytecode + preNameMap
└── deduplicate → Bytecode + remap
```
`compile_correct` composes three top-level lemmas:
1. `compile_progress_entry` (Progress)
2. `compile_preservation_entry` (Preservation)
3. `compile_correct_concRetFnFree_entry` (FnFree projection)
## Organization
- `Ix/Aiur/Semantics/` — semantic predicates and evaluator
definitions (`WellFormed`, `TypedEval`, `ConcreteEval`,
`DrainInvariants`, `Relation`, etc.). Anything that defines
what a program *means*.
- `Ix/Aiur/Proofs/` — proof modules. Proof-internal predicates
kept in self-contained contexts; cross-cutting predicates
lifted into `Semantics/`.
- Each remaining axiom lives in the file of its consumer
theorem, declared at the dispatch site with a closure-plan
docstring (file/line target, closure path, infrastructure to
reuse, dependency notes, LoC estimate, risk factors).
## Cross-evaluator value bridging
The cross-evaluator value bridge is carried by `ValueR` (in
`Proofs/Simulation.lean`), routing concrete-eval ctors at
polymorphic-mangled keys (e.g. `Option_U32.None`) to source
ctors with no same-key preimage. The `TermBridge.app` constructor
carries a name-map witness
`(concretizeName g_src tArgs = g_conc ∨ same-key)`.
## Axioms (16)
Each axiom is grouped by the file where it lives, with its consumer
theorem.
**`Proofs/LowerSoundControl.lean`**
- `interp_preserves_ValueHasTyp`
- `Function_body_preservation_succ_fuel`
**`Proofs/ConcretizeSound/Layout.lean`**
- `dataTypeFlatSize_bound_saturation_wf`
**`Proofs/ConcretizeSound/SizeBound.lean`**
- `Global.toString_init`
- `dt.params` parser-shape invariant
- `MonoShape` projection
- `spine_transfer_aux` `.tuple` arm
- `spine_transfer_aux` `.array` arm
- `spine_transfer_aux` `.app` mono-hit arm
- `mkParamSubst_some_implies_param`
**`Proofs/CompilerProgress.lean`**
- `body_compile_ok`
- `function_compile_progress_entry`
**`Proofs/StructCompatible.lean`**
- `typFlatSize_eq_typSize_under_match_wf` (CLOSED — kept named)
- `compile_ok_implies_struct_compatible_of_entry`
**`Proofs/Simulation.lean`**
- `step_R_preservation_applyGlobal`
**`Proofs/CompilerCorrect.lean`**
- `body_termBridge_at_function_key`
## Invariants
1. **Wiring discipline** — every theorem in `Ix/Aiur/Proofs/*.lean`
(except `compile_correct`) is transitively reachable from
`compile_correct`. Orphan-free.
2. **No body sorries** — every remaining work-unit is a named
axiom with a sig + closure docstring sitting next to its
consumer.
3. **Sig stability** — axiom signatures are locked; sig changes
require explicit amendment documented in the axiom's
docstring.
## Stats
- ~59 files changed, ~64k insertions
- 277 build jobs green
- 0 sorries, 0 warnings
- 16 axioms, each with closure docstring
## Test plan
- [x] `lake build` green
- [x] No `sorry` reachable from `compile_correct`
- [x] No warnings
- [x] Orphan check: every Proofs theorem reaches `compile_correct`
Sign up for freeto 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

@arthurpaulino
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Aiur verified-compiler proof scaffolding - #399

Open
arthurpaulino wants to merge 1 commit into
mainfrom
ap/aiur-compiler
Open

Aiur verified-compiler proof scaffolding#399
arthurpaulino wants to merge 1 commit into
mainfrom
ap/aiur-compiler

Conversation

@arthurpaulino

Copy link
Copy Markdown
Member

Summary

End-to-end Lean proof scaffolding for the Aiur compiler pipeline, landing Aiur.Toplevel.compile_correct modulo 16 named axioms sitting next to the theorems they replace. Build is green, no sorrys, no warnings.

Pipeline

Source.Toplevel
├── mkDecls → Source.Decls
├── checkAndSimplify → Typed.Decls
├── concretize → Concrete.Decls
├── lower → Bytecode + preNameMap
└── deduplicate → Bytecode + remap

compile_correct composes three top-level lemmas:

  1. compile_progress_entry (Progress)
  2. compile_preservation_entry (Preservation)
  3. compile_correct_concRetFnFree_entry (FnFree projection)

Organization

  • Ix/Aiur/Semantics/ — semantic predicates and evaluator definitions (WellFormed, TypedEval, ConcreteEval, DrainInvariants, Relation, etc.). Anything that defines what a program means.
  • Ix/Aiur/Proofs/ — proof modules. Proof-internal predicates kept in self-contained contexts; cross-cutting predicates lifted into Semantics/.
  • Each remaining axiom lives in the file of its consumer theorem, declared at the dispatch site with a closure-plan docstring (file/line target, closure path, infrastructure to reuse, dependency notes, LoC estimate, risk factors).

Cross-evaluator value bridging

The cross-evaluator value bridge is carried by ValueR (in Proofs/Simulation.lean), routing concrete-eval ctors at polymorphic-mangled keys (e.g. Option_U32.None) to source ctors with no same-key preimage. The TermBridge.app constructor carries a name-map witness
(concretizeName g_src tArgs = g_conc ∨ same-key).

Axioms (16)

Each axiom is grouped by the file where it lives, with its consumer theorem.

Proofs/LowerSoundControl.lean

  • interp_preserves_ValueHasTyp
  • Function_body_preservation_succ_fuel

Proofs/ConcretizeSound/Layout.lean

  • dataTypeFlatSize_bound_saturation_wf

Proofs/ConcretizeSound/SizeBound.lean

  • Global.toString_init
  • dt.params parser-shape invariant
  • MonoShape projection
  • spine_transfer_aux.tuple arm
  • spine_transfer_aux.array arm
  • spine_transfer_aux.app mono-hit arm
  • mkParamSubst_some_implies_param

Proofs/CompilerProgress.lean

  • body_compile_ok
  • function_compile_progress_entry

Proofs/StructCompatible.lean

  • typFlatSize_eq_typSize_under_match_wf (CLOSED — kept named)
  • compile_ok_implies_struct_compatible_of_entry

Proofs/Simulation.lean

  • step_R_preservation_applyGlobal

Proofs/CompilerCorrect.lean

  • body_termBridge_at_function_key

Invariants

  1. Wiring discipline — every theorem in Ix/Aiur/Proofs/*.lean (except compile_correct) is transitively reachable from compile_correct. Orphan-free.
  2. No body sorries — every remaining work-unit is a named axiom with a sig + closure docstring sitting next to its consumer.
  3. Sig stability — axiom signatures are locked; sig changes require explicit amendment documented in the axiom's docstring.

Stats

  • ~59 files changed, ~64k insertions
  • 277 build jobs green
  • 0 sorries, 0 warnings
  • 16 axioms, each with closure docstring

Test plan

  • lake build green
  • No sorry reachable from compile_correct
  • No warnings
  • Orphan check: every Proofs theorem reaches compile_correct

## Summary
End-to-end Lean proof scaffolding for the Aiur compiler pipeline,
landing `Aiur.Toplevel.compile_correct` modulo **16 named axioms**
sitting next to the theorems they replace. Build is green, no
`sorry`s, no warnings.
## Pipeline
```
Source.Toplevel
├── mkDecls → Source.Decls
├── checkAndSimplify → Typed.Decls
├── concretize → Concrete.Decls
├── lower → Bytecode + preNameMap
└── deduplicate → Bytecode + remap
```
`compile_correct` composes three top-level lemmas:
1. `compile_progress_entry` (Progress)
2. `compile_preservation_entry` (Preservation)
3. `compile_correct_concRetFnFree_entry` (FnFree projection)
## Organization
- `Ix/Aiur/Semantics/` — semantic predicates and evaluator
definitions (`WellFormed`, `TypedEval`, `ConcreteEval`,
`DrainInvariants`, `Relation`, etc.). Anything that defines
what a program *means*.
- `Ix/Aiur/Proofs/` — proof modules. Proof-internal predicates
kept in self-contained contexts; cross-cutting predicates
lifted into `Semantics/`.
- Each remaining axiom lives in the file of its consumer
theorem, declared at the dispatch site with a closure-plan
docstring (file/line target, closure path, infrastructure to
reuse, dependency notes, LoC estimate, risk factors).
## Cross-evaluator value bridging
The cross-evaluator value bridge is carried by `ValueR` (in
`Proofs/Simulation.lean`), routing concrete-eval ctors at
polymorphic-mangled keys (e.g. `Option_U32.None`) to source
ctors with no same-key preimage. The `TermBridge.app` constructor
carries a name-map witness
`(concretizeName g_src tArgs = g_conc ∨ same-key)`.
## Axioms (16)
Each axiom is grouped by the file where it lives, with its consumer
theorem.
**`Proofs/LowerSoundControl.lean`**
- `interp_preserves_ValueHasTyp`
- `Function_body_preservation_succ_fuel`
**`Proofs/ConcretizeSound/Layout.lean`**
- `dataTypeFlatSize_bound_saturation_wf`
**`Proofs/ConcretizeSound/SizeBound.lean`**
- `Global.toString_init`
- `dt.params` parser-shape invariant
- `MonoShape` projection
- `spine_transfer_aux` `.tuple` arm
- `spine_transfer_aux` `.array` arm
- `spine_transfer_aux` `.app` mono-hit arm
- `mkParamSubst_some_implies_param`
**`Proofs/CompilerProgress.lean`**
- `body_compile_ok`
- `function_compile_progress_entry`
**`Proofs/StructCompatible.lean`**
- `typFlatSize_eq_typSize_under_match_wf` (CLOSED — kept named)
- `compile_ok_implies_struct_compatible_of_entry`
**`Proofs/Simulation.lean`**
- `step_R_preservation_applyGlobal`
**`Proofs/CompilerCorrect.lean`**
- `body_termBridge_at_function_key`
## Invariants
1. **Wiring discipline** — every theorem in `Ix/Aiur/Proofs/*.lean`
(except `compile_correct`) is transitively reachable from
`compile_correct`. Orphan-free.
2. **No body sorries** — every remaining work-unit is a named
axiom with a sig + closure docstring sitting next to its
consumer.
3. **Sig stability** — axiom signatures are locked; sig changes
require explicit amendment documented in the axiom's
docstring.
## Stats
- ~59 files changed, ~64k insertions
- 277 build jobs green
- 0 sorries, 0 warnings
- 16 axioms, each with closure docstring
## Test plan
- [x] `lake build` green
- [x] No `sorry` reachable from `compile_correct`
- [x] No warnings
- [x] Orphan check: every Proofs theorem reaches `compile_correct`
Sign up for freeto 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

@arthurpaulino
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Aiur verified-compiler proof scaffolding - #399

Open
arthurpaulino wants to merge 1 commit into
mainfrom
ap/aiur-compiler
Open

Aiur verified-compiler proof scaffolding#399
arthurpaulino wants to merge 1 commit into
mainfrom
ap/aiur-compiler

Conversation

@arthurpaulino

Copy link
Copy Markdown
Member

Summary

End-to-end Lean proof scaffolding for the Aiur compiler pipeline, landing Aiur.Toplevel.compile_correct modulo 16 named axioms sitting next to the theorems they replace. Build is green, no sorrys, no warnings.

Pipeline

Source.Toplevel
├── mkDecls → Source.Decls
├── checkAndSimplify → Typed.Decls
├── concretize → Concrete.Decls
├── lower → Bytecode + preNameMap
└── deduplicate → Bytecode + remap

compile_correct composes three top-level lemmas:

  1. compile_progress_entry (Progress)
  2. compile_preservation_entry (Preservation)
  3. compile_correct_concRetFnFree_entry (FnFree projection)

Organization

  • Ix/Aiur/Semantics/ — semantic predicates and evaluator definitions (WellFormed, TypedEval, ConcreteEval, DrainInvariants, Relation, etc.). Anything that defines what a program means.
  • Ix/Aiur/Proofs/ — proof modules. Proof-internal predicates kept in self-contained contexts; cross-cutting predicates lifted into Semantics/.
  • Each remaining axiom lives in the file of its consumer theorem, declared at the dispatch site with a closure-plan docstring (file/line target, closure path, infrastructure to reuse, dependency notes, LoC estimate, risk factors).

Cross-evaluator value bridging

The cross-evaluator value bridge is carried by ValueR (in Proofs/Simulation.lean), routing concrete-eval ctors at polymorphic-mangled keys (e.g. Option_U32.None) to source ctors with no same-key preimage. The TermBridge.app constructor carries a name-map witness
(concretizeName g_src tArgs = g_conc ∨ same-key).

Axioms (16)

Each axiom is grouped by the file where it lives, with its consumer theorem.

Proofs/LowerSoundControl.lean

  • interp_preserves_ValueHasTyp
  • Function_body_preservation_succ_fuel

Proofs/ConcretizeSound/Layout.lean

  • dataTypeFlatSize_bound_saturation_wf

Proofs/ConcretizeSound/SizeBound.lean

  • Global.toString_init
  • dt.params parser-shape invariant
  • MonoShape projection
  • spine_transfer_aux.tuple arm
  • spine_transfer_aux.array arm
  • spine_transfer_aux.app mono-hit arm
  • mkParamSubst_some_implies_param

Proofs/CompilerProgress.lean

  • body_compile_ok
  • function_compile_progress_entry

Proofs/StructCompatible.lean

  • typFlatSize_eq_typSize_under_match_wf (CLOSED — kept named)
  • compile_ok_implies_struct_compatible_of_entry

Proofs/Simulation.lean

  • step_R_preservation_applyGlobal

Proofs/CompilerCorrect.lean

  • body_termBridge_at_function_key

Invariants

  1. Wiring discipline — every theorem in Ix/Aiur/Proofs/*.lean (except compile_correct) is transitively reachable from compile_correct. Orphan-free.
  2. No body sorries — every remaining work-unit is a named axiom with a sig + closure docstring sitting next to its consumer.
  3. Sig stability — axiom signatures are locked; sig changes require explicit amendment documented in the axiom's docstring.

Stats

  • ~59 files changed, ~64k insertions
  • 277 build jobs green
  • 0 sorries, 0 warnings
  • 16 axioms, each with closure docstring

Test plan

  • lake build green
  • No sorry reachable from compile_correct
  • No warnings
  • Orphan check: every Proofs theorem reaches compile_correct

## Summary
End-to-end Lean proof scaffolding for the Aiur compiler pipeline,
landing `Aiur.Toplevel.compile_correct` modulo **16 named axioms**
sitting next to the theorems they replace. Build is green, no
`sorry`s, no warnings.
## Pipeline
```
Source.Toplevel
├── mkDecls → Source.Decls
├── checkAndSimplify → Typed.Decls
├── concretize → Concrete.Decls
├── lower → Bytecode + preNameMap
└── deduplicate → Bytecode + remap
```
`compile_correct` composes three top-level lemmas:
1. `compile_progress_entry` (Progress)
2. `compile_preservation_entry` (Preservation)
3. `compile_correct_concRetFnFree_entry` (FnFree projection)
## Organization
- `Ix/Aiur/Semantics/` — semantic predicates and evaluator
definitions (`WellFormed`, `TypedEval`, `ConcreteEval`,
`DrainInvariants`, `Relation`, etc.). Anything that defines
what a program *means*.
- `Ix/Aiur/Proofs/` — proof modules. Proof-internal predicates
kept in self-contained contexts; cross-cutting predicates
lifted into `Semantics/`.
- Each remaining axiom lives in the file of its consumer
theorem, declared at the dispatch site with a closure-plan
docstring (file/line target, closure path, infrastructure to
reuse, dependency notes, LoC estimate, risk factors).
## Cross-evaluator value bridging
The cross-evaluator value bridge is carried by `ValueR` (in
`Proofs/Simulation.lean`), routing concrete-eval ctors at
polymorphic-mangled keys (e.g. `Option_U32.None`) to source
ctors with no same-key preimage. The `TermBridge.app` constructor
carries a name-map witness
`(concretizeName g_src tArgs = g_conc ∨ same-key)`.
## Axioms (16)
Each axiom is grouped by the file where it lives, with its consumer
theorem.
**`Proofs/LowerSoundControl.lean`**
- `interp_preserves_ValueHasTyp`
- `Function_body_preservation_succ_fuel`
**`Proofs/ConcretizeSound/Layout.lean`**
- `dataTypeFlatSize_bound_saturation_wf`
**`Proofs/ConcretizeSound/SizeBound.lean`**
- `Global.toString_init`
- `dt.params` parser-shape invariant
- `MonoShape` projection
- `spine_transfer_aux` `.tuple` arm
- `spine_transfer_aux` `.array` arm
- `spine_transfer_aux` `.app` mono-hit arm
- `mkParamSubst_some_implies_param`
**`Proofs/CompilerProgress.lean`**
- `body_compile_ok`
- `function_compile_progress_entry`
**`Proofs/StructCompatible.lean`**
- `typFlatSize_eq_typSize_under_match_wf` (CLOSED — kept named)
- `compile_ok_implies_struct_compatible_of_entry`
**`Proofs/Simulation.lean`**
- `step_R_preservation_applyGlobal`
**`Proofs/CompilerCorrect.lean`**
- `body_termBridge_at_function_key`
## Invariants
1. **Wiring discipline** — every theorem in `Ix/Aiur/Proofs/*.lean`
(except `compile_correct`) is transitively reachable from
`compile_correct`. Orphan-free.
2. **No body sorries** — every remaining work-unit is a named
axiom with a sig + closure docstring sitting next to its
consumer.
3. **Sig stability** — axiom signatures are locked; sig changes
require explicit amendment documented in the axiom's
docstring.
## Stats
- ~59 files changed, ~64k insertions
- 277 build jobs green
- 0 sorries, 0 warnings
- 16 axioms, each with closure docstring
## Test plan
- [x] `lake build` green
- [x] No `sorry` reachable from `compile_correct`
- [x] No warnings
- [x] Orphan check: every Proofs theorem reaches `compile_correct`
Sign up for freeto 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

@arthurpaulino
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Aiur verified-compiler proof scaffolding - #399

Open
arthurpaulino wants to merge 1 commit into
mainfrom
ap/aiur-compiler
Open

Aiur verified-compiler proof scaffolding#399
arthurpaulino wants to merge 1 commit into
mainfrom
ap/aiur-compiler

Conversation

@arthurpaulino

Copy link
Copy Markdown
Member

Summary

End-to-end Lean proof scaffolding for the Aiur compiler pipeline, landing Aiur.Toplevel.compile_correct modulo 16 named axioms sitting next to the theorems they replace. Build is green, no sorrys, no warnings.

Pipeline

Source.Toplevel
├── mkDecls → Source.Decls
├── checkAndSimplify → Typed.Decls
├── concretize → Concrete.Decls
├── lower → Bytecode + preNameMap
└── deduplicate → Bytecode + remap

compile_correct composes three top-level lemmas:

  1. compile_progress_entry (Progress)
  2. compile_preservation_entry (Preservation)
  3. compile_correct_concRetFnFree_entry (FnFree projection)

Organization

  • Ix/Aiur/Semantics/ — semantic predicates and evaluator definitions (WellFormed, TypedEval, ConcreteEval, DrainInvariants, Relation, etc.). Anything that defines what a program means.
  • Ix/Aiur/Proofs/ — proof modules. Proof-internal predicates kept in self-contained contexts; cross-cutting predicates lifted into Semantics/.
  • Each remaining axiom lives in the file of its consumer theorem, declared at the dispatch site with a closure-plan docstring (file/line target, closure path, infrastructure to reuse, dependency notes, LoC estimate, risk factors).

Cross-evaluator value bridging

The cross-evaluator value bridge is carried by ValueR (in Proofs/Simulation.lean), routing concrete-eval ctors at polymorphic-mangled keys (e.g. Option_U32.None) to source ctors with no same-key preimage. The TermBridge.app constructor carries a name-map witness
(concretizeName g_src tArgs = g_conc ∨ same-key).

Axioms (16)

Each axiom is grouped by the file where it lives, with its consumer theorem.

Proofs/LowerSoundControl.lean

  • interp_preserves_ValueHasTyp
  • Function_body_preservation_succ_fuel

Proofs/ConcretizeSound/Layout.lean

  • dataTypeFlatSize_bound_saturation_wf

Proofs/ConcretizeSound/SizeBound.lean

  • Global.toString_init
  • dt.params parser-shape invariant
  • MonoShape projection
  • spine_transfer_aux.tuple arm
  • spine_transfer_aux.array arm
  • spine_transfer_aux.app mono-hit arm
  • mkParamSubst_some_implies_param

Proofs/CompilerProgress.lean

  • body_compile_ok
  • function_compile_progress_entry

Proofs/StructCompatible.lean

  • typFlatSize_eq_typSize_under_match_wf (CLOSED — kept named)
  • compile_ok_implies_struct_compatible_of_entry

Proofs/Simulation.lean

  • step_R_preservation_applyGlobal

Proofs/CompilerCorrect.lean

  • body_termBridge_at_function_key

Invariants

  1. Wiring discipline — every theorem in Ix/Aiur/Proofs/*.lean (except compile_correct) is transitively reachable from compile_correct. Orphan-free.
  2. No body sorries — every remaining work-unit is a named axiom with a sig + closure docstring sitting next to its consumer.
  3. Sig stability — axiom signatures are locked; sig changes require explicit amendment documented in the axiom's docstring.

Stats

  • ~59 files changed, ~64k insertions
  • 277 build jobs green
  • 0 sorries, 0 warnings
  • 16 axioms, each with closure docstring

Test plan

  • lake build green
  • No sorry reachable from compile_correct
  • No warnings
  • Orphan check: every Proofs theorem reaches compile_correct

## Summary
End-to-end Lean proof scaffolding for the Aiur compiler pipeline,
landing `Aiur.Toplevel.compile_correct` modulo **16 named axioms**
sitting next to the theorems they replace. Build is green, no
`sorry`s, no warnings.
## Pipeline
```
Source.Toplevel
├── mkDecls → Source.Decls
├── checkAndSimplify → Typed.Decls
├── concretize → Concrete.Decls
├── lower → Bytecode + preNameMap
└── deduplicate → Bytecode + remap
```
`compile_correct` composes three top-level lemmas:
1. `compile_progress_entry` (Progress)
2. `compile_preservation_entry` (Preservation)
3. `compile_correct_concRetFnFree_entry` (FnFree projection)
## Organization
- `Ix/Aiur/Semantics/` — semantic predicates and evaluator
definitions (`WellFormed`, `TypedEval`, `ConcreteEval`,
`DrainInvariants`, `Relation`, etc.). Anything that defines
what a program *means*.
- `Ix/Aiur/Proofs/` — proof modules. Proof-internal predicates
kept in self-contained contexts; cross-cutting predicates
lifted into `Semantics/`.
- Each remaining axiom lives in the file of its consumer
theorem, declared at the dispatch site with a closure-plan
docstring (file/line target, closure path, infrastructure to
reuse, dependency notes, LoC estimate, risk factors).
## Cross-evaluator value bridging
The cross-evaluator value bridge is carried by `ValueR` (in
`Proofs/Simulation.lean`), routing concrete-eval ctors at
polymorphic-mangled keys (e.g. `Option_U32.None`) to source
ctors with no same-key preimage. The `TermBridge.app` constructor
carries a name-map witness
`(concretizeName g_src tArgs = g_conc ∨ same-key)`.
## Axioms (16)
Each axiom is grouped by the file where it lives, with its consumer
theorem.
**`Proofs/LowerSoundControl.lean`**
- `interp_preserves_ValueHasTyp`
- `Function_body_preservation_succ_fuel`
**`Proofs/ConcretizeSound/Layout.lean`**
- `dataTypeFlatSize_bound_saturation_wf`
**`Proofs/ConcretizeSound/SizeBound.lean`**
- `Global.toString_init`
- `dt.params` parser-shape invariant
- `MonoShape` projection
- `spine_transfer_aux` `.tuple` arm
- `spine_transfer_aux` `.array` arm
- `spine_transfer_aux` `.app` mono-hit arm
- `mkParamSubst_some_implies_param`
**`Proofs/CompilerProgress.lean`**
- `body_compile_ok`
- `function_compile_progress_entry`
**`Proofs/StructCompatible.lean`**
- `typFlatSize_eq_typSize_under_match_wf` (CLOSED — kept named)
- `compile_ok_implies_struct_compatible_of_entry`
**`Proofs/Simulation.lean`**
- `step_R_preservation_applyGlobal`
**`Proofs/CompilerCorrect.lean`**
- `body_termBridge_at_function_key`
## Invariants
1. **Wiring discipline** — every theorem in `Ix/Aiur/Proofs/*.lean`
(except `compile_correct`) is transitively reachable from
`compile_correct`. Orphan-free.
2. **No body sorries** — every remaining work-unit is a named
axiom with a sig + closure docstring sitting next to its
consumer.
3. **Sig stability** — axiom signatures are locked; sig changes
require explicit amendment documented in the axiom's
docstring.
## Stats
- ~59 files changed, ~64k insertions
- 277 build jobs green
- 0 sorries, 0 warnings
- 16 axioms, each with closure docstring
## Test plan
- [x] `lake build` green
- [x] No `sorry` reachable from `compile_correct`
- [x] No warnings
- [x] Orphan check: every Proofs theorem reaches `compile_correct`
Sign up for freeto 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

@arthurpaulino
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Aiur verified-compiler proof scaffolding - #399

Open
arthurpaulino wants to merge 1 commit into
mainfrom
ap/aiur-compiler
Open

Aiur verified-compiler proof scaffolding#399
arthurpaulino wants to merge 1 commit into
mainfrom
ap/aiur-compiler

Conversation

@arthurpaulino

Copy link
Copy Markdown
Member

Summary

End-to-end Lean proof scaffolding for the Aiur compiler pipeline, landing Aiur.Toplevel.compile_correct modulo 16 named axioms sitting next to the theorems they replace. Build is green, no sorrys, no warnings.

Pipeline

Source.Toplevel
├── mkDecls → Source.Decls
├── checkAndSimplify → Typed.Decls
├── concretize → Concrete.Decls
├── lower → Bytecode + preNameMap
└── deduplicate → Bytecode + remap

compile_correct composes three top-level lemmas:

  1. compile_progress_entry (Progress)
  2. compile_preservation_entry (Preservation)
  3. compile_correct_concRetFnFree_entry (FnFree projection)

Organization

  • Ix/Aiur/Semantics/ — semantic predicates and evaluator definitions (WellFormed, TypedEval, ConcreteEval, DrainInvariants, Relation, etc.). Anything that defines what a program means.
  • Ix/Aiur/Proofs/ — proof modules. Proof-internal predicates kept in self-contained contexts; cross-cutting predicates lifted into Semantics/.
  • Each remaining axiom lives in the file of its consumer theorem, declared at the dispatch site with a closure-plan docstring (file/line target, closure path, infrastructure to reuse, dependency notes, LoC estimate, risk factors).

Cross-evaluator value bridging

The cross-evaluator value bridge is carried by ValueR (in Proofs/Simulation.lean), routing concrete-eval ctors at polymorphic-mangled keys (e.g. Option_U32.None) to source ctors with no same-key preimage. The TermBridge.app constructor carries a name-map witness
(concretizeName g_src tArgs = g_conc ∨ same-key).

Axioms (16)

Each axiom is grouped by the file where it lives, with its consumer theorem.

Proofs/LowerSoundControl.lean

  • interp_preserves_ValueHasTyp
  • Function_body_preservation_succ_fuel

Proofs/ConcretizeSound/Layout.lean

  • dataTypeFlatSize_bound_saturation_wf

Proofs/ConcretizeSound/SizeBound.lean

  • Global.toString_init
  • dt.params parser-shape invariant
  • MonoShape projection
  • spine_transfer_aux.tuple arm
  • spine_transfer_aux.array arm
  • spine_transfer_aux.app mono-hit arm
  • mkParamSubst_some_implies_param

Proofs/CompilerProgress.lean

  • body_compile_ok
  • function_compile_progress_entry

Proofs/StructCompatible.lean

  • typFlatSize_eq_typSize_under_match_wf (CLOSED — kept named)
  • compile_ok_implies_struct_compatible_of_entry

Proofs/Simulation.lean

  • step_R_preservation_applyGlobal

Proofs/CompilerCorrect.lean

  • body_termBridge_at_function_key

Invariants

  1. Wiring discipline — every theorem in Ix/Aiur/Proofs/*.lean (except compile_correct) is transitively reachable from compile_correct. Orphan-free.
  2. No body sorries — every remaining work-unit is a named axiom with a sig + closure docstring sitting next to its consumer.
  3. Sig stability — axiom signatures are locked; sig changes require explicit amendment documented in the axiom's docstring.

Stats

  • ~59 files changed, ~64k insertions
  • 277 build jobs green
  • 0 sorries, 0 warnings
  • 16 axioms, each with closure docstring

Test plan

  • lake build green
  • No sorry reachable from compile_correct
  • No warnings
  • Orphan check: every Proofs theorem reaches compile_correct

## Summary
End-to-end Lean proof scaffolding for the Aiur compiler pipeline,
landing `Aiur.Toplevel.compile_correct` modulo **16 named axioms**
sitting next to the theorems they replace. Build is green, no
`sorry`s, no warnings.
## Pipeline
```
Source.Toplevel
├── mkDecls → Source.Decls
├── checkAndSimplify → Typed.Decls
├── concretize → Concrete.Decls
├── lower → Bytecode + preNameMap
└── deduplicate → Bytecode + remap
```
`compile_correct` composes three top-level lemmas:
1. `compile_progress_entry` (Progress)
2. `compile_preservation_entry` (Preservation)
3. `compile_correct_concRetFnFree_entry` (FnFree projection)
## Organization
- `Ix/Aiur/Semantics/` — semantic predicates and evaluator
definitions (`WellFormed`, `TypedEval`, `ConcreteEval`,
`DrainInvariants`, `Relation`, etc.). Anything that defines
what a program *means*.
- `Ix/Aiur/Proofs/` — proof modules. Proof-internal predicates
kept in self-contained contexts; cross-cutting predicates
lifted into `Semantics/`.
- Each remaining axiom lives in the file of its consumer
theorem, declared at the dispatch site with a closure-plan
docstring (file/line target, closure path, infrastructure to
reuse, dependency notes, LoC estimate, risk factors).
## Cross-evaluator value bridging
The cross-evaluator value bridge is carried by `ValueR` (in
`Proofs/Simulation.lean`), routing concrete-eval ctors at
polymorphic-mangled keys (e.g. `Option_U32.None`) to source
ctors with no same-key preimage. The `TermBridge.app` constructor
carries a name-map witness
`(concretizeName g_src tArgs = g_conc ∨ same-key)`.
## Axioms (16)
Each axiom is grouped by the file where it lives, with its consumer
theorem.
**`Proofs/LowerSoundControl.lean`**
- `interp_preserves_ValueHasTyp`
- `Function_body_preservation_succ_fuel`
**`Proofs/ConcretizeSound/Layout.lean`**
- `dataTypeFlatSize_bound_saturation_wf`
**`Proofs/ConcretizeSound/SizeBound.lean`**
- `Global.toString_init`
- `dt.params` parser-shape invariant
- `MonoShape` projection
- `spine_transfer_aux` `.tuple` arm
- `spine_transfer_aux` `.array` arm
- `spine_transfer_aux` `.app` mono-hit arm
- `mkParamSubst_some_implies_param`
**`Proofs/CompilerProgress.lean`**
- `body_compile_ok`
- `function_compile_progress_entry`
**`Proofs/StructCompatible.lean`**
- `typFlatSize_eq_typSize_under_match_wf` (CLOSED — kept named)
- `compile_ok_implies_struct_compatible_of_entry`
**`Proofs/Simulation.lean`**
- `step_R_preservation_applyGlobal`
**`Proofs/CompilerCorrect.lean`**
- `body_termBridge_at_function_key`
## Invariants
1. **Wiring discipline** — every theorem in `Ix/Aiur/Proofs/*.lean`
(except `compile_correct`) is transitively reachable from
`compile_correct`. Orphan-free.
2. **No body sorries** — every remaining work-unit is a named
axiom with a sig + closure docstring sitting next to its
consumer.
3. **Sig stability** — axiom signatures are locked; sig changes
require explicit amendment documented in the axiom's
docstring.
## Stats
- ~59 files changed, ~64k insertions
- 277 build jobs green
- 0 sorries, 0 warnings
- 16 axioms, each with closure docstring
## Test plan
- [x] `lake build` green
- [x] No `sorry` reachable from `compile_correct`
- [x] No warnings
- [x] Orphan check: every Proofs theorem reaches `compile_correct`
Sign up for freeto 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

@arthurpaulino
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Aiur verified-compiler proof scaffolding - #399

Open
arthurpaulino wants to merge 1 commit into
mainfrom
ap/aiur-compiler
Open

Aiur verified-compiler proof scaffolding#399
arthurpaulino wants to merge 1 commit into
mainfrom
ap/aiur-compiler

Conversation

@arthurpaulino

Copy link
Copy Markdown
Member

Summary

End-to-end Lean proof scaffolding for the Aiur compiler pipeline, landing Aiur.Toplevel.compile_correct modulo 16 named axioms sitting next to the theorems they replace. Build is green, no sorrys, no warnings.

Pipeline

Source.Toplevel
├── mkDecls → Source.Decls
├── checkAndSimplify → Typed.Decls
├── concretize → Concrete.Decls
├── lower → Bytecode + preNameMap
└── deduplicate → Bytecode + remap

compile_correct composes three top-level lemmas:

  1. compile_progress_entry (Progress)
  2. compile_preservation_entry (Preservation)
  3. compile_correct_concRetFnFree_entry (FnFree projection)

Organization

  • Ix/Aiur/Semantics/ — semantic predicates and evaluator definitions (WellFormed, TypedEval, ConcreteEval, DrainInvariants, Relation, etc.). Anything that defines what a program means.
  • Ix/Aiur/Proofs/ — proof modules. Proof-internal predicates kept in self-contained contexts; cross-cutting predicates lifted into Semantics/.
  • Each remaining axiom lives in the file of its consumer theorem, declared at the dispatch site with a closure-plan docstring (file/line target, closure path, infrastructure to reuse, dependency notes, LoC estimate, risk factors).

Cross-evaluator value bridging

The cross-evaluator value bridge is carried by ValueR (in Proofs/Simulation.lean), routing concrete-eval ctors at polymorphic-mangled keys (e.g. Option_U32.None) to source ctors with no same-key preimage. The TermBridge.app constructor carries a name-map witness
(concretizeName g_src tArgs = g_conc ∨ same-key).

Axioms (16)

Each axiom is grouped by the file where it lives, with its consumer theorem.

Proofs/LowerSoundControl.lean

  • interp_preserves_ValueHasTyp
  • Function_body_preservation_succ_fuel

Proofs/ConcretizeSound/Layout.lean

  • dataTypeFlatSize_bound_saturation_wf

Proofs/ConcretizeSound/SizeBound.lean

  • Global.toString_init
  • dt.params parser-shape invariant
  • MonoShape projection
  • spine_transfer_aux.tuple arm
  • spine_transfer_aux.array arm
  • spine_transfer_aux.app mono-hit arm
  • mkParamSubst_some_implies_param

Proofs/CompilerProgress.lean

  • body_compile_ok
  • function_compile_progress_entry

Proofs/StructCompatible.lean

  • typFlatSize_eq_typSize_under_match_wf (CLOSED — kept named)
  • compile_ok_implies_struct_compatible_of_entry

Proofs/Simulation.lean

  • step_R_preservation_applyGlobal

Proofs/CompilerCorrect.lean

  • body_termBridge_at_function_key

Invariants

  1. Wiring discipline — every theorem in Ix/Aiur/Proofs/*.lean (except compile_correct) is transitively reachable from compile_correct. Orphan-free.
  2. No body sorries — every remaining work-unit is a named axiom with a sig + closure docstring sitting next to its consumer.
  3. Sig stability — axiom signatures are locked; sig changes require explicit amendment documented in the axiom's docstring.

Stats

  • ~59 files changed, ~64k insertions
  • 277 build jobs green
  • 0 sorries, 0 warnings
  • 16 axioms, each with closure docstring

Test plan

  • lake build green
  • No sorry reachable from compile_correct
  • No warnings
  • Orphan check: every Proofs theorem reaches compile_correct

## Summary
End-to-end Lean proof scaffolding for the Aiur compiler pipeline,
landing `Aiur.Toplevel.compile_correct` modulo **16 named axioms**
sitting next to the theorems they replace. Build is green, no
`sorry`s, no warnings.
## Pipeline
```
Source.Toplevel
├── mkDecls → Source.Decls
├── checkAndSimplify → Typed.Decls
├── concretize → Concrete.Decls
├── lower → Bytecode + preNameMap
└── deduplicate → Bytecode + remap
```
`compile_correct` composes three top-level lemmas:
1. `compile_progress_entry` (Progress)
2. `compile_preservation_entry` (Preservation)
3. `compile_correct_concRetFnFree_entry` (FnFree projection)
## Organization
- `Ix/Aiur/Semantics/` — semantic predicates and evaluator
definitions (`WellFormed`, `TypedEval`, `ConcreteEval`,
`DrainInvariants`, `Relation`, etc.). Anything that defines
what a program *means*.
- `Ix/Aiur/Proofs/` — proof modules. Proof-internal predicates
kept in self-contained contexts; cross-cutting predicates
lifted into `Semantics/`.
- Each remaining axiom lives in the file of its consumer
theorem, declared at the dispatch site with a closure-plan
docstring (file/line target, closure path, infrastructure to
reuse, dependency notes, LoC estimate, risk factors).
## Cross-evaluator value bridging
The cross-evaluator value bridge is carried by `ValueR` (in
`Proofs/Simulation.lean`), routing concrete-eval ctors at
polymorphic-mangled keys (e.g. `Option_U32.None`) to source
ctors with no same-key preimage. The `TermBridge.app` constructor
carries a name-map witness
`(concretizeName g_src tArgs = g_conc ∨ same-key)`.
## Axioms (16)
Each axiom is grouped by the file where it lives, with its consumer
theorem.
**`Proofs/LowerSoundControl.lean`**
- `interp_preserves_ValueHasTyp`
- `Function_body_preservation_succ_fuel`
**`Proofs/ConcretizeSound/Layout.lean`**
- `dataTypeFlatSize_bound_saturation_wf`
**`Proofs/ConcretizeSound/SizeBound.lean`**
- `Global.toString_init`
- `dt.params` parser-shape invariant
- `MonoShape` projection
- `spine_transfer_aux` `.tuple` arm
- `spine_transfer_aux` `.array` arm
- `spine_transfer_aux` `.app` mono-hit arm
- `mkParamSubst_some_implies_param`
**`Proofs/CompilerProgress.lean`**
- `body_compile_ok`
- `function_compile_progress_entry`
**`Proofs/StructCompatible.lean`**
- `typFlatSize_eq_typSize_under_match_wf` (CLOSED — kept named)
- `compile_ok_implies_struct_compatible_of_entry`
**`Proofs/Simulation.lean`**
- `step_R_preservation_applyGlobal`
**`Proofs/CompilerCorrect.lean`**
- `body_termBridge_at_function_key`
## Invariants
1. **Wiring discipline** — every theorem in `Ix/Aiur/Proofs/*.lean`
(except `compile_correct`) is transitively reachable from
`compile_correct`. Orphan-free.
2. **No body sorries** — every remaining work-unit is a named
axiom with a sig + closure docstring sitting next to its
consumer.
3. **Sig stability** — axiom signatures are locked; sig changes
require explicit amendment documented in the axiom's
docstring.
## Stats
- ~59 files changed, ~64k insertions
- 277 build jobs green
- 0 sorries, 0 warnings
- 16 axioms, each with closure docstring
## Test plan
- [x] `lake build` green
- [x] No `sorry` reachable from `compile_correct`
- [x] No warnings
- [x] Orphan check: every Proofs theorem reaches `compile_correct`
Sign up for freeto 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

@arthurpaulino