Skip to content

Commit af554ec

Browse files
CHANGELOG: mark v0.4.0 released 2026-04-28
Two-tier architecture release: structured DLT cover (`DLTCover`, `exists_DLTCover`) under `CombArg.OneDim`, alternative cheap proof of the abstract scalar theorem (`exists_refinement_partition`) under a new `CombArg.Scalar` tier, `CombArg/Geometric/` placeholder for future modified-sweepout consumers. Five public theorems audited, all sorry-free, all depending only on `{propext, Classical.choice, Quot.sound}`. Existing public API (`exists_sup_reduction`, `exists_sup_reduction_of_cover`, `OneDim.exists_refinement`) unchanged in signature; downstream consumers continue to work without modification.
1 parent 12a2e0a commit af554ec

1 file changed

Lines changed: 85 additions & 0 deletions

File tree

CHANGELOG.md

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,91 @@
33
All notable changes to CombArg will be documented here.
44
Format based on [Keep a Changelog](https://keepachangelog.com/).
55

6+
## [0.4.0] — 2026-04-28
7+
8+
### Two-tier architecture: structured DLT cover + alternative scalar proof
9+
10+
A purely-additive architectural pass. The DLT-style construction is
11+
factored into a first-class structured output `OneDim.DLTCover` so
12+
that a future geometric consumer (DLT modified-sweepout via positive-
13+
measure overlap blending) has a stable import target carrying the
14+
full Stage A + B intermediate state. In parallel, the abstract scalar
15+
theorem is given a second, strictly cheaper proof
16+
(`Scalar.exists_refinement_partition`) by partition-by-endpoints,
17+
making it machine-verifiable that the DLT machinery is *not*
18+
arithmetically required for the abstract `FiniteCoverWithWitnesses`
19+
output --- it is required for the geometric lift, which is where the
20+
construction's overlap structure actually load-bears.
21+
22+
Existing consumers (`exists_sup_reduction`,
23+
`exists_sup_reduction_of_cover`, `OneDim.exists_refinement`) are
24+
**unchanged in signature** and continue to work without modification.
25+
26+
#### Added (Lean)
27+
28+
- **`CombArg/OneDim/DLTCover.lean`** — new structured output type
29+
`DLTCover f m₀ N` packaging the Stage A initial cover (with skip-2
30+
spacing condition (a)), the Stage B partial refinement, the
31+
termination invariant `∀ i, ic.I i ⊆ ⋃ k, pr.J k`, and
32+
σ-injectivity. Convenience projections `J k`, `σ k`, `wit k`;
33+
derived lemmas `saving_on_J`, `saving_bound_closure`,
34+
`twoFold_closure`, `covers_nearCritical`; downgrade
35+
`toFinite : DLTCover → FiniteCoverWithWitnesses`.
36+
- **`CombArg.OneDim.exists_DLTCover`** — the structured version of
37+
the combinatorial main theorem. Chains
38+
`exists_initialCover` and `exists_terminal_refinement` and
39+
packages their output into `DLTCover`. Public API.
40+
- **`CombArg/Scalar/Partition.lean`** + **`CombArg.Scalar`** facade
41+
— alternative cheap proof of the abstract scalar theorem via
42+
partition-by-endpoints. Compactness of the near-critical set
43+
yields a finite open subcover, sorting interval endpoints
44+
partitions `unitInterval` into closed pieces of multiplicity ≤ 2,
45+
and continuity extends per-piece saving from the open `Ioo`
46+
interior to the closed piece. The proof imports neither
47+
`OneDim/Induction` nor `OneDim/SpacedIntervals` --- the
48+
dependency graph confirms that the DLT spacing/parity machinery
49+
is *not* required for the abstract scalar conclusion.
50+
- **`CombArg/Geometric/`** — directory placeholder for future
51+
geometric consumers; a `README.md` notes that v0.4 ships only
52+
the architecture, with the actual modified-sweepout lift
53+
(`ModifiedSweepout.lean`) deferred.
54+
55+
#### Changed (Lean — internal refactor, public API unchanged)
56+
57+
- `OneDim/Assembly.lean` is now thin: `exists_DLTCover` (Stage A +
58+
Stage B → `DLTCover`) plus a re-defined `exists_refinement` as
59+
`(exists_DLTCover ...).toFinite`. The `terminal_twoFold` and
60+
`saving_bound_closure` lemmas previously inline in Assembly
61+
migrate into `DLTCover` as methods on the structured output.
62+
The output of `exists_refinement` is bit-identical to v0.3.
63+
64+
#### Added (audit + tests)
65+
66+
- **`Audit.lean`** now audits five public theorems
67+
(`exists_sup_reduction`, `exists_sup_reduction_of_cover`,
68+
`OneDim.exists_refinement`, `OneDim.exists_DLTCover`,
69+
`Scalar.exists_refinement_partition`); all five depend only on
70+
`propext`, `Classical.choice`, `Quot.sound`. The public-API
71+
listing grows from 4 to 8 declarations (adding `DLTCover`,
72+
`exists_DLTCover`, `exists_refinement_partition`).
73+
- **`test/Smoke.lean`** adds an end-to-end invocation of
74+
`Scalar.exists_refinement_partition` and `#print axioms`
75+
guards on `exists_DLTCover` and `exists_refinement_partition`.
76+
77+
#### Found (paper-level)
78+
79+
- **F5. The two-tier architecture is verified, not asserted.** Paper
80+
Remark 1.5 (`rem:why-construction`) claims that the abstract
81+
scalar Theorem 1.3 admits a strictly shorter proof and that the
82+
DLT machinery is over-engineered at the abstract level. v0.4
83+
upgrades this from prose claim to dependency-graph fact:
84+
`Scalar/Partition.lean` ships a complete, sorry-free, axiom-clean
85+
proof of the same conclusion that imports none of the DLT-side
86+
refinement machinery. The DLT path's value lies entirely in
87+
preserving structure (spacing, σ-injectivity, J_subset) for a
88+
geometric lift --- the new `DLTCover` output is the import target
89+
that future geometric consumers will use.
90+
691
## [0.3.0] — 2026-04-26
792

893
### Restructure for clarity + developer-tooling pass

0 commit comments

Comments
 (0)