Skip to content

Commit 1daad01

Browse files
hyperpolymathclaude
andcommitted
echo-types: Pillar C — separating model (loss law is genuine structure)
EchoSeparating.agda promoted from doc scaffold to a real module. The credibility core (Pillars A + B + C) is now COMPLETE. The model is EchoGraded with its single hypothesis ≤g-prop removed: a non-propositional loss order _⊑_ with two distinct lo→hi arrows (s₀, s₁) and a reindexing `deg` that distinguishes them. - sep-order-not-prop : ¬ (s₀ ≡ s₁) — the exact hypothesis whose presence (EchoGraded.≤g-prop) makes degrade-compose true. - sep-map-over-id / sep-map-over-comp + sep-deg-unit-* : generic Σ-functoriality and the functorial unit STILL hold here verbatim (this is a bona-fide Echo setting). - SepDegradeCompose + sep-degrade-compose-fails : the characteristic loss-grade composition law (EchoGraded.degrade-compose transcribed) is refuted at the concrete witness rfl-lo/s₀/s₁/true, via a checked true ≢ false — not an appeal to non-derivability. Conclusion: degrade-compose is NOT a generic Σ-consequence; it is carried precisely by propositionality of the loss order. Answers the "isn't this all Σ-lemmas?" objection with a countermodel. - proofs/agda/EchoSeparating.agda: real, --safe --without-K, no postulates / no escape pragmas. - proofs/agda/Smoke.agda: pin _⊑_/deg/sep-order-not-prop/ sep-map-over-*/SepDegradeCompose/sep-degrade-compose-fails. - docs/echo-types/establishment-plan.adoc: Pillar C landed, Status table, sequencing note (A/B/C complete), revision history. - CLAUDE.md: rung state + workstream-3 refreshed; next advance now Pillar D (EchoRelModel second model + conservativity.adoc). All.agda + Smoke.agda exit 0 under --safe --without-K. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent f3f4719 commit 1daad01

4 files changed

Lines changed: 223 additions & 73 deletions

File tree

CLAUDE.md

Lines changed: 44 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -106,10 +106,18 @@ Two active workstreams:
106106
strengthened, unchanged. See establishment-plan.adoc §"H2
107107
verdict" + revision history.
108108

109+
**Pillar C COMPLETE (2026-05-17).** `EchoSeparating.agda` real:
110+
a separating model = `EchoGraded` minus `≤g-prop`
111+
(`sep-order-not-prop`); generic Σ-functoriality
112+
(`sep-map-over-{id,comp}`) + functorial unit hold, but
113+
`SepDegradeCompose` is refuted (`sep-degrade-compose-fails`, via
114+
checked `true ≢ false`). Pillars A/B/C done — credibility core
115+
complete.
116+
109117
Open pieces on this track:
110-
* Pillar C`EchoSeparating.agda` (separating model: generic
111-
Σ-functoriality holds while `degrade-compose` fails).
112-
* Pillar D — `EchoRelModel.agda` + `conservativity.adoc`.
118+
* Pillar D`EchoRelModel.agda` (transport the Pillar-B
119+
graded-comonad laws into the relational/fibration model) +
120+
`docs/echo-types/conservativity.adoc`.
113121
* Pillar E (TYPES/CPP-ITP/Zenodo) not started.
114122

115123
Cross-repo bridge status lives in `docs/echo-types/cross-repo-bridge-status.md`.
@@ -198,9 +206,14 @@ new judgment — it is definitionally `fib`).
198206
(`EchoCone`/`echo-cone`, `SliceHom`↔cone bridge, `IsMediator`,
199207
`echo-pullback-univ` — funext-free pointwise uniqueness, no K).
200208
Both pinned in `Smoke.agda`. No postulates.
201-
* **Pillars C/D (scaffolds):** `EchoSeparating`, `EchoRelModel`
202-
declaration-free doc modules (no postulates, no holes), tracked
203-
in `All.agda`, carrying intended signatures as commented specs.
209+
* **Pillar C (real, verified — COMPLETE, 2026-05-17):**
210+
`EchoSeparating.agda` — separating model (`EchoGraded` minus
211+
`≤g-prop`); `sep-order-not-prop`, `sep-map-over-{id,comp}` (generic
212+
Σ-laws hold), `sep-degrade-compose-fails` (characteristic law
213+
refuted at `true ≢ false`). Pinned in `Smoke.agda`. No postulates.
214+
* **Pillar D (scaffold):** `EchoRelModel` — declaration-free doc
215+
module (no postulates, no holes), tracked in `All.agda`, carrying
216+
intended signatures as commented specs.
204217

