Skip to content

Commit e80c5fb

Browse files
committed
agda: add concrete echo bridge model for CNO
1 parent 1e7d169 commit e80c5fb

3 files changed

Lines changed: 64 additions & 5 deletions

File tree

absolute-zero/README.adoc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,8 @@ See [VERIFICATION.md](VERIFICATION.md) for detailed status and [PROOF-INSIGHTS.m
210210
Agda bridge note:
211211

212212
* `proofs/agda/EchoBridgeScaffold.agda` is now present as a compile-safe adapter layer to connect CNO identity witnesses to the echo/fiber shape used in `echo-types`.
213-
* Concrete import-level integration with `CNO.agda` remains gated until unfinished holes in `CNO.agda` are closed.
213+
* `proofs/agda/EchoBridgeCNO.agda` now provides a concrete `Program`/`eval` model instantiation into that scaffold.
214+
* This concrete bridge currently uses a function-extensionality parameter to convert `state-eq` into propositional equality for `Echo`.
214215

215216
**Coq Proof Status** (2026-02-05): 81 Qed / 19 Admitted / 6 Defined / 63 Axioms across 10 files. 4 files fully complete (CNO.v, CNOCategory.v, StatMech.v, StatMech_helpers.v).
216217

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
-- Concrete Echo/CNO instantiation against CNO.Program and CNO.eval.
2+
--
3+
-- Note: CNO identity is phrased as state-eq, so we parameterize by
4+
-- function extensionality to recover propositional equality of states.
5+
6+
module EchoBridgeCNO where
7+
8+
open import Level using (zero)
9+
open import Data.Product using (_,_)
10+
open import Relation.Binary.PropositionalEquality using (_≡_; refl)
11+
open import Axiom.Extensionality.Propositional using (Extensionality)
12+
13+
import CNO
14+
open import EchoBridgeScaffold using (CNOModel; Echo; echo-from-cno)
15+
16+
state-eq→≡ :
17+
Extensionality zero zero
18+
{s₁ s₂ : CNO.ProgramState}
19+
CNO.state-eq s₁ s₂ s₁ ≡ s₂
20+
state-eq→≡ ext {CNO.mk-state m₁ r₁ i₁ pc₁} {CNO.mk-state m₂ r₂ i₂ pc₂}
21+
(m-eq , r-eq , io-eq , pc-eq)
22+
rewrite ext m-eq | r-eq | io-eq | pc-eq = refl
23+
24+
program-state-model : Extensionality zero zero CNOModel CNO.ProgramState
25+
program-state-model ext = record
26+
{ Op = CNO.Program
27+
; run = CNO.eval
28+
; IsCNO = CNO.IsCNO
29+
; cno-identity = λ cno s
30+
state-eq→≡ ext (CNO.IsCNO.cno-identity cno s)
31+
}
32+
33+
echo-from-cno-program :
34+
(ext : Extensionality zero zero)
35+
(p : CNO.Program)
36+
CNO.IsCNO p
37+
(s : CNO.ProgramState)
38+
Echo (CNO.eval p) s
39+
echo-from-cno-program ext p cno s =
40+
echo-from-cno (program-state-model ext) p cno s
41+
42+
absolute-zero-echo :
43+
(ext : Extensionality zero zero)
44+
(s : CNO.ProgramState)
45+
Echo (CNO.eval CNO.absolute-zero) s
46+
absolute-zero-echo ext s =
47+
echo-from-cno-program ext CNO.absolute-zero CNO.absolute-zero-is-cno s

absolute-zero/proofs/agda/README.adoc

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@
22

33
This directory currently contains:
44

5-
* `CNO.agda` — main Agda CNO development (currently includes unfinished holes).
5+
* `CNO.agda` — main Agda CNO development (compiles locally).
66
* `EchoBridgeScaffold.agda` — compile-safe interface layer for bridging CNO identity witnesses to the echo/fiber shape used in `echo-types`.
7+
* `EchoBridgeCNO.agda` — concrete model instantiation from `CNO.Program` / `eval` into the scaffold interface.
78
89
== Purpose of `EchoBridgeScaffold.agda`
910

@@ -16,10 +17,20 @@ It provides:
1617
* `CNOModel` interface with `run`, `IsCNO`, and `cno-identity`.
1718
* `echo-from-cno` conversion from a CNO witness to an echo witness.
1819

20+
== Purpose of `EchoBridgeCNO.agda`
21+
22+
This module imports `CNO.agda` and instantiates `CNOModel` concretely with:
23+
24+
* `Op = Program`
25+
* `run = eval`
26+
* `IsCNO = IsCNO`
27+
28+
Because `CNO.cno-identity` is phrased as `state-eq` (with function-valued memory),
29+
the bridge takes a function-extensionality parameter to derive propositional
30+
state equality for `Echo`.
31+
1932
== Integration plan
2033

21-
1. Finish the remaining holes in `CNO.agda`.
22-
2. Add a concrete model instantiation from `CNO.Program` / `eval` into `CNOModel`.
23-
3. Add reciprocal consistency checks against:
34+
1. Add reciprocal consistency checks against:
2435
* `echo-types` (`proofs/agda/EchoCNOBridge.agda`)
2536
* this repository's Coq/Lean CNO statements.

0 commit comments

Comments
 (0)