|
| 1 | +# Universal Proof Specification: Absolute Zero (Malbolge) |
| 2 | +**Target**: `malbolge_test.mb` (A Malbolge Program) |
| 3 | +**Goal**: Prove whether this program is a "Certified Null Operation" (CNO) — meaning it halts without performing any side-effecting state mutations, or if it produces output/infinite loops. |
| 4 | + |
| 5 | +## Prover Mapping (All 49 Tiers vs Malbolge) |
| 6 | + |
| 7 | +### Tier 1: Interactive & SMT (Foundational Truth) |
| 8 | +1. **Coq**: Map the `malbolge_test.mb` ASCII string to `MalbolgeProgram` and evaluate `is_malbolge_CNO`. |
| 9 | +2. **Lean4**: Translate the Coq semantics to Lean4 and prove termination under base-3 arithmetic. |
| 10 | +3. **Agda**: Verify the trinary memory bounds (59,049 addresses). |
| 11 | +4. **Z3**: SMT check on the unrolled Malbolge encryption step. (EXPECTED: Path explosion). |
| 12 | +5. **CVC5**: Check equivalence between the Malbolge program and a NOP slice. |
| 13 | +6. **Isabelle/HOL**: Inductive proof over the `malbolge_step` relations. |
| 14 | + |
| 15 | +### Tier 2-4: The "Big Six" & Legacy |
| 16 | +7. **Metamath**: Prove the properties of base-3 "Crazy Operation". |
| 17 | +8. **HOL Light**: Verify the memory array bounds. |
| 18 | +9. **Mizar**: Set theory properties of the trinary state space. |
| 19 | +10. **PVS**: Prove the `encrypt` transition matrix is a bijection. |
| 20 | +11. **ACL2**: Bounded evaluation up to 100,000 steps. |
| 21 | +12. **HOL4**: Prove the `MOut` op is not triggered. |
| 22 | + |
| 23 | +### Tier 5: First-Order ATPs (The Speed Racers) |
| 24 | +13. **Vampire**: (EXPECTED: Timeout). Non-linear trinary operations defy standard heuristics. |
| 25 | +14. **EProver**: Search for an equational proof of `state == state'`. |
| 26 | +15. **SPASS**: Try to find a contradiction where `MOut` happens. |
| 27 | +16. **AltErgo**: SMT/FOL check on the program counter bounds. |
| 28 | + |
| 29 | +### Tier 6-7: Specialized & Advanced |
| 30 | +17. **F***: Prove memory effect safety (no out-of-bounds trinary access). |
| 31 | +18. **Dafny**: Use invariants to bound the `c` (code) and `d` (data) pointers. |
| 32 | +19. **Why3**: Orchestrate proof obligations for the crazy op. |
| 33 | +20. **TLAPS**: Model the Malbolge VM as a state machine. |
| 34 | +21. **Twelf**: Type the AST of Malbolge instructions (if one even exists). |
| 35 | +22. **Nuprl**: Constructive witness of termination. |
| 36 | +23. **Minlog**: Minimal logic proof of instruction decoding. |
| 37 | +24. **Imandra**: (EXPECTED: Timeout). Cryptographic-level obfuscation blocks symbolic execution. |
| 38 | + |
| 39 | +### Tier 8: Constraint & Optimization |
| 40 | +25. **GLPK**: Not applicable (highly non-linear). |
| 41 | +26. **SCIP**: Not applicable. |
| 42 | +27. **MiniZinc**: Attempt to constraint-solve the path to `MHlt`. |
| 43 | +28. **Chuffed**: Model the `encrypt` table as a CP constraint. |
| 44 | +29. **ORTools**: Optimize for the shortest path to a side effect. |
| 45 | + |
| 46 | +### Tier 9: Model Checkers & Security |
| 47 | +30. **SPIN**: Exhaustive state space exploration (59049 * 3^10 states). (EXPECTED: Out of Memory). |
| 48 | +31. **CBMC**: Unroll the C-based interpreter 10,000 times. |
| 49 | +32. **SeaHorn**: Abstract interpretation of the Malbolge data pointer. |
| 50 | +33. **CaDiCaL**: SAT solving the crazy op truth table. |
| 51 | +34. **Kissat**: Bit-blasted (or trit-blasted) SAT check. |
| 52 | +35. **MiniSat**: (EXPECTED: Timeout). |
| 53 | +36. **NuSMV**: Symbolic model check of the VM transition relation. |
| 54 | +37. **TLC**: TLA+ bounded model checking. |
| 55 | +38. **Alloy**: Find a model where Malbolge makes sense (Good luck). |
| 56 | +39. **Prism**: Probabilistic check of termination. |
| 57 | +40. **UPPAAL**: Model the VM cycle times. |
| 58 | +41. **Frama-C**: Deductive verification of a C-interpreter running this program. |
| 59 | +42. **Viper**: Permission checks on the 59049-trit array. |
| 60 | +43. **Tamarin**: (EXPECTED: Irrelevant). Not a crypto protocol, just looks like one. |
| 61 | +44. **ProVerif**: (EXPECTED: Irrelevant). |
| 62 | +45. **KeY**: JavaDL verification of a Java Malbolge interpreter. |
| 63 | +46. **DReal**: Delta-complete checking (Irrelevant for discrete state). |
| 64 | +47. **ABC**: AIGER synthesis of the Malbolge CPU. |
| 65 | + |
| 66 | +### Tier 10 & Oracles |
| 67 | +48. **Idris2**: Dependent types for the 59049 bounded memory accesses. |
| 68 | +49. **TypedWasm**: Verify the WASM version of the Malbolge runtime. |
0 commit comments