// Moved from docs/05-operations/refinement/roadmap.adoc to docs/working/archive/operations/refinement/roadmap.adoc on 2026-06-16 (docs reorg Phase 2) = StarForth C↔Isabelle Refinement Implementation Roadmap :toc: left :toclevels: 2 :sectnums: :source-highlighter: rouge :icons: font == Executive Summary This roadmap establishes the phased approach to proving that the StarForth C implementation correctly refines the Isabelle formal specifications. **Overall Goal:** Complete end-to-end refinement verification of running code against theory. **Timeline:** 6-8 months (estimated, aggressive schedule) **Success Criteria:** All critical VM functions have complete refinement proofs with no remaining `sorry`s. --- == Vision & Philosophy **What we're building:** A proof system that ensures the C implementation: 1. Implements exactly what the theory specifies 2. Maintains all proven invariants 3. Handles all edge cases correctly **Our approach:** - Iterative: Find discrepancies → Fix theory or code → Prove → Repeat - Transparent: Every defect logged, tracked, and explained - Pragmatic: Start with core VM, expand systematically - Auditor-friendly: All documentation publically reviewable --- ## Phase 1: VM Core Refinement **Duration:** 4-6 weeks **Effort:** ~320 developer-hours **Team:** 2-3 (1 Isabelle specialist, 1-2 C developers) ### Scope Prove that `src/vm.c` correctly implements: - Stack operations (push, pop, overflow handling) - Return stack operations (CALL, RET) - Instruction dispatch mechanism - Program counter management - Error state consistency ### Deliverables 1. **Annotated source** - All vm.c functions have REFINEMENT headers 2. **Proof file** - `StarForth_Refinement.thy` with lemmas for each function 3. **CAPA updates** - All 3 initial defects (DEFECT-001, 002, 003) resolved 4. **Tests** - Unit tests verifying stack invariants under all conditions ### Key Functions to Refine [cols="1,2,2,1"] |=== | Function | Theory | Est. Hours | Status | `stack_push()` | `VM_Stacks.thy::push` | 20 | OPEN | `stack_pop()` | `VM_Stacks.thy::pop` | 20 | OPEN | `execute_call()` | `VM_Stacks.thy::call` | 25 | OPEN | `execute_return()` | `VM_Stacks.thy::ret` | 25 | OPEN | `execute_instruction()` | `VM_Core.thy::exec_instr` | 60 | OPEN | `dispatch_* helpers` | VM_*_Words.thy | 80 | OPEN | Stack invariants (proofs) | VM_StackRuntime.thy | 50 | OPEN |=== ### Success Criteria - ✅ No remaining `sorry` statements in refinement proofs - ✅ All stack bounds violations caught and proven impossible - ✅ All error paths formally verified - ✅ All tests pass without instrumentation - ✅ DEFECT log shows 0 OPEN items for Phase 1 ### Risks **High Risk:** - Pre/post-increment semantics mismatch (mitigated by careful lemmas) **Medium Risk:** - Error handling complexity (plan: explicit state modeling) **Low Risk:** - Stack size assumptions (clearly specified and checked) ### Dependencies - Isabelle/HOL installed and working - Existing VM_Stacks.thy theory complete - C code has no undefined behavior (must audit first) ### Successor Cannot proceed to Phase 2 until Phase 1 complete. --- ## Phase 2: Utility Functions & Memory Management **Duration:** 2-3 weeks **Effort:** ~160 developer-hours **Team:** 1-2 ### Scope Prove correctness of: - Memory allocation/deallocation patterns - Initialization sequences - Resource cleanup - Error recovery (if applicable) - All root-level .c files ### Deliverables 1. Memory model formalization in Isabelle 2. Proof that allocations don't exceed bounds 3. Proof that cleanup prevents leaks 4. Updated CAPA log ### Success Criteria - ✅ All OPEN defects resolved - ✅ Memory model and C code proven equivalent - ✅ No unsafe patterns in utility code ### Dependencies - Phase 1 complete --- ## Phase 3: Test Harness Integration **Duration:** 1-2 weeks **Effort:** ~80 developer-hours **Team:** 1 ### Scope Prove that the test framework validates theory-level properties: - Test assertions map to Isabelle lemmas - Test execution traces provable execution paths - Test coverage covers all critical theory cases ### Deliverables 1. Test-to-theory mapping document 2. Isabelle theorems for key test properties 3. Coverage report linking tests to theory ### Success Criteria - ✅ Every critical theory property has a test - ✅ Tests and proofs are consistent - ✅ Test suite achieves >95% branch coverage ### Dependencies - Phase 1 complete --- ## Phase 4: Primitive Dictionary (Forth Words) **Duration:** 6-8 weeks **Effort:** ~320 developer-hours **Team:** 2-3 ### Scope **LARGEST PHASE** - Systematically prove every Forth word: - Arithmetic: `+`, `-`, `*`, `/`, `MOD`, `ABS`, etc. - Logic: `AND`, `OR`, `XOR`, `NOT`, etc. - Stack: `DUP`, `DROP`, `SWAP`, `ROT`, `PICK`, `ROLL` - Memory: `@`, `!`, `C@`, `C!` - Control: `IF`, `ELSE`, `BEGIN`, `UNTIL`, `DO`, `LOOP` - I/O: `EMIT`, `KEY`, `.` (print) - Physics: Custom words in Physics_Formal.thy ### Approach **Batch-wise delivery:** **Batch 4.1 (Weeks 1-2):** Core arithmetic & stack ops - Most fundamental, highest ROI - ~40% of typical Forth programs **Batch 4.2 (Weeks 3-4):** Memory operations - Required for data structures - Higher complexity (address space reasoning) **Batch 4.3 (Weeks 5-6):** Control flow - Most complex (loop invariants) - Highest proof difficulty **Batch 4.4 (Weeks 7-8):** I/O & domain-specific words - External effects (harder to formalize) - Physics-specific operations ### Deliverables Per Batch - Annotated C implementation - Isabelle refinement lemmas - Property tests - CAPA updates ### Success Criteria (Overall) - ✅ All ~200 Forth words have refinement proofs - ✅ No sorry's in refinement layer - ✅ All definitions reach theory equivalence ### Complexity Estimate - **Simple words** (DUP, DROP): 2-4 hours each - **Medium words** (arithmetic): 4-8 hours each - **Complex words** (control flow): 12-24 hours each - **Average across all:** ~4 hours per word × 200 = 800 hours - **Parallelizable:** Can split by category (arith, logic, stack, control) ### Dependencies - Phase 1 complete - Primitive word implementations in C complete/frozen --- ## Phase 5: VM Expansion & Iteration **Duration:** Ongoing **Effort:** ~40 hours per feature **Team:** 1+ per new feature ### Scope When adding new features to the VM: 1. Add theory definitions first (or in parallel) 2. Implement C code 3. Write annotated code with REFINEMENT headers 4. Prove refinement before merge 5. Update REFINEMENT_CAPA.adoc ### Workflow ``` New Feature Request ↓ Update theory (VM_*.thy) ↓ Implement C code ↓ Annotate with REFINEMENT ↓ Write refinement proofs ↓ CI: make refinement-phase1/2/3/4/5 ↓ Tests pass? YES → Merge NO → Debug (theory or code) ``` ### Success Criteria - ✅ All new features have refinement proofs before merge - ✅ No theory-code mismatches introduced - ✅ Proof maintenance is integrated into development ### Dependencies - All previous phases complete - Development team trained on refinement workflow --- ## Timeline Overview ``` Week 1-2: Phase 1 setup, DEFECT-001, basic stack proofs Week 3-6: Phase 1 complete (stack, call/ret, dispatch) Week 7-8: Phase 2 (utilities, memory model) Week 9: Phase 3 (test integration) Week 10-17: Phase 4 (primitives, 4 batches) Week 18+: Phase 5 (ongoing, feature expansion) TOTAL: ~6 months to core completion, ~8 months to full dictionary ``` **Gantt Chart:** ``` Phase 1 |████████████████████| (Weeks 1-6) Phase 2 |██████████| (Weeks 7-8) Phase 3 |██████| (Week 9) Phase 4 |████████████████| (Weeks 10-17) Phase 5 |→→→→→→→→→ (ongoing) ``` --- ## Critical Path **Must complete in order:** 1. Phase 1 ← **BLOCKER for all others** 2. Phase 2 ← Unlocks complete VM testing 3. Phases 3, 4 ← Can proceed in parallel after Phase 1 **CRITICAL DECISION POINTS:** - **End of Phase 1 (Week 6):** Refinement framework working? - YES → Proceed to Phase 4 (biggest payoff) - NO → Major review needed before continuing - **Mid-Phase 4 (Week 13):** Is proof velocity sustainable? - YES → Continue to full dictionary - NO → Consider reduced scope (core 50 words only) --- ## Resource Requirements ### Personnel **Mandatory:** - 1 Isabelle/HOL expert (40 hrs/week) - Proof architecture - Lemma design - Difficult proof cases - 1-2 C developers (20 hrs/week) - Code annotation - Refactoring for proofs - Test case development **Optional (accelerators):** - Second Isabelle specialist (adds 50% velocity, enables parallelism) - Automated proof tool (SMT solvers like Z3, adds 20% velocity) ### Tools & Infrastructure Required: - Isabelle 2025+ (already have) - Python/Bash for automation - Version control (already have) Optional (nice-to-have): - Sledgehammer (proof search) - included with Isabelle - Why3/Frama-C (for enhanced C semantics) - cost: 40 hours setup - Coq (alternative; only if switching frameworks) - not recommended ### Compute Modest requirements: - Proof checking: < 5 minutes per rebuild - Build machine: 4 cores, 8GB RAM sufficient - Storage: ~2 GB for Isabelle session caches --- ## Risk Assessment & Mitigation ### Risk Matrix [cols="2,2,1,2,2"] |=== | Risk | Probability | Impact | Mitigation | Contingency | Theory spec incomplete | Medium | High | Weekly theory audit | Skip incomplete areas, revisit later | C code has subtle bugs | Medium | High | Formal code review | Unit test first, then prove | Proofs become intractable | Low | Critical | Research harder lemmas | Simplify spec (less ambitious) | Team turnover | Low | Medium | Documentation | Cross-training, recorded sessions | Isabelle version issues | Low | Low | Version lock | Pin to Isabelle 2025 |=== ### Contingency Plans **If proofs become intractable:** 1. Reduce scope to core 50 words (high ROI subset) 2. Use `sorry` for complex lemmas, mark as TODO 3. Revisit after proof technique improvements **If Phase 1 extends beyond 6 weeks:** 1. Allocate +2 people for parallel proofs 2. Drop nice-to-have defects (low severity) 3. Extend timeline, compress Phase 4 --- ## Success Metrics ### Phase-by-Phase | Phase | Metric | Target | Method | |-------|--------|--------|--------| | 1 | Proof completeness | 0 `sorry`s | `grep "sorry" *.thy` | | 1 | Defect closure | 100% OPEN→CLOSED | REFINEMENT_CAPA.adoc | | 2 | Memory safety | No leaks | Valgrind + proofs | | 3 | Test coverage | > 95% branch | `gcov` analysis | | 4 | Word coverage | 100% of ~200 | grep word list | | 4 | Proof QC | Zero sorry's | Isabelle build -c | ### Overall **HARD STOP CRITERIA (go/no-go):** - All Phase 1 proofs compile without `sorry` - No bugs found in code by auditors during Phase 1 - Refinement framework proves faster than expected → Accelerate Phase 4 **SOFT TARGETS:** - 90%+ of dictionary proven by end of Phase 4 - < 1 major theory revision needed during implementation --- ## How to Use This Roadmap ### For Team Members 1. **Check current phase:** `make refinement-status` 2. **See what's blocked:** `grep OPEN docs/REFINEMENT_CAPA.adoc` 3. **Pick a defect:** Choose smallest OPEN item 4. **Resolve it:** Follow REFINEMENT_ANNOTATIONS.adoc guide 5. **Update status:** Edit REFINEMENT_CAPA.adoc, commit ### For Project Managers - **Track progress:** ```bash make refinement-status # Weekly make refinement-report # Monthly ``` - **Identify risks:** - Is phase extending beyond estimate? - Are proof complexity metrics increasing? - Is defect resolution rate dropping? - **Make course corrections:** - Add specialists if velocity < 3 hours/proof - Reduce scope if facing 2+ week delays - Consider parallelizing (multiple independent words) ### For Auditors 1. **Review current status:** `docs/REFINEMENT_CAPA.adoc` 2. **Examine code:** Look for REFINEMENT: headers in `src/vm.c` 3. **Check proofs:** `docs/src/internal/formal/StarForth_Refinement.thy` 4. **Request details:** Link to specific DEFECT entries --- ## Phase Completion Checklist ### Phase 1 Completion Criteria - [ ] All stack operations have complete proofs - [ ] All return stack operations have complete proofs - [ ] All three defects (DEFECT-001, 002, 003) marked CLOSED - [ ] No `sorry` statements remain in refinement proofs - [ ] Code review: vm.c passes security/correctness audit - [ ] Tests: All stack tests pass with 100% coverage - [ ] Documentation: REFINEMENT headers on all functions - [ ] Sign-off: Isabelle expert and C lead approve **Readiness for Phase 2:** YES / NO ### Phase 2 Completion Criteria - [ ] Memory model formalized - [ ] All utility functions annotated - [ ] Memory safety properties proven - [ ] All OPEN defects for this phase resolved - [ ] Code review: Root-level .c files audited - [ ] Sign-off: Both C lead and formal methods lead approve **Readiness for Phase 3:** YES / NO ### Phase 3 Completion Criteria - [ ] Test-to-theory mapping complete - [ ] All critical properties have tests - [ ] Test coverage > 95% - [ ] Test assertions match lemma postconditions - [ ] Sign-off: QA lead and formal methods lead **Readiness for Phase 4:** YES / NO ### Phase 4 Completion Criteria - [ ] All ~200 Forth words have refinement proofs - [ ] No `sorry` statements in refinement layer - [ ] Physics-specific words proven - [ ] CAPA log: 0 HIGH severity items open - [ ] Code review: All word implementations audited - [ ] Batch sign-offs: Each batch formally accepted **Ready for Phase 5 (ongoing):** YES / NO --- ## Beyond Phase 5: Future Work Once core refinement is complete: 1. **Verified compilation** - Use CompCert for C→Assembly with correctness proofs 2. **Scheduler formalization** - Prove multitasking/concurrency properties 3. **Performance certification** - Prove complexity bounds on critical paths 4. **Formal specification of Forth standard** - Align with ISO Forth 5. **Automated proof generation** - Machine learning for lemma discovery --- ## Questions & Support **Q: Can we parallelize phases?** A: Phase 4 (primitives) can be split into independent proofs. Phases 1-3 must be sequential (each is blocker). **Q: What if we find a major bug?** A: Log CAPA defect, fix code or theory, continue. Bugs found early = cost savings. **Q: How much time should each proof take?** A: Simple: 2-4 hrs. Medium: 4-12 hrs. Complex: 12-24 hrs. Average across phase: ~6 hours/function. **Q: Can we use automated tactics?** A: Yes! Isabelle's Sledgehammer, SMT solvers (Z3, CVC4) highly recommended. Reduces manual time by 20-30%. **Q: Should we prove the Forth bootloader too?** A: Out of scope for Phase 1-4. Added to Phase 5 as advanced work. --- ## Version Control This roadmap is maintained in: - **File:** `docs/REFINEMENT_ROADMAP.adoc` - **Updates:** When phases complete, when risks materialize - **Authority:** Project lead + Formal methods lead **Status:** ACTIVE PLANNING **Last Updated:** 2025-10-30 **Next Review:** End of Phase 1 (Week 6) --- ## Appendix: Detailed Effort Breakdown ### Phase 1 Detailed Estimate (320 hours) | Task | Hours | Notes | |------|-------|-------| | Annotate vm.c | 20 | Add REFINEMENT headers | | Stack ops proofs | 40 | push, pop + invariants | | Call/ret proofs | 50 | Pre/post semantics | | Dispatch refactor | 30 | Make provable | | Dispatch proofs | 60 | Case analysis over opcodes | | Testing/validation | 40 | Unit tests, edge cases | | Bug fixes | 40 | Issues found during proof | | Documentation | 20 | CAPA updates, guides | | **TOTAL** | **320** | ~6 weeks at 2 FTE | ### Phase 4 Detailed Estimate (320 hours) | Batch | Words | Hours | Notes | |-------|-------|-------|-------| | 4.1 | DUP, DROP, SWAP, +, -, *, / | 80 | Core ops, straightforward | | 4.2 | @, !, C@, C!, memory ops | 90 | More complex (addresses) | | 4.3 | IF/ELSE/BEGIN/LOOP | 80 | Hardest (invariants) | | 4.4 | I/O, Physics, misc | 70 | Mixed difficulty | | Overhead | Documentation, reviews | 40 | Cross-cutting | | **TOTAL** | **~200 words** | **320** | ~8 weeks at 2 FTE | --- Generated: {docdate}