Files
LithosAnanake/docs/working/archive/operations/refinement/roadmap.adoc
T

518 lines
16 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 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}