Skip to content

Commit 94fe43f

Browse files
ordinal: ω-power infrastructure + 9-of-13 rank-mono primitives (#87)
Five-slice ω-power infrastructure for the Buchholz `_<ᵇ_` rank-monotonicity unblock. Closes 9 of 13 constructor cases under the WfCNF restriction `_<ᵇ⁻_`; 3 cases remain open under documented structural blockers (ψ-admissibility, joint-bplus). See `docs/echo-types/buchholz-rank-obstruction.adoc` for the full analysis (narrowed verdict updated this session). ## Slices | Slice | Module(s) | What lands | |-------|-----------|------------| | 1 | `Ordinal.Brouwer.OmegaPow` | `_·ℕ_`, `ω^_`, basic identifications, `ω^-strict-mono-suc`, `ω^-step` | | 2 | `Ordinal.Brouwer.Phase13`, OmegaPow | `⊕-mono-≤-left`, `·ℕ-mono-≤-left`, `ω^-mono-≤`, `ω^-strict-mono` | | 3 | Phase13, OmegaPow | `⊕-assoc-≤` / `⊕-assoc-≥` (both funext-free `≤′` directions), `·ℕ-add-≤`, **`additive-principal`** at `ω^(suc n)` | | 4 | `Ordinal.Buchholz.RankPow` | `ω-rank-pow` (limit-shaped), `rank-pow`, `ω-rank-pow-{pos,mono}`, `rank-pow-bplus-right-mono`, `rank-pow-via-left`, `additive-principal-ω-rank-pow`, `rank-pow-bplus-into-ω-rank-pow` | | 5 | RankPow | 9 per-constructor rank-mono primitives (relation-agnostic): `rank-mono-<ᵇ-0-Ω`, `rank-mono-<ᵇ-0-ψ`, `rank-mono-<ᵇ-ΩΩ`, `rank-mono-<ᵇ-Ωψ`, `rank-mono-<ᵇ-ψΩ`, `rank-mono-<ᵇ-Ω+`, `rank-mono-<ᵇ-ψ+`, `rank-mono-<ᵇ-+Ω`, `rank-mono-<ᵇ-+ψ` | ## Reusable design The Slice-5 primitives are stated purely in terms of rank inequalities, not the driving relation. Consumers — whether `_<ᵇ⁻_` (this track) or `_<ᵇʳᶠ_` (parallel-session track) — pattern-match on their relation's constructor and apply the matching primitive. No relation-specific recursion lives in RankPow. ## Open under documented blockers - `<ᵇ-ψα`, `<ᵇ-ψΩ≤` — provisional `rank-pow (bpsi ν _) = ω-rank-pow ν` doesn't discriminate on α. Closed by ψ-admissibility predicate (`WellFormedAdmissible.agda`, ~80 lines). - `<ᵇ-+1` — `rank-pow (bplus z₁ z₂)` is not additive principal in general. Needs either a coarser dominator function or richer rank. - `rank-pow-mono-<ᵇ⁻` umbrella — gated on `<ᵇ-+1`. ## Build invariants - `agda proofs/agda/All.agda` and `agda proofs/agda/Smoke.agda` exit 0 under `--safe --without-K`. - No postulates, no escape pragmas, no funext. - Every headline pinned in `Smoke.agda`. ## Commits (20) Branched from `8c9ddcb`. Includes prior session work on the WfCNF predicate (`Ordinal.Buchholz.WellFormedCNF`) and the `_<ᵇ⁻_` subrelation (`Ordinal.Buchholz.OrderRestricted`); the path-1 foundation those modules established is now operational. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 5482712 commit 94fe43f

35 files changed

Lines changed: 3552 additions & 127 deletions

CLAUDE.md

Lines changed: 121 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ work to `main` and refresh all documentation:
193193

194194
## Current rung state (2026-05-20)
195195

196-
### Session arc 2026-05-20 (read this first)
196+
### Session arc 2026-05-20 daytime (theory closure waves 1 + 2 + 3)
197197

198198
*Where we started today (commit `888dee0`, post-#73):* the establishment
199199
track was complete A–D + Pillar E paper drafting in progress. The
@@ -342,7 +342,126 @@ EchoAccess existential carriers (`decisions/echo-access-trivial-carrier.adoc`);
342342
the Pillar A–D internal programme (complete since 2026-05-17);
343343
any §"Theory work" item — the section is closed.
344344

345-
### Session arc 2026-05-17 (read this first)
345+
### Session arc 2026-05-20 evening — ω-power rank-mono unblock (read this first)
346+
347+
*Where we started today (commit `8c9ddcb` on `harden/ci-flake-pin-2026-05-18`):*
348+
the ordinal track had the WfCNF predicate plus the `_<ᵇ⁻_` subrelation
349+
foundations from the earlier session. The rank-embedding route to
350+
unbudgeted `wf-<ᵇʳᶠ_` was framed as "closed impossible" in
351+
`docs/echo-types/buchholz-rank-obstruction.adoc` — the
352+
`<ᵇ-+Ω <ᵇ-0-Ω : bplus bzero (bOmega (fin 1)) <ᵇ bOmega (fin 0)`
353+
counterexample forced a rank inversion under additive Brouwer rank
354+
with `nat-to-ord` successor-stack `ω-rank`. 4 of 13 constructors
355+
admitted rank-mono via `RankPartial.agda`; 9 were structurally
356+
walled.
357+
358+
*Where we ended (PR #87, branch `session-2026-05-20/buchholz-budgeted-plus`,
359+
23 commits ahead of `8c9ddcb`):* the "closed impossible" verdict is
360+
**narrowed** — under the WfCNF restriction `_<ᵇ⁻_` together with a
361+
*limit-shaped* ω-power rank, **10 of 13 constructors close** via
362+
relation-agnostic compositional primitives. 3 cases remain open
363+
under documented structural blockers (ψ-admissibility, joint-bplus).
364+
365+
Eight slices landed in order, each with `agda proofs/agda/All.agda`
366+
and `agda proofs/agda/Smoke.agda` exiting 0 under `--safe --without-K`,
367+
zero postulates, zero escape pragmas, no funext:
368+
369+
1. **Slice 1**`Ordinal.Brouwer.OmegaPow.agda` lands `_·ℕ_`, `ω^_`,
370+
basic identifications (`ω^0≡one`, `one·ℕ≡nat-to-ord`,
371+
`·ℕ-zero`, `·ℕ-suc`), positivity `ω^_-pos`, one-step strict-mono
372+
`ω^-strict-mono-suc`, weakening `ω^-step`.
373+
2. **Slice 2** — left-monotonicity of `_⊕_` (`⊕-mono-≤-left` in
374+
`Phase13.agda`) + `·ℕ-mono-≤-left`, `ω^-mono-≤`, `ω^-strict-mono`
375+
(general gap). Block comment in Phase13 documenting why strict
376+
left-mono of `_⊕_` is *not* a theorem (the `α + ω = β + ω`
377+
counterexample).
378+
3. **Slice 3**`⊕-assoc-≤` / `⊕-assoc-≥` (both funext-free `≤′`
379+
directions in Phase13), `·ℕ-add-≤` bridge, and the keystone
380+
**`additive-principal`** at `ω^(suc n)`. The closure-under-addition
381+
property that makes ω-powers the right rank target for plus-side
382+
`_<ᵇ_` constructors.
383+
4. **Slice 4**`Ordinal.Buchholz.RankPow.agda`: limit-shaped
384+
`ω-rank-pow : OmegaIndex → Ord` (`fin n ↦ ω^(suc n)`), `rank-pow :
385+
BT → Ord` consuming it, plus reusable compositional primitives
386+
(`rank-pow-bplus-right-mono`, `rank-pow-via-left`,
387+
`rank-pow-bplus-into-ω-rank-pow`, `additive-principal-ω-rank-pow`).
388+
5. **Slice 5** — 9 per-constructor rank-mono primitives in RankPow:
389+
`rank-mono-<ᵇ-0-Ω/0-ψ/ΩΩ/Ωψ/ψΩ/Ω+/ψ+/+Ω/+ψ`. Each stated purely
390+
in terms of rank inequalities (not the relation), so both `<ᵇ⁻`
391+
and `<ᵇʳᶠ` consumers reuse them by pattern-matching on their own
392+
relation's constructor.
393+
6. **Item 1**`rank-mono-<ᵇ-+1-via-target` parametric in the
394+
target's additive-principal witness; `rank-mono-<ᵇ-+1-Ω-target`
395+
and `rank-mono-<ᵇ-+1-ψ-target` convenience wrappers. Closes
396+
`<ᵇ-+1` for atomic targets; bplus-target sub-case explicitly
397+
deferred.
398+
7. **Item 2**`Ordinal.Buchholz.WellFormedAdmissible.agda` lands
399+
`WfAdm : BT → Set` strengthening WfCNF with `rank-pow α <′
400+
ω-rank-pow ν` on each `bpsi ν α`. Carrier only; rank refinement
401+
for `<ᵇ-ψα` / `<ᵇ-ψΩ≤` discharge deferred (cross-case interaction
402+
with `<ᵇ-+ψ` documented in the module preamble).
403+
8. **Item 3**`Ordinal.Buchholz.RankMonoUmbrella.agda`: the
404+
rank-soundness-ready relation `_<ᵇ⁰_` with 10 constructors
405+
(tail-bounds baked in via `_≤ᵇ⁰_`) plus the umbrella theorem
406+
**`rank-pow-mono-<ᵇ⁰ : x <ᵇ⁰ y → rank-pow x <′ rank-pow y`**
407+
proved by direct structural recursion over the 10 cases.
408+
409+
*Closure-doc update*: `docs/echo-types/buchholz-rank-obstruction.adoc`
410+
gains a "Slices 1–5 of the ω-power unblock" section with an updated
411+
per-constructor verdict table (10 closed / 3 open). The "rank-
412+
embedding route is closed" framing is narrowed: closed for
413+
unrestricted `_<ᵇ_`, opens up under the WfCNF restriction with
414+
limit-shaped rank.
415+
416+
**Open work on this track (documented blockers):**
417+
418+
* `<ᵇ-ψα`, `<ᵇ-ψΩ≤` — provisional `rank-pow (bpsi ν _) = ω-rank-pow ν`
419+
doesn't discriminate on α. Closed by ψ-admissibility predicate
420+
(carrier landed in Item 2); the rank refinement is a separate
421+
slice that needs to resolve the `<ᵇ-+ψ` cross-case.
422+
* `<ᵇ-+1` joint-bplus — `rank-pow (bplus z₁ z₂)` is not additive
423+
principal in general. Needs a coarser dominator function (e.g.,
424+
`leading-Ω-index : BT → OmegaIndex` returning the leftmost-deepest
425+
Ω-marker) or a richer rank shape.
426+
* `rank-pow-mono-<ᵇ⁻` (full umbrella over `_<ᵇ⁻_` — gated on the
427+
above two). The 10-of-13 `_<ᵇ⁰_` umbrella is the working closure;
428+
consumers needing the full `_<ᵇ⁻_` form bridge through the
429+
3-cases-open gap.
430+
431+
Build invariant held every slice: `All.agda` + `Smoke.agda` exit 0
432+
under `--safe --without-K`, zero postulates, zero escape pragmas, no
433+
funext. All headlines pinned in `Smoke.agda` (or
434+
`Ordinal/Buchholz/Smoke.agda` for the Buchholz-layer modules).
435+
436+
**Reusable design constraint**: Per a parallel-session note on
437+
`_<ᵇʳᶠ_`, the rank-mono primitives are stated *relation-agnostically*
438+
(rank-input, rank-output, no `<ᵇ` constructor patterns). Both the
439+
`_<ᵇ⁻_` consumer (this track) and the `_<ᵇʳᶠ_` consumer (parallel
440+
session's wf-`<ᵇʳᶠ` milestone) can pattern-match on their own
441+
relation's constructor and apply the matching primitive.
442+
443+
*Plan for the next Claude:* PR #87 is the deliverable. Closure
444+
work continues in three follow-ons, prioritised:
445+
446+
1. **ψ-admissibility rank refinement** (closes `<ᵇ-ψα`, `<ᵇ-ψΩ≤`,
447+
2 of 3 open cases). Define `rank-adm : BT → Ord` using
448+
`ω-rank-pow ν ⊕ rank-pow α` for ψ under WfAdm. Cross-case fix
449+
for `<ᵇ-+ψ`: under admissibility, source-rank is bounded by
450+
`ω-rank-pow ν` (the structural admissibility-source-bound lemma).
451+
2. **Leading-Ω-index domination** (closes `<ᵇ-+1` general). Define
452+
`head-Ω : BT → OmegaIndex` returning the leftmost-deepest Ω
453+
marker. Prove `rank-pow t <′ ω-rank-pow-succ (head-Ω t)` for
454+
non-bzero WfCNF terms. Then `<ᵇ-+1` discharges via head-Ω
455+
inversion + additive-principal at the head-Ω's successor.
456+
3. **Full `rank-pow-mono-<ᵇ⁻` umbrella** — composition of 1+2
457+
with the existing 10-constructor `_<ᵇ⁰_` umbrella.
458+
459+
DO NOT reopen: the closed 10 constructors (their primitives are
460+
correct under WfCNF); the unbudgeted `_<ᵇʳᶠ_` rank route per
461+
`RankBrouwer.agda` preamble (genuinely impossible for unrestricted
462+
`_<ᵇ_`). The umbrella works on `_<ᵇ⁰_`, not on `_<ᵇ_` directly.
463+
464+
### Session arc 2026-05-17 (legacy — read second)
346465

347466
*Where we started today (commit `8a2b908`):* the establishment
348467
track was a plan plus scaffolds — Pillar A landed; Pillars B–D were

docs/adjacency/README.adoc

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,14 +180,126 @@ this directory is the intended structure.
180180
| File | Neighbour
181181

182182
| `quotients.adoc` | Quotient types / setoid quotients
183+
| `setoid-quotients.adoc` | Setoid quotients (extrinsic, named-relation variant)
183184
| `galois-connections.adoc` | Galois connections / abstract interpretation
184185
| `refinement-types.adoc` | Refinement types (Σ-relevant and propositional variants)
185186
| `information-flow.adoc` | Information-flow non-interference (Goguen-Meseguer lineage)
186187
| `provenance.adoc` | Provenance / data lineage
188+
| `provenance-semirings.adoc` | K-provenance (Green-Karvounarakis-Tannen semirings)
187189
| `modal-type-theories.adoc` | QTT, Reed-Pfenning modal calculi, adjoint modalities
188190
| `hott-fibers.adoc` | HoTT homotopy fibers (cubical and Book HoTT)
191+
| `cubical-systems.adoc` | Cubical Agda, RedPRL, redtt, cooltt
192+
| `lenses-and-optics.adoc` | Lenses, prisms, profunctor optics
193+
| `INSERTION_NOTE.adoc` | _Meta_: doc-surgery instructions for `gate-1-distinct-phenomenon.adoc`
194+
| `README.adoc` | _Meta_: this file (index + argument families + axis-coverage matrix)
189195
|===
190196

197+
== Axis coverage matrix (Gate 1 refresh 2026-05-20)
198+
199+
Cross-reference of each adjacency note against the 8 taxonomy axes
200+
defined in `docs/echo-types/taxonomy.md`. Refreshed 2026-05-20 — most
201+
notes predate axis 8 (added with the `EchoDecidable`/`EchoFiberCount`
202+
landings) and therefore do not currently engage it; the open ○
203+
markings below flag where axis-8 implications exist but are not
204+
formally argued.
205+
206+
Legend: ● primary axis (load-bearing in the note's distinctness
207+
claim); ○ axis-8 implication exists but is open / post-dates the
208+
note; — axis not engaged.
209+
210+
[cols="3,^1,^1,^1,^1,^1,^1,^1,^1", options="header"]
211+
|===
212+
| Note
213+
| 1 Ext/Int
214+
| 2 Exact/Approx
215+
| 3 Loc/Glob
216+
| 4 Canon/Pres
217+
| 5 Comp/Non
218+
| 6 Stat/Dyn
219+
| 7 PR/PI
220+
| 8 IT/Comp
221+
222+
| cubical-systems | ● | — | — | ● | — | — | ● | —
223+
| galois-connections | — | — | — | — | ● | — | ● | —
224+
| hott-fibers | ● | — | — | — | — | — | ● | —
225+
| information-flow | — | — | — | — | — | ● | ● | ○
226+
| lenses-and-optics | — | — | — | ● | ● | — | ● | —
227+
| modal-type-theories | — | — | — | — | ● | — | ● | ○
228+
| provenance | — | — | — | — | — | — | ● | —
229+
| provenance-semirings | — | — | — | — | ● | — | ● | ○
230+
| quotients | ● | — | — | — | ● | — | ● | —
231+
| refinement-types | — | — | — | — | — | — | ● | —
232+
| setoid-quotients | ● | — | — | ● | — | — | ● | —
233+
|===
234+
235+
=== Observations from the matrix
236+
237+
* *Axis 7 (proof-relevant vs proof-irrelevant) is universal.* Every
238+
one of the 11 substantive notes routes its distinctness through
239+
axis 7. This is the "truncation argument" family's load-bearing
240+
axis — the formal certificate is `echo-not-prop`.
241+
* *Axis 5 (compositional vs non-compositional) carries the 2-cell
242+
argument.* Galois, quotients, modal-type-theories, lenses-and-
243+
optics, provenance-semirings all engage axis 5 — these are the
244+
notes whose distinctness arguments route through composition
245+
structure (`EchoCategorical`, the per-decoration composition
246+
sweep, the `Echo-comp-iso` pentagon).
247+
* *Axis 1 (extensional vs intensional)* shows up in four notes —
248+
the ones contrasting echo's intensional-witness stance against
249+
a neighbour's extensional / propositional collapse (cubical,
250+
hott-fibers, quotients, setoid-quotients).
251+
* *Axis 4 (canonical vs presentation-dependent)* picks up three
252+
notes — cubical (equality choice), lenses-and-optics (get/put
253+
split), setoid-quotients (named equivalence vs implicit kernel).
254+
* *Axes with no neighbour coverage* — see §"Gaps" below.
255+
256+
=== Gaps
257+
258+
* *Axis 2 (exact vs approximate)* has *no* adjacency note. The
259+
axis-2 artifact is `EchoApprox.agda` (parametric pseudo-metric,
260+
three headline lemmas); its closest neighbour analogue — e.g.
261+
metric category theory, V-categories, weighted limits — is
262+
unwritten. Candidate future note: `metric-categories.adoc`.
263+
* *Axis 3 (local vs global)* has no adjacency note. The closest
264+
candidates are sheaf-theoretic / local-trivialisation framings;
265+
not yet written.
266+
* *Axis 6 (static vs dynamic)* has only one note (`information-
267+
flow`, via knowledge update). Other dynamic-typing or temporal
268+
neighbours (reactive / temporal logic / coalgebraic process
269+
theory) are unwritten.
270+
* *Axis 8 (information-theoretic vs computational access)* has
271+
*no* formal neighbour treatment. Three notes have open
272+
implications, flagged ○ above:
273+
** `information-flow.adoc` — cryptographic threat models route
274+
through axis 8 when low observers are computationally bounded.
275+
Not addressed in the current relational framing.
276+
** `modal-type-theories.adoc` — QTT-style quantitative
277+
annotations are proxies for resource control (taxonomy
278+
§"Axis 8" lines 236–238) but are not full
279+
computational-access tracking. The note treats QTT as a
280+
decoration neighbour (axis 5/7), not an axis-8 neighbour.
281+
** `provenance-semirings.adoc` — K-semirings with a cost-tracking
282+
interpretation (e.g. tropical `(min, +)`-semirings) would
283+
engage axis 8. The current note treats K-provenance as a
284+
decoration neighbour (axis 5/7).
285+
286+
Candidate future notes that *would* directly engage axis 8:
287+
`cryptographic-one-way-functions.adoc` (witness inhabitedness vs
288+
poly-time witness extraction); `cost-monads.adoc` (resource
289+
monads à la Hindley-Milner with cost effects); `complexity-classes
290+
-as-modalities.adoc` (P/NP/PSPACE as access modalities).
291+
292+
=== Stale claims flagged for re-evaluation
293+
294+
None of the 11 substantive notes' verdicts is *incorrect* against
295+
the current taxonomy. Three notes carry framings that would benefit
296+
from explicit axis-8 disclaimers (the three ○ rows). No note's
297+
distinctness claim is invalidated by the post-hoc addition of axis
298+
8; the omission is one of *coverage*, not *contradiction*.
299+
300+
The `INSERTION_NOTE.adoc` describes a doc-surgery operation. As a
301+
meta-note it has no axis engagement; retained for traceability.
302+
191303
== What's formalised, what's not
192304

193305
The truncation argument has formal exhibits for three of its

docs/adjacency/cubical-systems.adoc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
= Adjacency: Cubical Systems
22
:toc: macro
33

4+
_Axes engaged: 1 (Ext/Int), 4 (Canon/Pres), 7 (PR/PI). See `README.adoc` § "Axis coverage matrix"._
5+
46
toc::[]
57

68
== 1. Nearest existing construction

docs/adjacency/galois-connections.adoc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
= Adjacency: Galois connections / abstract interpretation
22
:toc: macro
33

4+
_Axes engaged: 5 (Comp), 7 (PR/PI). See `README.adoc` § "Axis coverage matrix"._
5+
46
[.lead]
57
*Verdict: distinct, by 2-cell argument.* The natural 2-cell in the
68
abstraction lattice is the meet, which is structurally

docs/adjacency/hott-fibers.adoc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
= Adjacency: HoTT homotopy fibers
22
:toc: macro
33

4+
_Axes engaged: 1 (Ext/Int), 7 (PR/PI). See `README.adoc` § "Axis coverage matrix"._
5+
46
[.lead]
57
*Verdict: not distinct from HoTT homotopy fibers — echo IS the
68
homotopy fiber.* The win is over the *propositional truncation

docs/adjacency/information-flow.adoc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
= Adjacency: information-flow non-interference
22
:toc: macro
33

4+
_Axes engaged: 6 (Stat/Dyn), 7 (PR/PI); axis 8 (IT/Comp) open — cryptographic threat models route through axis 8 when low observers are computationally bounded. See `README.adoc` § "Axis coverage matrix"._
5+
46
[.lead]
57
*Verdict: distinct against relational IFC (Goguen-Meseguer
68
lineage); open question against type-theoretic IFC.* The

docs/adjacency/lenses-and-optics.adoc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
= Adjacency: Lenses and Optics
22
:toc: macro
33

4+
_Axes engaged: 4 (Canon/Pres), 5 (Comp), 7 (PR/PI). See `README.adoc` § "Axis coverage matrix"._
5+
46
toc::[]
57

68
== 1. Nearest existing construction

docs/adjacency/modal-type-theories.adoc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
= Adjacency: modal type theories
22
:toc: macro
33

4+
_Axes engaged: 5 (Comp), 7 (PR/PI); axis 8 (IT/Comp) open — QTT-style quantitative annotations are proxies for resource control (taxonomy §8) but not full computational-access tracking. See `README.adoc` § "Axis coverage matrix"._
5+
46
[.lead]
57
*Verdict: co-extensive with QTT-class systems on bare echo.* Not
68
distinct from native modal type theories on the type level; the

docs/adjacency/provenance-semirings.adoc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
= Adjacency: Provenance Semirings
22
:toc: macro
33

4+
_Axes engaged: 5 (Comp), 7 (PR/PI); axis 8 (IT/Comp) open — K-semirings with a cost-tracking interpretation (e.g. tropical) would engage axis 8. See `README.adoc` § "Axis coverage matrix"._
5+
46
toc::[]
57

68
== 1. Nearest existing construction

docs/adjacency/provenance.adoc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
= Adjacency: provenance / data lineage
22
:toc: macro
33

4+
_Axes engaged: 7 (PR/PI). See `README.adoc` § "Axis coverage matrix"._
5+
46
[.lead]
57
*Verdict: distinct against single-witness provenance variants by
68
the multiplicity argument.* Transitive provenance under composition

0 commit comments

Comments
 (0)