Skip to content

Commit d0f21fe

Browse files
docs: Pillar E paper — Evaluation section (clears [EXPAND]) (#84)
## Summary Fills the **Evaluation and discussion** `[EXPAND]` stub in `docs/echo-types/paper.adoc` with the content the NOTE explicitly asked for: * Per-pillar **proof-size table** (LOC / top decls / subst+rewrite / postulates) sourced from the modules at this commit. * An **honest reading of the common-upper-bound idiom** — it removes `subst` *because* the equations carry no comonadic coherence (the modality is thin), not as a clever encoding saving. Reading the short proofs as a thesis-strengthening trick was retracted on 2026-05-18 (R-2026-05-18); this section keeps the honest framing. * Three **honest bounds** (where the construction does *not* extend): the EI-2 negative result; the funext-relative mediator property; the thinness-only content. Stated as bounds, not re-spun as features. * **Threats to validity**, including the Gate-2 audit's own "single recipe" finding (`docs/gate-2-handoff.adoc` Observation G), consumer-evidence sample-size, the conservativity-is-evidence caveat, and the gate-discipline meta-caveat. Adds `[#ordinal-appendix]` anchor + tightens the status banner to note that the ordinal-appendix `[EXPAND]` is now the only one left and is gated on Bachmann–Howard. Refs: paper.adoc Pillar E `[EXPAND]` clear-out (CLAUDE.md priority item 3 — "Evaluation: proof-size/cost table; quantify common-upper-bound idiom vs naive `subst`"). ## Test plan * [x] `agda proofs/agda/All.agda` exit 0 under `--safe --without-K` * [x] `agda proofs/agda/Smoke.agda` exit 0 under `--safe --without-K` * [x] No postulates introduced (prose-only change) * [x] AsciiDoc renders: anchor `<<ordinal-appendix>>` resolves; table columns match * [ ] (owner) review the proof-size numbers against the actual modules — table is a fingerprint, not a comparison-with-others claim ## Non-overlap with parallel sessions Touches only `docs/echo-types/paper.adoc`. Stays well clear of: * The Brouwer-arithmetic / `_<ᵇ⁻_` / rank-mono slices in `proofs/agda/Ordinal/**` (another session's Slices 1–5 territory). * The ordinal-appendix `[EXPAND]` at line ~1200 (gated on Bachmann–Howard, firewalled per `roadmap.md`). * `docs/echo-types/types-abstract.adoc` (submission-ready, hands off). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent e1e904c commit d0f21fe

1 file changed

Lines changed: 236 additions & 14 deletions

File tree

docs/echo-types/paper.adoc

Lines changed: 236 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,12 @@
1010
*STATUS: living draft, not for submission.* Written 2026-05-17 while
1111
the formal result is fresh, so the narrative is captured at full
1212
strength now. Sections tagged *[EXPAND]* are deliberate stubs to be
13-
filled as more context accrues (broader worked examples, deeper
14-
related-work comparison, the ordinal/Buchholz consumer-evidence
15-
appendix, an evaluation section). Do not submit until the *[EXPAND]*
16-
tags are cleared and the venue/template are chosen (Pillar E logistics
17-
are offline/author-driven). The TYPES extended abstract
13+
filled as more context accrues; only the ordinal/Buchholz
14+
consumer-evidence appendix remains, and is gated on the ordinal
15+
track reaching Bachmann–Howard (see <<ordinal-appendix>>). Do not
16+
submit until that tag clears and the venue/template are chosen
17+
(Pillar E logistics are offline/author-driven). The TYPES extended
18+
abstract
1819
(`types-abstract.adoc`) is the short, already-submission-ready
1920
companion; this is the full CPP/ITP-style mechanised-metatheory
2021
paper it grows into.
@@ -542,16 +543,236 @@ present "funext-free" as a feature. We still argue the gate /
542543
retraction discipline is a contribution — and this very reframing,
543544
logged in `docs/retractions.adoc`, is the discipline working.
544545

545-
== Evaluation and discussion [EXPAND]
546+
== Evaluation and discussion
546547

547-
NOTE: *[EXPAND]* — proof-size / proof-cost table per pillar; the
548-
common-upper-bound idiom analysed honestly (it removes `subst`
549-
*because* the equations carry no comonadic coherence, not as a clever
550-
saving); a discussion of where the construction does *not* extend
551-
(the EI-2 negative result; the funext-relative mediator property; the
552-
thinness-only content) stated as honest bounds, *not* spun as
553-
strengths; threats to validity, including the Gate-2 audit's own
554-
"single recipe" finding.
548+
This section reports proof size and the load-bearing cost of each
549+
pillar, then discusses three honest bounds on the construction and
550+
the threats to validity carried over from the Gate-2 audit. The
551+
posture throughout is the one the retraction note (<<reframing-note>>;
552+
`docs/retractions.adoc` R-2026-05-18) committed to: claim the
553+
mechanised strength, neither less nor more.
554+
555+
=== Proof size per pillar
556+
557+
The four pillars together occupy ~930 lines across six modules, with
558+
zero postulates and three `rewrite` sites (one in the foundational
559+
`degrade-compose`; one in its `rel-model` lift; one in
560+
`EchoGraded` proper). The single `subst` site that appears in
561+
`EchoPullback.agda` is in the *definitional shape* of the
562+
`IsMediator` record's `coherent` field — the
563+
`subst (λ a → f a ≡ y) (factor v) (proj₂ (m v)) ≡ square c v`
564+
equation that any mediator must witness — and not a transport
565+
inserted to make a proof go through.
566+
567+
[cols="1,3,1,1,1,1", options="header"]
568+
|===
569+
| Pillar | Module | LOC | Top decls | `subst`/`rewrite` (code) | Postulates
570+
571+
| A
572+
| `EchoFiberBridge.agda`
573+
| 56
574+
| `fiber`, `echo→fib`, `fib→echo`, `echo↔fib`
575+
| 0 / 0
576+
| 0
577+
578+
| B (pullback)
579+
| `EchoPullback.agda`
580+
| 143
581+
| `EchoCone`, `echo-cone`, `IsMediator`, `echo-pullback-univ`, plus the cone↔SliceHom bridge
582+
| 1 / 0 (the lone `subst` is in `IsMediator.coherent`'s *shape*, not in a proof body)
583+
| 0
584+
585+
| B (graded comonad)
586+
| `EchoGradedComonad.agda`
587+
| 159
588+
| `gextract`, `gduplicate`, `gcomonad-counit-l`, `gcomonad-counit-r`, `gcomonad-coassoc`
589+
| 0 / 0
590+
| 0
591+
592+
| B (graded foundation)
593+
| `EchoGraded.agda`
594+
| 169
595+
| `Grade`, `_≤g_`, `≤g-prop`, `_⊔g_`, `GEcho`, `degrade`, `degrade-comp`, `degrade-compose`, `degrade-via-join`, plus the ⊔ universal-property trio
596+
| 0 / 1 (`degrade-compose` rewrites by `≤g-prop`)
597+
| 0
598+
599+
| C
600+
| `EchoSeparating.agda`
601+
| 139
602+
| `Sep`, `s₀`, `s₁`, `sep-order-not-prop`, `SepGEcho`, `sep-map-over-{id,comp}`, `SepDegradeCompose`, `sep-degrade-compose-fails`
603+
| 0 / 0
604+
| 0
605+
606+
| D
607+
| `EchoRelModel.agda`
608+
| 261
609+
| `GradedLossModel`, `GCLaws`, `set-model`, `rel-model`, `model-agreement`, `bridge-natural`
610+
| 0 / 1
611+
| 0
612+
|===
613+
614+
The two F-2026-05-18a earn-back modules (`EchoPullbackUnivF4.agda`
615+
for the funext-conditional terminal-cone property, and
616+
`EchoStepNDModelF2.agda` for the second model of the *bare* Echo
617+
functor) ride the same budget: each typechecks `--safe --without-K`
618+
with zero postulates, the funext dependency in F4 is a module
619+
parameter rather than a postulate, and both are pinned in `Smoke.agda`.
620+
621+
What this table is, and what it is not. It is a fingerprint of the
622+
mechanised content — useful for a reader who wants to see, before
623+
reading any proof, that the trusted base is small (zero postulates,
624+
one definitional `subst`, three uses of `rewrite`). It is *not* a
625+
claim of being "small relative to" any comparator; we know of no
626+
fair comparator in the graded-modal literature and decline to
627+
manufacture one.
628+
629+
=== The common-upper-bound idiom, honestly
630+
631+
The three graded coherence equations (`gcomonad-counit-l`,
632+
`gcomonad-counit-r`, `gcomonad-coassoc`) are each phrased so that
633+
both sides land in the *same* `GEcho g'` for a free common bound
634+
`g'`, post-composed by an arbitrary degrade into `g'`. In that
635+
phrasing, every proof reduces to two calls of `degrade-compose`
636+
chained through one application of `≤g-prop`, with no `subst`
637+
anywhere. The full coassociativity proof is 17 lines of
638+
`≡-Reasoning` (`EchoGradedComonad.agda`:135–158); each counit proof
639+
is two lines (`:112–113`, `:122–123`).
640+
641+
It is tempting — and earlier drafts of this paper did — to read this
642+
as a clever encoding trick that saves transport. That reading is
643+
wrong, and the honest reading is uncomfortable.
644+
645+
The naive grade-equality phrasing of coassociativity would compare
646+
`GEcho ((g₁⊔g₂)⊔g₃)` with `GEcho (g₁⊔(g₂⊔g₃))`, forcing a
647+
`subst GEcho (⊔g-assoc …)` to make the two sides typecheck against
648+
one another. That `subst` then has to be coherent with the comonadic
649+
laws — i.e. one would have to prove that `degrade` commutes with the
650+
transport, that the transport is functorial along `_⊔g_`, and that
651+
the resulting square serialises into the pentagon. All of that is
652+
what a genuine graded comonad in the Petriček–Orchard–Mycroft sense
653+
would carry: a nested family `D_{r·s} ⇒ D_r D_s` whose coherence
654+
*is* the pentagon and triangle of a categorical comonad object.
655+
656+
The common-upper-bound idiom removes those obligations because there
657+
is no such nested family to be coherent about. `EchoGradedComonad`
658+
does not exhibit a graded comonad in that sense — that claim was
659+
retracted on 2026-05-18 — and the coherence content is exactly
660+
*thinness of the order* (`≤g-prop`) propagated by a single
661+
path-independence lemma (`degrade-compose`). The proofs are short
662+
because the structure they discharge is thin, not because the
663+
encoding is clever. Said sharply: in a hypothetical setting where
664+
`_≤g_` had non-trivial path content, the common-upper-bound idiom
665+
would not save us; we would have to track the path data, and the
666+
mechanisation would look like the literature's graded-comonad
667+
mechanisations rather than like ours.
668+
669+
The separating model (`EchoSeparating.agda`) is the operational
670+
witness for this reading. It is `EchoGraded` minus `≤g-prop`; every
671+
generic Σ-functoriality law (`sep-map-over-id`, `sep-map-over-comp`,
672+
the functorial-unit triad) still holds by the same definitional
673+
collapse, and `sep-degrade-compose-fails` exhibits a checked
674+
`true ≢ false` refutation of `SepDegradeCompose`. The single
675+
two-line refutation `sep-degrade-compose-fails law = true≢false (law
676+
rfl-lo s₀ s₁ true)` measures exactly the cost of removing
677+
propositionality of the order: one degenerate composition pair
678+
disagrees. That is the only content there is to remove `subst` from
679+
in the first place.
680+
681+
=== Where the construction does *not* extend
682+
683+
Three boundaries are mechanised, and we state them as bounds rather
684+
than as features re-spun.
685+
686+
==== The five-axis simultaneous-integration claim (EI-2) is settled negatively
687+
688+
Gate-2's identity claim that the five axes (loss, role, linearity,
689+
indexing, modality) integrate *simultaneously* in a non-trivial way
690+
was killed by an explicit falsifier (the `IntegrationAudit.agda`
691+
counterexample family; see `docs/integration-audit.adoc` and
692+
`docs/retractions.adoc` R-2026-04 for the negative-result entry).
693+
The four "characteristic" survivors integrate pairwise at most. This
694+
is recorded as a falsifiable-gate negative, not as a "future work"
695+
deferral; reopening it requires producing a witness that the audit's
696+
falsifier rules out, and we know of none.
697+
698+
==== The mediator property is funext-relative
699+
700+
`echo-pullback-univ` discharges *pointwise* uniqueness `∀ v → m' v ≡
701+
m v` and nothing more (`EchoPullback.agda`:131–143). The
702+
unconditional terminal-cone equality `m' ≡ m` is unstatable in
703+
`--safe --without-K` without funext, and so it is not stated. The
704+
F-2026-05-18a earn-back at `EchoPullbackUnivF4.agda` recovers the
705+
terminal-cone equality *conditionally on an explicit `funext` module
706+
parameter* — never a postulate, and never silently — and is exactly
707+
as strong as that conditional form. The retraction stands for the
708+
unconditional claim.
709+
710+
==== The content is thinness of the order, full stop
711+
712+
The coherence equations collapse to `degrade-compose` + `≤g-prop`;
713+
the separating model shows that over generic Σ-functoriality, the
714+
only load-bearing hypothesis is `≤g-prop`. The `GradedLossModel`
715+
interface bakes `⊑-prop` in as a field, and both `set-model` and
716+
`rel-model` fix the *same* grade poset (the second is the first
717+
`× ⊤`, agreeing by `refl`). This is carrier-parametricity over a
718+
fixed thin poset, not semantic model-independence — and was
719+
retracted under that earlier framing. A category theorist reading
720+
this paper should expect the strength of a thin Grothendieck
721+
fibration with a propositional order, not the strength of a graded
722+
comonad in a non-thin lattice.
723+
724+
=== Threats to validity
725+
726+
==== The Gate-2 "single recipe" finding
727+
728+
The Gate-2 handoff (`docs/gate-2-handoff.adoc` Observation G) records
729+
that all four (and the candidate fifth, `RoleGraded`) Gate-2
730+
"characteristic" survivors instantiate the same recipe: a custom
731+
propositional decoration order on a finite type, an echo-indexed
732+
family whose carrier varies per decoration, and a transport action
733+
along the order. The recipe is useful as organising vocabulary, and
734+
we treat it as such; what it does *not* do is independently
735+
corroborate the modality across decorations — the four instances
736+
are not four independent witnesses, they are one structural pattern
737+
applied four times. Cross-axis distinctness arguments
738+
(`docs/gate-1-handoff.adoc`) supply the per-decoration independence
739+
the recipe itself cannot. Anyone reading the four-instance
740+
table in §"Worked examples" as a robustness check should weaken that
741+
reading accordingly.
742+
743+
==== Sample-size on consumer evidence
744+
745+
The two consumer-evidence streams (`absolute-zero` for compute-side
746+
identity programs; the planned Buchholz ordinal-notation track) are
747+
each *one* downstream; the ordinal track is gated on reaching
748+
Bachmann–Howard and is not yet in scope (see <<ordinal-appendix>>).
749+
A failure mode of this paper would be over-reading either as
750+
external validation of the *thesis*; both are validations of
751+
particular technical bridges (the Echo–CNO bridge and the eventual
752+
Echo–`<ᵇ` bridge respectively), and not of "Echo as a recognised
753+
modality" in the field.
754+
755+
==== Conservativity is evidence, not a theorem
756+
757+
`docs/echo-types/conservativity.adoc` was retracted from
758+
"metatheorem" framing on 2026-05-18. The postulate-free `--safe
759+
--without-K` build plus the definitional Σ-identity are *evidence
760+
for* conservativity over MLTT+Σ, in the same sense any
761+
typechecking artefact is evidence for the propositions whose proofs
762+
it carries — they are not, and are not claimed to be, a discharged
763+
metatheorem over all propositions. Anyone citing this paper as
764+
"echo is conservative over MLTT+Σ" is citing more than the
765+
mechanisation discharges.
766+
767+
==== Audit re-runs and gate discipline
768+
769+
The reframing on 2026-05-18 was triggered by an adversarial-review
770+
re-run of Gate-2. The retraction log is append-only; a *future*
771+
re-run could surface a further finding, and the gate discipline
772+
commits us to recording it the same way. This is presented as a
773+
methodological strength only to the extent that the discipline
774+
*succeeds in catching* mis-claims; a reader is entitled to treat
775+
the existence of one retraction as licence to suspect another.
555776

556777
== Related work
557778

@@ -977,6 +1198,7 @@ falsifiable retraction discipline — of which this reframing is an
9771198
instance. External validation is the remaining step.
9781199

9791200
[appendix]
1201+
[#ordinal-appendix]
9801202
== Ordinal / Buchholz consumer-evidence [EXPAND]
9811203

9821204
NOTE: *[EXPAND]* — the ordinal-notation / Buchholz collapsing track

0 commit comments

Comments
 (0)