Research-Stack/6-Documentation/docs/plans/SOVEREIGN_PROCEED_PLAN_V1.md

151 lines
No EOL
5.7 KiB
Markdown

# Sovereign Proceed Plan: 48-Hour Execution
## 1. Theorem Hardening (Burgers.lean)
### Current State
The `Burgers.lean` file contains three `sorry` markers in the `complexityOmega_nonneg` and `nu_eff_ge_nu0` lemmas, and one in `witnessComplexity_nonneg`.
### Approach
We can use the BFS-Prover (Breadth-First Search Prover) to automatically prove these lemmas. The BFS-Prover is a tactic that uses a breadth-first search to find a proof by applying a set of rules.
However, note that the `witnessComplexity_nonneg` and `complexityOmega_nonneg` lemmas are straightforward because the fixed-point arithmetic in Q16_16 is non-negative and the operations (multiplication and addition) preserve non-negativity. Similarly, the `nu_eff_ge_nu0` theorem is a simple inequality.
### Steps
1. **Prove `witnessComplexity_nonneg`**:
- The witness complexity contribution is `n^2 * |a|^2`. Since `n` and `a` are fixed-point numbers, and the operations are non-negative, the result is non-negative.
- We can use `norm_num` or `field_simp` to prove this.
2. **Prove `complexityOmega_nonneg`**:
- The complexity metric is half the sum of non-negative terms. Since the sum is non-negative, half of it is non-negative.
3. **Prove `nu_eff_ge_nu0`**:
- We know that `effectiveViscosity = nu0 * (1 + Omega)`. Since `Omega` is non-negative (as proven above) and `nu0` is non-negative, then `1 + Omega` is at least 1, so `nu0 * (1 + Omega)` is at least `nu0`.
### Proposed Actions
- Replace the `sorry` markers with proofs using `norm_num` or `field_simp` for the first two lemmas.
- For `nu_eff_ge_nu0`, use `linarith` or `ring` to prove the inequality.
## 2. Hardware Loopback
### Current State
We need to design a UART packet structure and test harness for the Tang Nano 9K.
### Approach
We will design a simple packet format that includes:
- A start byte (e.g., 0xAA)
- The state (18-bit integer)
- A checksum (1-byte, XOR of all bytes)
The host (using Python) will send a packet to the FPGA, and the FPGA will echo it back with a response (e.g., the state and a computed value from the kernel).
### Steps
1. **Define the packet structure**:
- Start: 0xAA (1 byte)
- State: 18-bit integer (3 bytes, big-endian)
- Checksum: 1 byte (XOR of all bytes except the start byte)
2. **Design the FPGA UART receiver**:
- Read the start byte.
- Read the state (3 bytes).
- Compute the checksum and verify it.
- If valid, compute the kernel output (e.g., Burgers equation) and send it back.
3. **Design the host test script**:
- Use `pyserial` to send packets and receive responses.
- Compare the response with a known value (computed in Python).
### Proposed Actions
- Define the packet structure in the FPGA code (UART receiver).
- Write a Python script to send and receive packets.
## 3. AVM-R Integration
### Current State
We are moving from isolated kernels to a hierarchical vector roll-up (AVM-R).
### Approach
The AVM-R (Abstract Vector Machine - Roll-Up) is a hierarchical representation of the vector space. We need to integrate the existing kernels (like Burgers) into this structure.
### Steps
1. **Define the AVM-R data structure**:
- A vector is represented as a tree of smaller vectors (roll-up).
- Each node in the tree is a vector of a certain dimension.
2. **Integrate the Burgers kernel**:
- The Burgers kernel should be represented as a function that operates on vectors in the AVM-R format.
3. **Test the integration**:
- Run the Burgers kernel on a small vector and verify the result.
### Proposed Actions
- Define the AVM-R data structure and operations.
- Modify the Burgers kernel to work on AVM-R vectors.
## 4. Visual Surface
### Current State
We are transitioning from static plots to a live WebSocket-driven dashboard.
### Approach
We will create a FastAPI backend that serves a WebSocket endpoint for real-time updates and a frontend that uses WebSockets to receive data and update a visualization.
### Steps
1. **Backend**:
- Create a FastAPI app with a WebSocket endpoint.
- The endpoint will send updates (e.g., vector states) to the frontend.
2. **Frontend**:
- Use JavaScript to connect to the WebSocket.
- Update a canvas or chart with the received data.
### Proposed Actions
- Set up the FastAPI backend with a WebSocket endpoint.
- Develop the frontend HTML/JS to connect to the WebSocket.
## Detailed 48-Hour Plan
### Day 1 (Morning)
1. **Theorem Hardening**:
- Prove `witnessComplexity_nonneg` and `complexityOmega_nonneg` in `Burgers.lean`.
- Replace `sorry` markers.
2. **Hardware Loopback**:
- Define the packet structure in the FPGA code.
- Write a Python script to send and receive packets.
### Day 1 (Afternoon)
1. **Theorem Hardening**:
- Prove `nu_eff_ge_nu0`.
2. **Hardware Loopback**:
- Complete the FPGA UART receiver for the packet.
- Test the UART communication with a simple echo.
### Day 2 (Morning)
1. **AVM-R Integration**:
- Define the AVM-R data structure and basic operations.
2. **Visual Surface**:
- Set up the FastAPI backend with a WebSocket endpoint.
### Day 2 (Afternoon)
1. **AVM-R Integration**:
- Integrate the Burgers kernel with AVM-R.
2. **Visual Surface**:
- Develop the frontend to connect to the WebSocket and display data.
### Day 2 (Evening)
1. **Integration Testing**:
- Run the AVM-R Burgers kernel and visualize the results.
## Conclusion
This plan focuses on making progress in four key areas within the next 48 hours. By following these steps, we can systematically address the remaining `sorry` markers, set up hardware verification, integrate the AVM-R structure, and build a live visualization dashboard.
Note: The actual implementation details may require adjustments based on the specific environment and tools available.