205218
`agda proofs/agda/All.agda` and `agda proofs/agda/Smoke.agda` both
206219
exit 0 under `--safe --without-K`. No postulates introduced.
@@ -216,29 +229,34 @@ used by `EchoGraded.degrade-via-join`) makes the `subst GEcho
216229
`≤g-prop`. Thesis unchanged and strengthened (establishment-plan
217230
§"H2 verdict"). `All.agda` + `Smoke.agda` exit 0, no postulates.
218231

219-
**H1 LANDED (2026-05-17). Pillar B COMPLETE.** `EchoPullback.agda`
220-
real: `Echo f y` is the pullback of `f` along `y : ⊤ → B`;
221-
`SliceHom (λ _ → y) f` IS a cone (bridge round-trips `refl`);
222-
`echo-pullback-univ` gives existence + funext-free pointwise
223-
uniqueness (stdlib `Σ-≡,≡→≡`, no K). `All.agda` + `Smoke.agda`
224-
exit 0, no postulates.
232+
**Pillar C LANDED (2026-05-17). Credibility core (A+B+C) COMPLETE.**
233+
`EchoSeparating.agda` real: a separating model = `EchoGraded` minus
234+
its sole hypothesis `≤g-prop`. `sep-order-not-prop` (non-prop loss
235+
order), `sep-map-over-{id,comp}` + functorial unit (generic
236+
Σ-functoriality survives), `sep-degrade-compose-fails` (the
237+
characteristic composition law is refuted, checked via
238+
`true ≢ false`). Verdict: `degrade-compose` is carried *precisely*
239+
by propositionality of the loss order — genuine structure, not
240+
Σ-bookkeeping. `All.agda` + `Smoke.agda` exit 0, no postulates.
225241

226242
Smallest useful next advance:
227243

228-
1. **Pillar C — `EchoSeparating.agda`.** A *separating model*: a
229-
structure satisfying generic Σ-functoriality in which the
230-
loss-grade composition law (`degrade-compose` / `degrade-via-join`)
231-
fails — a concrete finite witness. Answers "isn't this all
232-
Σ-lemmas?" with a model, not an argument.
233-
2. Then Pillar D — `EchoRelModel.agda` (transport the Pillar-B
234-
graded-comonad laws into the relational/fibration model) +
235-
`docs/echo-types/conservativity.adoc`.
236-
3. Then Pillar E — TYPES abstract / CPP-ITP / Zenodo.
237-
238-
Rationale: Pillars A and B are complete and the pivotal thesis bet
239-
settled positively. The credibility core now needs the separating
240-
model (C) — the gold-standard "this structure is real, not
241-
bookkeeping" artefact — before model-independence (D).
244+
1. **Pillar D — `EchoRelModel.agda`.** Second model: transport the
245+
Pillar-B graded-comonad laws into the relational / fibration
246+
model (`EchoCategorical.Fibration`, `EchoRelational`). Two
247+
independent models = model-independence (robustness). Then a
248+
`model-agreement` lemma (Set vs relational under
249+
`fiber-to-echo`/`echo-to-fiber`).
250+
2. Pillar D artefact 2 — `docs/echo-types/conservativity.adoc`:
251+
because `Echo = Σ`, a small graded calculus with a loss modality
252+
embeds conservatively + definitionally into MLTT+Σ. State as a
253+
metatheorem.
254+
3. Pillar E — TYPES abstract / CPP-ITP / Zenodo.
255+
256+
Rationale: the credibility core (A pin-identity, B universal
257+
property + graded comonad, C separating model) is complete. What
258+
remains for "established" standing is model-independence (D) — the
259+
property reviewers actually check — then external validation (E).
242260

243261
---
244262

docs/echo-types/establishment-plan.adoc

Lines changed: 39 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,16 @@ Harden Gate 2. The existing `VisibleConstraintAudit` /
109109
* Artefact: `EchoSeparating.agda` — a *separating model*: a structure
110110
satisfying generic Σ-functoriality in which the loss-grade
111111
composition law (`degrade-compose` / `degrade-via-join`) fails.
112+
*Landed 2026-05-17:* the model is `EchoGraded` with its single
113+
hypothesis `≤g-prop` removed — a non-propositional loss order
114+
(`sep-order-not-prop : ¬ (s₀ ≡ s₁)`) with a reindexing that
115+
distinguishes the two `lo→hi` arrows. `sep-map-over-id` /
116+
`sep-map-over-comp` (generic Σ-functoriality) and the functorial
117+
unit hold verbatim; `sep-degrade-compose-fails : ¬
118+
SepDegradeCompose` refutes the characteristic law at the checked
119+
witness `true ≢ false`. Conclusion: `degrade-compose` is carried
120+
precisely by propositionality of the loss order — genuine
121+
structure, not Σ-bookkeeping.
112122
* Authority effect: answers "isn't this all Σ-lemmas with new names?"
113123
with a model, not an argument. Separating models are the gold
114124
standard for "this structure is real, not bookkeeping".
@@ -150,14 +160,15 @@ Authority is conferred socially, not internally. In cost/payoff order:
150160

151161
*Order (revised 2026-05-17 — de-risk first):* A ✓ →
152162
**B(graded comonad, thin slice) ✓ → B(pullback) ✓** →
153-
C(separating model) → D(second model + conservativity) → E(write-up).
154-
The graded-comonad result was the pivotal bet, so a minimal slice
155-
was attempted _before_ the safe pullback work to test the thesis
156-
early (fail fast); it settled positively and over-delivered all
157-
three laws, after which the pullback landed as planned. *Pillars A
158-
and B are now complete.* Next: C(separating model). A–C are the
159-
credibility core and need no external unblocker. The ordinal /
160-
Buchholz
163+
C(separating model) ✓ → D(second model + conservativity) →
164+
E(write-up). The graded-comonad result was the pivotal bet, so a
165+
minimal slice was attempted _before_ the safe pullback work to test
166+
the thesis early (fail fast); it settled positively and
167+
over-delivered all three laws, after which the pullback and the
168+
separating model landed as planned. *Pillars A, B and C are now
169+
complete — the credibility core is done.* Next: D(second model +
170+
conservativity). A–C were the credibility core and needed no
171+
external unblocker. The ordinal / Buchholz
161172
track is impressive _consumer evidence_, not foundation — keep it
162173
firewalled from the identity claim exactly as `roadmap.md` already does.
163174

@@ -214,21 +225,22 @@ stands and is *strengthened*; no honest rewrite is required.
214225
| A | `EchoFiberBridge.agda` (`echo↔fib`, pinned in `Smoke.agda`) | Landed
215226
| B | `EchoPullback.agda` (`echo-pullback-univ` + SliceHom↔cone) | Landed
216227
| B | `EchoGradedComonad.agda` (`gextract`/`gduplicate` + 3 laws) | Thin slice landed (verdict <<h2-verdict>>)
217-
| C | `EchoSeparating.agda` | Scaffolded (doc-only module, in `All.agda`)
228+
| C | `EchoSeparating.agda` (`sep-degrade-compose-fails` + Σ-laws hold) | Landed
218229
| D | `EchoRelModel.agda` | Scaffolded (doc-only module, in `All.agda`)
219230
| D | `docs/echo-types/conservativity.adoc` | Not started
220231
| E | TYPES abstract / CPP-ITP paper / Zenodo / library packaging | Not started
221232
|===
222233

223-
Pillar B is fully landed: both `EchoPullback.agda` (universal
224-
property) and `EchoGradedComonad.agda` (graded comonad, <<h2-verdict>>)
225-
are real modules. The remaining Pillar C–D entries (`EchoSeparating`,
226-
`EchoRelModel`) are still documentation-only Agda modules (no
227-
declarations, hence no postulates or holes — they typecheck under
228-
`--safe --without-K` and are tracked in `All.agda` per the
229-
rung-consolidation policy). They carry the intended theorem
230-
signatures as commented specifications so a fresh session can start
231-
filling them without re-deriving the design.
234+
Pillars A, B and C are fully landed (`EchoFiberBridge`,
235+
`EchoPullback`, `EchoGradedComonad`, `EchoSeparating` — all real,
236+
verified, no postulates). The remaining Pillar D entry
237+
`EchoRelModel` is still a documentation-only Agda module (no
238+
declarations, hence no postulates or holes — it typechecks under
239+
`--safe --without-K` and is tracked in `All.agda` per the
240+
rung-consolidation policy), carrying the intended theorem signatures
241+
as commented specifications so a fresh session can start filling it
242+
without re-deriving the design. `conservativity.adoc` (Pillar D
243+
artefact 2) and Pillar E are not started.
232244

233245
== Revision policy
234246

@@ -255,3 +267,12 @@ reason.
255267
no K). *Pillar B is now complete* (universal property + graded
256268
comonad). Next per sequencing: Pillar C — `EchoSeparating.agda`
257269
(separating model).
270+
* *2026-05-17 — trigger: Pillar C artefact state change.* Pillar C
271+
landed: `EchoSeparating.agda` is real — a separating model
272+
(`EchoGraded` minus `≤g-prop`) where generic Σ-functoriality
273+
(`sep-map-over-{id,comp}`) and the functorial unit hold but
274+
`SepDegradeCompose` is refuted (`sep-degrade-compose-fails`, via
275+
checked `true ≢ false`). The characteristic law is carried
276+
precisely by propositionality of the loss order. *Pillars A, B, C
277+
complete* — the credibility core is done. Next per sequencing:
278+
Pillar D — `EchoRelModel.agda` (second model) + `conservativity.adoc`.

proofs/agda/EchoSeparating.agda

Lines changed: 127 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2,40 +2,138 @@
22

33
-- Pillar C of docs/echo-types/establishment-plan.adoc.
44
--
5-
-- SCAFFOLD ONLY. Documentation module (no declarations → no
6-
-- postulates, no holes; typechecks under `--safe --without-K`,
7-
-- tracked in `All.agda`).
5+
-- REAL MODULE (separating model landed 2026-05-17).
86
--
9-
-- Goal: a SEPARATING MODEL. Construct a structure that satisfies
10-
-- generic Σ-functoriality (the `map-over` id/comp laws) but in which
11-
-- the loss-grade composition law `EchoGraded.degrade-compose`
12-
-- (equivalently `degrade-via-join`) FAILS. This is the gold-standard
13-
-- answer to the only objection every referee raises: "isn't this all
14-
-- Σ-lemmas with renamed components?" A model where the generic laws
15-
-- hold and the characteristic law does not proves the characteristic
7+
-- Goal: a SEPARATING MODEL. The only objection every referee raises
8+
-- is "isn't this all Σ-lemmas with renamed components?" The
9+
-- gold-standard answer is a model in which the *generic* Σ/Echo
10+
-- functoriality laws (`Echo.map-over-id` / `map-over-comp`) still
11+
-- hold, yet the *characteristic* loss-grade composition law
12+
-- `EchoGraded.degrade-compose` (equivalently `degrade-via-join`)
13+
-- FAILS — at a concrete, decidable witness. That proves the graded
1614
-- family is genuine structure, not bookkeeping.
1715
--
18-
-- This continues the existing negative-exhibit discipline of
19-
-- `characteristic/VisibleConstraintAudit.agda` and
20-
-- `characteristic/IntegrationAudit.agda` (which collapse pseudo-
21-
-- theorems to `proj₂` / products of disjoint facts), but in the
22-
-- positive direction: an explicit countermodel object.
16+
-- The precise pin. `EchoGraded.degrade-compose` holds for exactly
17+
-- one reason: `≤g-prop` — the loss order `_≤g_` is propositional, so
18+
-- the chosen factoring `p12 ∙ p23` and the direct `p13` are forced
19+
-- equal, and `degrade-comp` then closes it. This model is `EchoGraded`
20+
-- with that single hypothesis removed: a "loss order" `_⊑_` with TWO
21+
-- distinct arrows `s₀ , s₁ : lo ⊑ hi` (so `sep-order-not-prop`), a
22+
-- reindexing `deg` that distinguishes them (`s₀ ↦ id`, `s₁ ↦ not`).
23+
-- Nothing else changes; in particular the Σ/`map-over` layer is the
24+
-- *same generic layer* and its laws still hold here (`sep-map-over-*`).
25+
-- The path-independence law breaks (`sep-degrade-compose-fails`).
2326
--
24-
-- Intended shape (to be filled):
25-
--
26-
-- -- A concrete small carrier with a non-lattice "grade" so the
27-
-- -- join universal property is unavailable.
28-
-- record SepModel : Set where ...
27+
-- This continues the negative-exhibit discipline of
28+
-- `characteristic/VisibleConstraintAudit.agda` /
29+
-- `characteristic/IntegrationAudit.agda` (collapsing pseudo-theorems
30+
-- to `proj₂`), but in the positive direction: an explicit
31+
-- countermodel object, with the failure a checked `true ≢ false`.
32+
33+
module EchoSeparating where
34+
35+
open import Echo using (Echo; MapOver; map-over; map-over-id; map-over-comp)
36+
open import Data.Bool.Base using (Bool; true; false; not)
37+
open import Data.Product.Base using (_,_)
38+
open import Data.Unit.Base using (⊤; tt)
39+
open import Function.Base using (id; _∘_)
40+
open import Relation.Nullary using (¬_)
41+
open import Relation.Binary.PropositionalEquality using (_≡_; refl; trans)
42+
43+
----------------------------------------------------------------------
44+
-- The model: `EchoGraded` minus `≤g-prop`.
2945
--
30-
-- -- Generic Σ-functoriality still holds here.
31-
-- sep-map-over-id : ...
32-
-- sep-map-over-comp : ...
46+
-- Two grades and a NON-propositional loss order — two distinct
47+
-- arrows from `lo` to `hi`. (Contrast `EchoGraded._≤g_`, where
48+
-- `≤g-prop` makes every hom a singleton.)
49+
50+
data G : Set where
51+
lo hi : G
52+
53+
data _⊑_ : G G Set where
54+
rfl-lo : lo ⊑ lo
55+
rfl-hi : hi ⊑ hi
56+
s₀ s₁ : lo ⊑ hi -- two distinct lo→hi arrows: not a prop
57+
58+
-- Grade-indexed carrier (mirrors `EchoGraded.GEcho`).
59+
Obj : G Set
60+
Obj lo = Bool
61+
Obj hi = Bool
62+
63+
-- Reindexing along the loss order (mirrors `EchoGraded.degrade`).
64+
-- The two lo→hi arrows act differently — this is the whole point.
65+
deg : {g₁ g₂} g₁ ⊑ g₂ Obj g₁ Obj g₂
66+
deg rfl-lo b = b
67+
deg rfl-hi b = b
68+
deg s₀ b = b
69+
deg s₁ b = not b
70+
71+
----------------------------------------------------------------------
72+
-- The loss order here is NOT propositional. This is the *single*
73+
-- hypothesis whose presence (`EchoGraded.≤g-prop`) makes
74+
-- `degrade-compose` true and whose absence breaks it below.
75+
76+
sep-order-not-prop : ¬ (s₀ ≡ s₁)
77+
sep-order-not-prop ()
78+
79+
-- The functorial UNIT law still holds (the generic graded-structure
80+
-- part is untouched): identity arrows reindex by the identity.
81+
sep-deg-unit-lo : (b : Obj lo) deg rfl-lo b ≡ b
82+
sep-deg-unit-lo _ = refl
83+
84+
sep-deg-unit-hi : (b : Obj hi) deg rfl-hi b ≡ b
85+
sep-deg-unit-hi _ = refl
86+
87+
----------------------------------------------------------------------
88+
-- Generic Σ/Echo functoriality STILL HOLDS in this model.
3389
--
34-
-- -- The characteristic graded law is refuted at a named witness.
35-
-- sep-degrade-compose-fails :
36-
-- ¬ (∀ {…} → <degrade p23 (degrade p12 e) ≡ degrade p13 e in SepModel>)
90+
-- Instantiate the generic `Echo` machinery at a model map (the
91+
-- `s₁`-action `not`, viewed as a `MapOver` over the point base `⊤`).
92+
-- `map-over-id` / `map-over-comp` hold here verbatim — they are the
93+
-- model-independent Σ laws, and this model is a bona-fide Echo
94+
-- setting. Only the *grade* law (next section) is what fails.
95+
96+
sep-f : Bool
97+
sep-f _ = tt
98+
99+
sep-MO : MapOver sep-f sep-f
100+
sep-MO = not , (λ _ refl)
101+
102+
sep-map-over-id :
103+
(e : Echo sep-f tt) map-over (id , (λ _ refl)) e ≡ e
104+
sep-map-over-id = map-over-id
105+
106+
sep-map-over-comp :
107+
(e : Echo sep-f tt)
108+
map-over ((not ∘ not) , (λ _ trans refl refl)) e
109+
≡ map-over sep-MO (map-over sep-MO e)
110+
sep-map-over-comp e = map-over-comp not (λ _ refl) not (λ _ refl) e
111+
112+
----------------------------------------------------------------------
113+
-- The characteristic law FAILS.
37114
--
38-
-- The witness must be concrete (finite carrier, decidable) so the
39-
-- failure is a checked inequality, not an appeal to non-derivability.
115+
-- `SepDegradeCompose` is `EchoGraded.degrade-compose` transcribed
116+
-- with `_⊑_` / `deg` for `_≤g_` / `degrade`. It is refuted at the
117+
-- concrete witness g₁=lo, g₂=lo, g₃=hi, p₁₂=rfl-lo, p₂₃=s₀, p₁₃=s₁,
118+
-- e=true: deg s₀ (deg rfl-lo true) = true, deg s₁ true = false.
40119

41-
module EchoSeparating where
120+
SepDegradeCompose : Set
121+
SepDegradeCompose =
122+
{g₁ g₂ g₃}
123+
(p₁₂ : g₁ ⊑ g₂) (p₂₃ : g₂ ⊑ g₃) (p₁₃ : g₁ ⊑ g₃) (e : Obj g₁)
124+
deg p₂₃ (deg p₁₂ e) ≡ deg p₁₃ e
125+
126+
true≢false : ¬ (true ≡ false)
127+
true≢false ()
128+
129+
sep-degrade-compose-fails : ¬ SepDegradeCompose
130+
sep-degrade-compose-fails law = true≢false (law rfl-lo s₀ s₁ true)
131+
132+
-- Conclusion (for the establishment plan). The generic Σ-functoriality
133+
-- laws (`sep-map-over-id` / `sep-map-over-comp`) and the functorial
134+
-- unit (`sep-deg-unit-*`) hold in this model exactly as in
135+
-- `EchoGraded`; the only difference is `sep-order-not-prop` (no
136+
-- `≤g-prop`), and that alone is enough to refute the characteristic
137+
-- composition law. Therefore `EchoGraded.degrade-compose` is NOT a
138+
-- generic Σ-consequence — it is carried precisely by propositionality
139+
-- of the loss order. The graded-loss structure is real.

proofs/agda/Smoke.agda

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,19 @@ open import EchoPullback using
175175
; echo-pullback-univ
176176
)
177177

178+
-- Pillar C: separating model — generic Σ-functoriality holds while
179+
-- the characteristic loss-grade composition law fails (carried
180+
-- precisely by propositionality of the loss order).
181+
open import EchoSeparating using
182+
( _⊑_
183+
; deg
184+
; sep-order-not-prop
185+
; sep-map-over-id
186+
; sep-map-over-comp
187+
; SepDegradeCompose
188+
; sep-degrade-compose-fails
189+
)
190+
178191
open import EchoTropical using
179192
( Candidate
180193
; score

0 commit comments

Comments
 (0)