Commit c233752
feat(coq): prove the reversibility↔CNO bridge MAA cites (A2, zero axioms) (#109)
## What & why
The theorem `hyperpolymath/maa-framework` (aletheia) cites — the general
reversibility↔CNO characterisation — did not exist at the general level
(only a filesystem-specific instance). This lands it in
`proofs/coq/common/CNO.v`, machine-checked under `coqc 8.18.0`, with
**every new result `Closed under the global context` (zero project
axioms)**.
## New results (all axiom-free)
- `reverses` / `reversible_iff_exists_reverses` — the repo's one-sided
`reversible` is exactly "∃ a left inverse".
- `reverses_seq_computes_identity` — **core lemma**: a left inverse
sequenced after `p` computes the state-identity on every composite
transition (via `eval_app` + the existing `eval_deterministic`).
- `cno_equiv_seq_empty_of_reverses` — repackaged as `cno_equiv (p ;;
p_inv) []` (CNO-equivalence to the canonical no-op).
- `reversible_bridge_forward` — the faithful **forward** direction of
the aletheia contract: a **two-sided** inverse makes *both* composites
`cno_equiv _ []`.
- `reversible_bridge_backward_upto` — the **backward** direction,
necessarily up to `=st=`, with an explicit `p_inv`-termination
hypothesis.
- `eval_nil_eq` — small helper (`eval [] s s' → s' = s`).
## Honesty finding (this is the valuable part)
The literal `reversible p ↔ ∃ p_inv, is_CNO (p;;p_inv) ∧ is_CNO
(p_inv;;p)` is **not** provable under these definitions and is
deliberately **not** asserted:
1. `is_CNO` also demands purity and totality-everywhere — a `reversible`
program need not have either — so "≡ CNO" is faithfully rendered by
`cno_equiv _ []` (the identity-on-state component).
2. `state_eq` (`=st=`) excludes the program counter while `eval`
propagates it (the `eval_respects_state_eq_*` axioms were removed as
**unsound** on 2026-05-20), forcing the backward direction to be
up-to-`=st=`.
3. The repo's `reversible` is one-sided; the aletheia contract is
two-sided.
**Takeaway for aletheia:** state the contract two-sided and
`=st=`-relative. Documented in the in-file section header and
`PROOF-STATUS.adoc`.
## Verification
- From-scratch `coq_makefile -f _CoqProject && make` builds **14/14
theories, zero errors**.
- `Print Assumptions` on all five new results → **"Closed under the
global context"**.
- Lean mirror deferred (needs Mathlib @ v4.16.0).
## Context
Task **A2** of the estate assessment — the one still-open Phase A proof
item after PR #100 landed OND-1..5 and discharged the
filesystem/quantum-existence axioms. Docs updated: `PROOF-STATUS.adoc`
(new bridge subsection), `ROADMAP.adoc` (Milestone 1 checkbox). Draft
pending human review.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_015qwVESTcbfanY2iJPQNoSz
---
_Generated by [Claude
Code](https://claude.ai/code/session_015qwVESTcbfanY2iJPQNoSz)_
Co-authored-by: Claude <noreply@anthropic.com>1 parent 3b592a5 commit c233752
3 files changed
Lines changed: 167 additions & 6 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
86 | 86 | | |
87 | 87 | | |
88 | 88 | | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
89 | 120 | | |
90 | 121 | | |
91 | 122 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
131 | 131 | | |
132 | 132 | | |
133 | 133 | | |
134 | | - | |
135 | | - | |
136 | | - | |
137 | | - | |
138 | | - | |
139 | | - | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
140 | 147 | | |
141 | 148 | | |
142 | 149 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
675 | 675 | | |
676 | 676 | | |
677 | 677 | | |
| 678 | + | |
| 679 | + | |
| 680 | + | |
| 681 | + | |
| 682 | + | |
| 683 | + | |
| 684 | + | |
| 685 | + | |
| 686 | + | |
| 687 | + | |
| 688 | + | |
| 689 | + | |
| 690 | + | |
| 691 | + | |
| 692 | + | |
| 693 | + | |
| 694 | + | |
| 695 | + | |
| 696 | + | |
| 697 | + | |
| 698 | + | |
| 699 | + | |
| 700 | + | |
| 701 | + | |
| 702 | + | |
| 703 | + | |
| 704 | + | |
| 705 | + | |
| 706 | + | |
| 707 | + | |
| 708 | + | |
| 709 | + | |
| 710 | + | |
| 711 | + | |
| 712 | + | |
| 713 | + | |
| 714 | + | |
| 715 | + | |
| 716 | + | |
| 717 | + | |
| 718 | + | |
| 719 | + | |
| 720 | + | |
| 721 | + | |
| 722 | + | |
| 723 | + | |
| 724 | + | |
| 725 | + | |
| 726 | + | |
| 727 | + | |
| 728 | + | |
| 729 | + | |
| 730 | + | |
| 731 | + | |
| 732 | + | |
| 733 | + | |
| 734 | + | |
| 735 | + | |
| 736 | + | |
| 737 | + | |
| 738 | + | |
| 739 | + | |
| 740 | + | |
| 741 | + | |
| 742 | + | |
| 743 | + | |
| 744 | + | |
| 745 | + | |
| 746 | + | |
| 747 | + | |
| 748 | + | |
| 749 | + | |
| 750 | + | |
| 751 | + | |
| 752 | + | |
| 753 | + | |
| 754 | + | |
| 755 | + | |
| 756 | + | |
| 757 | + | |
| 758 | + | |
| 759 | + | |
| 760 | + | |
| 761 | + | |
| 762 | + | |
| 763 | + | |
| 764 | + | |
| 765 | + | |
| 766 | + | |
| 767 | + | |
| 768 | + | |
| 769 | + | |
| 770 | + | |
| 771 | + | |
| 772 | + | |
| 773 | + | |
| 774 | + | |
| 775 | + | |
| 776 | + | |
| 777 | + | |
| 778 | + | |
| 779 | + | |
| 780 | + | |
| 781 | + | |
| 782 | + | |
| 783 | + | |
| 784 | + | |
| 785 | + | |
| 786 | + | |
| 787 | + | |
| 788 | + | |
| 789 | + | |
| 790 | + | |
| 791 | + | |
| 792 | + | |
| 793 | + | |
| 794 | + | |
| 795 | + | |
| 796 | + | |
| 797 | + | |
| 798 | + | |
| 799 | + | |
| 800 | + | |
0 commit comments