Skip to content

Commit 8352799

Browse files
hyperpolymathclaude
andcommitted
examples/Transport: add transport-echo Gate 3 example + handoff (prior session)
Pre-existing worked Gate 3 example (structured loss under transport + coarse-graining on ℚ fields over a periodic grid) and its handoff notes. Complete locally but never committed; recorded here as the as-found baseline before the gap-closure work in the following commit. Compiles --safe --without-K, no postulates; two gaps documented in §5. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent b09bb4e commit 8352799

2 files changed

Lines changed: 872 additions & 0 deletions

File tree

docs/gate-3-transport-handoff.adoc

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
= Gate 3 Example: Transport-Echo — Handoff Notes
2+
:toc: macro
3+
:sectnums:
4+
:icons: font
5+
6+
[.lead]
7+
Worked Gate 3 example: structured loss under transport (explicit-Euler
8+
diffusion) and coarse-graining (block averaging) on rational-valued
9+
fields over a periodic grid. Subject file:
10+
`proofs/agda/examples/Transport.agda`.
11+
12+
*Status:* Gate 3 example, complete with two documented gaps
13+
(section 5). Compiles `--safe --without-K`, no postulates.
14+
15+
toc::[]
16+
17+
== What this example demonstrates
18+
19+
The example exhibits structured loss from two distinguishable sources
20+
on `Field n = Vec ℚ n` over a periodic grid. (i) The explicit-Euler
21+
diffusion step `step` at `λ = ¼` is *singular at the Nyquist mode* on
22+
even grids: the alternating vector is annihilated. (ii) Block
23+
averaging `avg` is non-injective (rung 2). (iii) Their composition
24+
`avg ∘ step` has a kernel that *strictly enlarges* beyond either
25+
source taken alone. It is a worked instance of `EchoGraded`'s
26+
base-Echo structure — rung 4's `echoStep-is-Echo` shows the
27+
transport-echo family is definitionally `Echo (avg …)` — and it
28+
introduces no new bridge axis.
29+
30+
== Load-bearing theorems
31+
32+
* `step-kernel-nontrivial` — explicit-Euler diffusion at `λ = ¼` on a
33+
periodic n-cycle is singular at the Nyquist mode for even `n`:
34+
an explicit nonzero field `f` with `step f ≡ 0` at `n = 2`.
35+
* `step-kernel-contains-nyquist-multiples` — every scalar multiple of
36+
the Nyquist mode is annihilated:
37+
`∀ c → step (map (c *_) (nyquist 2)) ≡ replicate 4 0ℚ`
38+
(containment, at the fixed even size).
39+
* `compose-kernel-strictly-larger` — the kernel of `avg ∘ step`
40+
strictly contains both the step-then-`avg` loss and `ker step`
41+
alone. Witness `g6 = [1, -1, -1, 1]` at `n = 4`, block size 2
42+
(`step-then-avg = avg {1} {2} ∘ step`): `g6` lies in
43+
`ker (avg ∘ step)`, is not a scalar multiple of `nyquist 2`, and
44+
has `step g6 ≠ 0`.
45+
46+
== Infrastructure
47+
48+
Factored locally and scoped to this file by design (not promoted to a
49+
utilities module). Future Vec-valued-field examples may want to
50+
extract them.
51+
52+
* `step-homog` — `step (map (c *_) v) ≡ map (c *_) (step v)`
53+
(ℚ-scalar homogeneity of `step`).
54+
* `step-additive` — `step (v + w) ≡ step v + step w` (additivity).
55+
Together with `step-homog` this is the ℚ-linearity of `step`.
56+
* `StepKernelSubspace` — record bundling `closed-+` and `closed-*ₗ`;
57+
with the `StepKernel` predicate and witness `step-kernel-subspace`,
58+
it packages the kernel as a ℚ-subspace.
59+
60+
Eight Vec-over-ℚ lemmas, reusable for future Vec-valued-field work:
61+
62+
[cols="1,3", options="header"]
63+
|===
64+
| Lemma | One-line statement
65+
66+
| `zip-interchange` | `(A+B)+(C+D) ≡ (A+C)+(B+D)` pointwise on vectors
67+
| `zip-sub-exchange` | `(A+C)-(B+D) ≡ (A-B)+(C-D)` pointwise on vectors
68+
| `++∷ʳ` | `zipWith _+_` distributes over snoc `_∷ʳ_`
69+
| `reverse-zipWith` | `reverse` distributes over `zipWith _+_`
70+
| `add-rotL` | left rotation distributes over `zipWith _+_`
71+
| `add-rotR` | right rotation distributes over `zipWith _+_`
72+
| `scale-+` | `map (c *_)` distributes over `zipWith _+_`
73+
| `scale-zero` | `map (c *_)` annihilates the zero vector
74+
|===
75+
76+
== Documented gaps
77+
78+
=== (a) `∀ n` generalisation of `nyquist-in-step-kernel`
79+
80+
`nyquist-in-step-kernel-1` and `-2` stand (computed by `refl` at
81+
`n = 1` and `n = 2`). The general
82+
`∀ n → step (nyquist n) ≡ replicate (2·n) 0ℚ` is blocked on a
83+
Vec-rotation fact stdlib does not provide: that
84+
`rotL (nyquist n) ≡ map -_ (nyquist n)` (and the same for `rotR`) —
85+
rotation of the alternating vector equals its negation. With that
86+
lemma the general case closes via `step-homog`. The lane forbade
87+
postulating it, so the general statement is documented in-file
88+
rather than asserted.
89+
90+
=== (b) `step-kernel-at-4-is-nyquist-line` (rank-1 characterisation)
91+
92+
Not attempted past the ~150-line threshold. The subspace closures
93+
(`step-additive`, `step-homog`, `StepKernelSubspace`) establish that
94+
`ker step` is a ℚ-subspace, but not *which* subspace. Pinning it to
95+
the Nyquist line at `n = 4` is the rank-1 fact, requiring either a
96+
symbolic 4×4 ℚ linear solve or a ℚ-linear-algebra module carrying a
97+
rank-1 characterisation — neither in scope. The containment result
98+
`step-kernel-contains-nyquist-multiples` stands in its place.
99+
100+
== Why this stays in Gate 3
101+
102+
The example is a concrete worked instance demonstrating existing echo
103+
machinery on a real domain (rational fields over a periodic grid). It
104+
introduces no new bridge axis; it does not claim transport and
105+
coarse-graining are independent decorations producing substantive
106+
cross-axis content (the EI-2 investigation settled that question
107+
negatively); and it does not reach toward Gate 2's
108+
characteristic-theorem-family criteria. The strictly-larger kernel of
109+
`avg ∘ step` is *structured loss* — two distinguishable annihilation
110+
sources composing — not bridge-axis interaction.
111+
112+
== Build and verification
113+
114+
`proofs/agda/examples/Transport.agda` compiles under Agda 2.8.0 with
115+
agda-stdlib v2.3, `--safe --without-K`, no postulates, no
116+
`{-# TERMINATING #-}` pragmas, no `--rewriting`.

0 commit comments

Comments
 (0)