Status: Phases 0 & 4 closed; Phases 2A & 2B partial; Workstream B1 COMPLETE ✅. Workstream B2.alg in progress — W0 + W1 + W2 + W4 + W5 + soft-W3 all SHIPPED ✅; W3 (full) + W3b queued with concrete prerequisite identified (Path B via CauSeq.Completion.Cauchy intermediate). Dossier Part 7.2 ACHIEVED for topology equality AND TauAlgComplex Version: v1.0 (2026-04-21); v2.0d status update (2026-05-04) — soft W3 + effective-reals research finding Authors: Thorsten Fuchs & Anna-Sophie Fuchs (via collaborative planning session)
2026-05-04 update v2.0d (B2.alg soft W3 landed + effective-reals research finding):
Soft W3 (TauLib PR #146 →
bf0ab10):TauAlgReal →ₐ[TauRatQ] AlgebraicClosure ℚ— partial canonical-anchoring verification handle for TauAlgReal via composition through TauAlgComplex (W4) + W5 bridge. τ-native real algebraic numbers now demonstrably embed into Mathlib's canonical algebraic closure of ℚ.Effective-reals research finding (atlas insights doc 2026-05-04): comprehensive Mathlib search confirmed that Mathlib has no
EffectiveReal/ComputableReal/ConstructiveRealtype, but does exposeCauSeq.Completion.Cauchy(the constructive carrier underlying ℝ). The classical/Markov boundary is at the layer above the carrier (LinearOrderedField, sSup), not the carrier itself.Strategic implication: the originally-planned W3 path (
TauRealQ →+* ℝdirectly) was suboptimal. Path B — bridging TauRealQ toCauSeq.Completion.Cauchy (abs : TauRat → TauRat)first, then derivingTauRealQ ≃+* ℝvia the structural wrapper — is cleaner and shorter (~80-150 LOC vs. ~100-300 LOC). Once Path B lands, W3 (full) and W3b (LinearOrderedField TauAlgReal via transport) unblock naturally.
Wave Status Content W0 ✅ SHIPPED Namespace rename (PR #141) W1 ✅ SHIPPED Algebra TauRatQ TauRealQ(PR #142)W2 ✅ SHIPPED TauAlgRealIntermediateField (PR #142)W3 (soft) ✅ SHIPPED TauAlgReal →ₐ[TauRatQ] AlgebraicClosure ℚ(PR #146)W3 (full) QUEUED — Path B identified TauAlgReal ≃ₐ[TauRatQ] algebraicClosure ℚ ℝviaCauSeq.Completion.Cauchyintermediate (~80-150 LOC)W3b QUEUED — derivable post-Path-B LinearOrderedField TauAlgReal(transport)W4 ✅ SHIPPED TauAlgComplex= τ-native ℚ̄ (PR #139)W5 ✅ SHIPPED TauAlgComplex ≃ₐ[TauRatQ] AlgebraicClosure ℚbridge (PR #144)Path C QUEUED — strategic future Define EffectiveRealin TauLib, contribute to MathlibSee
atlas/insights/2026-05-04-mathlib-has-no-effective-reals.md(atlas PR #22) for the full research finding and four durable learnings about classical/constructive layering in Mathlib.
2026-05-04 update v2.0c (B2.alg W5 — canonical bridge for TauAlgComplex landed):
W5 (TauLib PR #144 → admin-merge pending) ships the canonical-anchoring verification handle for
TauAlgComplex:noncomputable def tauAlgComplexEquivAlgClosureQ : TauAlgComplex ≃ₐ[TauRatQ] AlgebraicClosure ℚ := IsAlgClosure.equiv TauRatQ TauAlgComplex (AlgebraicClosure ℚ)The τ-native ℚ̄ is provably AlgEquiv to Mathlib's canonical AlgebraicClosure ℚ. Dossier Part 7.2 verification handle ACHIEVED for TauAlgComplex (analogous to B1.4c.5b's II.T10 cross-check for the topology equality).
Initially planned manual construction of
Algebra TauRatQ (AlgebraicClosure ℚ)+ manualIsScalarTower TauRatQ ℚ (AlgebraicClosure ℚ). Discovered Mathlib'sAlgebraicClosure.lean(lines 138 + 141) already auto-derives BOTH from any baseAlgebra R k. So we only defineAlgebra TauRatQ ℚ(manual viaRingHom.toAlgebra ringEquivRat.toRingHom); Mathlib provides everything else automatically. Manual construction would have created instance diamonds.Via
Algebra.IsAlgebraic.trans(transitivity fromMathlib/RingTheory/Algebraic/Integral.lean:323):
Algebra.IsAlgebraic TauRatQ ℚ— every q : ℚ algebraic viaisAlgebraic_algebraMapAlgebra.IsAlgebraic ℚ (AlgebraicClosure ℚ)— Mathlib auto- ⟹
Algebra.IsAlgebraic TauRatQ (AlgebraicClosure ℚ)Then
IsAlgClosure TauRatQ (AlgebraicClosure ℚ)synthesizes, andIsAlgClosure.equivships the canonical AlgEquiv.
Wave Status Content W0 ✅ SHIPPED Namespace rename (PR #141) W1 ✅ SHIPPED Algebra TauRatQ TauRealQ(PR #142)W2 ✅ SHIPPED TauAlgRealIntermediateField (PR #142)W3 QUEUED Bridge TauAlgReal ≃ algebraicClosure ℚ ℝ(needs TauRealQ →+* ℝ Cauchy bridge first)W3b QUEUED LinearOrderedField TauAlgReal(real-closed transport)W4 ✅ SHIPPED TauAlgComplex= τ-native ℚ̄ (PR #139)W5 ✅ SHIPPED TauAlgComplex ≃ₐ[TauRatQ] AlgebraicClosure ℚbridge (PR #144)Both major canonical-anchoring decisions are now verified via dual-path proofs:
- Topology equality (B1.4c): bidirectional inclusion (B1.4c.3) + II.T10 uniqueness via Continuous.homeoOfEquivCompactToT2 (B1.4c.5b)
- TauAlgComplex = ℚ̄ (B2.alg.W4 + W5): τ-native AlgebraicClosure TauRatQ + canonical bridge to Mathlib's AlgebraicClosure ℚ via IsAlgClosure.equiv
2026-05-04 update v2.0b (B2.alg W0 + W1 + W2 landed — τ-native real algebraic numbers):
Three more sub-PRs landed today (after the W4 TauAlgComplex opener), substantially extending the algebraic-completion bridge:
W0 (TauLib PR #141 →
38ad2d9): namespace rename resolving the pre-existingTau.Boundary.toRat_inv/Tau.Boundary.TauRat.invcollision betweenTauRatQuotient.leanandTauRatInv.lean. Renamed the (newer) unconditional Quotient versions to_totalsuffix, preserving the manuscript-aligned conditional originals. Single-file rename with internal-reference updates; no external TauLib breakage. User-authorized refactor.W1 + W2 (TauLib PR #142 → admin-merge pending): bundled two-wave shipping the τ-native real algebraic numbers:
- W1 (
TauRatRealAlgebraTower.lean):Algebra TauRatQ TauRealQinstance via Mathlib's canonicalalgebraMap ℚ TauRealQ(auto-derived from Field + IsStrictOrderedRing → CharZero viaIsStrictOrderedRing.toCharZero)- W2 (
TauAlgReal.lean):TauAlgReal := algebraicClosure TauRatQ TauRealQasIntermediateField. Inherits Field
- Algebra + IsAlgebraic from Mathlib's canonical
algebraicClosure F Econstruction.
Wave Status Content W0 ✅ SHIPPED Namespace rename (PR #141) W1 ✅ SHIPPED Algebra TauRatQ TauRealQ(PR #142)W2 ✅ SHIPPED TauAlgRealIntermediateField (PR #142)W3 QUEUED Bridge TauAlgReal ≃ algebraicClosure ℚ ℝ(needs TauRealQ →+* ℝ Cauchy bridge first)W3b QUEUED LinearOrderedField TauAlgReal(real-closed transport)W4 ✅ SHIPPED TauAlgComplex= τ-native ℚ̄ (PR #139)W5 QUEUED Bridge TauAlgComplex ≃ₐ[TauRatQ] AlgebraicClosure ℚ(needs IsScalarTower setup)The τ-framework now reaches two algebraic-completion targets:
TauAlgComplex(W4): the τ-native algebraic complex numbers (ℚ̄), withField+IsAlgClosedTauAlgReal(W2): the τ-native real algebraic numbers, withField(sitting strictly between TauRatQ and TauRealQ)Both are constructively clean (countable extensions of ℚ), sidestepping the Markov-principle wall that blocks full Cauchy completion to ℝ.
- W3 + W5 (canonical-anchoring verification handles to Mathlib's
algebraicClosure ℚ ℝandAlgebraicClosure ℚ): require additional substrate (TauRealQ →+* ℝ Cauchy bridge for W3; IsScalarTower setup for W5). Multi-iteration follow-up work; queued.- B2.alg.5 (LinearOrderedField TauAlgReal via Sturm sequences or transport): substantial; queued.
2026-05-04 update v2.0a (Workstream B2.alg OPENED — W4 TauAlgComplex landed 🚀):
The "lap of honor" sprint after B1 completion: extend the τ-framework's bridge layer into the algebraic numbers.
Strategic motivation (per
atlas/insights/2026-04-29-constructive-real-cardinality-boundary.md): the Cauchy completion of ℚ blocks atLinearOrderedField(Markov-principle wall, Wave 41), but the algebraic completion is constructively tractable — algebraic numbers are countable (countable union of finite root sets per polynomial). The algebraic-completion tier sits strictly between ℚ and ℂ and is the largest constructively-clean scalar extension.
- W4 —
TauAlgComplex(TauLib PR #139 → admin-merge pending): the τ-native algebraic complex numbers (ℚ̄), defined asAlgebraicClosure TauRatQ. InheritsField,Algebra TauRatQ,Algebra.IsAlgebraic, andIsAlgClosedfrom Mathlib's canonical construction. Fournoncomputable exampledeclarations serve as machine-checked verification handles. Build cost: 2553 jobs (+786 from FieldTheory.AlgebraicClosure imports), 0 errors, 0 sorry, axioms=3 unchanged.
Wave Status Content W1 BLOCKED Algebra TauRatQ TauRealQalgebra towerW2 BLOCKED TauAlgReal(algebraic reals as IntermediateField in TauRealQ)W3 BLOCKED Bridge TauAlgReal ≃ algebraicClosure ℚ ℝW4 ✅ SHIPPED TauAlgComplex= τ-native ℚ̄W5 QUEUED Bridge TauAlgComplex ≃ₐ[TauRatQ] AlgebraicClosure ℚviaIsAlgClosure.equivWhile attempting W1 (the
Algebra TauRatQ TauRealQalgebra tower), discovered a pre-existing namespace collision: bothTauLib/BookI/Boundary/Bridge/TauRatQuotient.lean(line 186) andTauLib/BookI/Boundary/TauRatInv.lean(line 93) defineTau.Boundary.toRat_invin the same namespace:
TauRatInv.toRat_inv (q : TauRat) (h : q.is_nonzero) : ...(conditional form, original)TauRatQuotient.toRat_inv (q : TauRat) : ...(unconditional form, total — handles 0 → 0 case)No existing TauLib module imports BOTH (verified via grep). W1 is the first module to need the combination (TauRatQuotient for
ringEquivRat, TauRealQuotientField forField TauRealQwhich transitively pulls TauRatInv via TauRealInv). Hence the conflict surfaced for the first time today.Resolution path (queued as a focused tech-debt PR, B2.alg.W0): rename
TauRatQuotient.toRat_invtotoRat_inv_total(or similar) to disambiguate. Single-file rename + one internal reference update at line 254. Once landed, W1 → W2 → W3 unblock sequentially.Strict-discipline note: per the discipline of "respect pre-existing structures", the rename was NOT applied as part of W1 itself; flagged here as a separate sub-PR (B2.alg.W0) for user authorization before touching foundational Wave 40 code.
TauAlgComplexis fully usable as the τ-native algebraic closure of ℚ — aField+IsAlgClosedcarrier- Polynomial roots, splitting fields, number-theoretic constructions over
TauRatQcan immediately useTauAlgComplexas their target- The pattern for future algebraic-extension waves (number fields, cyclotomic extensions, Galois groups) is established
The canonical-anchoring verification handle:
TauAlgComplex ≃ₐ[TauRatQ] AlgebraicClosure ℚ. Constructed viaIsAlgClosure.equivonce we set upAlgebra TauRatQ (AlgebraicClosure ℚ)via the existingTauRatQ ≃+* ℚbridge.
- B2.alg.5 (real algebraics via algebraicClosure ℚ ℝ): ship
TauAlgRealdirectly via Mathlib'salgebraicClosure ℚ ℝ(sidestepping the W1 algebra-tower block), with the bridgeTauAlgReal ≃ₐ[TauRatQ] algebraicClosure ℚ ℝderived from theTauRatQ ≃+* ℚWave 40 bridge alone- Number-theoretic extensions, Galois groups, cyclotomic constructions — all now have
TauAlgComplexas the natural ambient algebraic-closure target
2026-05-04 update v1.0n (Workstream B1 COMPLETE 🎉):
2026-05-04 update v1.0n (Workstream B1 COMPLETE 🎉):
The entire B1.4c + B1.5c workstream is now landed on origin/main. τ³ is formally compact + canonically anchored with dual-path topology equality verification in Lean 4.
Final session deliverables:
PR #133 (
fa4f0b0): structural fixcoeff_zerosentinel onOmegaInverseLimit(root-cause depth-0 fix). Unblocks the compactness workstream.B1.5c.4 (PR #134 →
9bf5861): König chain construction substrate —chain : (k : ℕ) → ChainElement U kviachainBase+chainStepZero+chainStepSucc. Plusuniv_eq_cylinder_one_union,pigeonhole_step_zero,chain_compat_succ. ~227 LOC.B1.5c.5 + B1.5c.6 (PR #135 →
f1e27ac):
chain_compat_general: full coherence for1 ≤ k ≤ lviaNat.le_induction+Nat.mod_mod_of_dvd+primorial_dvdchainLimit,chainLimitTauProfinite: assemble chain into TauProfinite element viaOmegaInverseLimitchainLimit_projverification handleinstance : CompactSpace TauProfinitevia Mathlib'scompactSpace_generateFrom(Alexander's subbasis theorem) applied tocylinderBasis- = manuscript Theorem II.T07 (τ³ is compact) ✅ ~168 LOC.
B1.4c.5b (PR #136 →
25854f7): II.T10 Topology Uniqueness cross-check — new moduleTauProfiniteTopologyUniqueness.lean:
id_continuous_cylinder_to_metricidHomeoCylinderToMetric : Homeomorph (X, T_cyl) (X, T_met)via Mathlib'sContinuous.homeoOfEquivCompactToT2cylinder_topology_eq_metric_topology_via_uniqueness: second proof of topology equality via the manuscript's II.T10 uniqueness path (compact-Hausdorff bijection is a homeomorphism)- = manuscript Theorem II.T10 (Topology Uniqueness) ✅ ~159 LOC.
Dossier Part 7.2 verification handle ACHIEVED: the canonical anchoring is provably equivalent across two distinct proof paths (bidirectional inclusion B1.4c.3 + uniqueness B1.4c.5b), cross-validating the formalization's correctness.
Wave Content PR B1.4 MetricSpace TauProfinite (canonical-anchored) (prior) B1.4b metric_ball ⊆ cylinder forward #119 B1.4c.1+2 depth-0 + reverse direction (cyl ∩ cyl ⊆ ball) #121 B1.4c.3a every cylinder is metric-open #125 B1.4c.3b+3+4 reverse + full equality + canonical instance (def) #126 B1.4c.5 instance migration (eliminate diamond) #128 Structural coeff_zero sentinel (depth-0 fix) #133 B1.5b PART 3 proj_mod_primorial substrate (prior) B1.5c.1 validSubcylinderCenters Finset #123 B1.5c.1b+2 upper bound + Finset partition equality #130 B1.5c.3 n-ary pigeonhole step #131 B1.5c.4 König chain construction #134 B1.5c.5+6 limit + CompactSpace TauProfinite #135 B1.4c.5b II.T10 uniqueness cross-check #136 Full library: 1767 jobs, 0 errors, 0 sorry, axioms=3 (unchanged throughout). Strict-discipline 0-sorry policy upheld across the entire workstream.
- II.T07 (τ³ is compact) — via König chain + Alexander
- II.T10 (Topology Uniqueness) — via compact-Hausdorff homeomorphism
- II.D13 (canonical ultrametric distance) — anchored in B1.4
- II.T05 (ultrametric inequality) — B1.4
- II.D12 (first disagreement depth) — B1.3.5
- II.D11 (cylinder clopen basis) — Wave 51
- II.D10 (stage-k cylinder) — Wave 50
- II.P03 (cylinder complement is finite union) — Wave 51
- II.P04 (cylinders ARE balls) — formalized via topology equality at three levels: basic-set, full-topology, canonical instance, dual-proof-path
2026-05-05 update v1.0m (B1.5c.1b+2+3 landed; depth-0 structural issue surfaced): Three more sub-PRs landed on origin/main today, advancing the compactness substrate substantially:
B1.5c.1b + B1.5c.2 (TauLib PR #130 →
b544e67):
validSubcylinderCenters_lt: the queued upper-bound lemma (workingcalc-chain proof avoiding the prior tactic unification issues)cylinder_eq_finset_iUnion_subcylinders: the finite, Finset-indexed partition equality (refactor of B1.5b's subtype-indexed version)- Helper
proj_lt_primorial(every projection bounded by its stage's primorial, for k ≥ 1)B1.5c.3 (TauLib PR #131 →
d682ce0):
pigeonhole_step: the inductive step — ifcylinder k chas no finite subcover, then SOME refiningcylinder (k+1) c'(withc' ∈ validSubcylinderCenters k c) also has no finite subcover. Proof viaClassical.choose+Finset.biUnionwitness-Finset assembly.Three substantive sub-PRs landed in this session, in addition to B1.4c.5 + ROADMAP v1.0l (PRs #128, #129) earlier.
While drafting B1.5c.4 (the recursive
Classical.choosechain), I discovered a structural issue that blocks B1.5c.4-6 + B1.4c.5b from proceeding without a resolution:Problem:
OmegaInverseLimit.compatrequires1 ≤ k ≤ l, leavingcoeff 0UNCONSTRAINED. SoTauProfinite-as-defined contains elements{x_n | n ∈ ℕ}where eachx_n.coeff 0 = nandx_n.coeff k = 0fork ≥ 1. These are pairwise distinct, live in differentcylinder 0 n, and the cover{cylinder 0 n | n ∈ ℕ}coversTauProfinitewith NO finite subcover.Therefore
TauProfinite(as currently defined) is NOT compact in the cylinder topology. The proposedCompactSpace TauProfiniteinstance (B1.5c.6) cannot be proven against the current definition.Manuscript context: per
book-02/part01/ch06-tau3-fibration.texDef II.D07, τ³ is the fibered product τ¹ ×_f T². Theorem II.T07 asserts τ³ is compact. The Lean encoding viaOmegaInverseLimitis intended to model this, but the unconstrainedcoeff 0introduces "spurious" non-canonical elements that break compactness. Per the canonical embeddingnat_to_inverse_limit, the IMAGE hascoeff 0 = 0always (sincen % primorial 0 = n % 1 = 0).Resolution paths (require user decision):
Constrain
coeff 0in theOmegaInverseLimitstructure (addcoeff_zero : coeff 0 = 0field). Cleanest mathematically but a breaking change requiring downstream consumer audit.Define a sub-structure
TauProfinite₀ := {x : TauProfinite | x.proj 0 = 0}and proveCompactSpace TauProfinite₀. Then the II.T10 cross-check applies to this canonical subspace.Coarsen the cylinder topology to omit depth-0 cylinders from the basis (use only
{cylinder k c | k ≥ 1}). Changes the topology — would need to revisit Wave 50/51 + B1.4c proofs.Quotient
TauProfiniteby "differs only incoeff 0", making the canonical class the carrier of compactness.
- B1.4c.5b: BLOCKED on B1.5c.6 (CompactSpace), itself blocked on the structural decision above.
- B1.5c.4 + B1.5c.5 + B1.5c.6: BLOCKED on the structural decision. The pigeonhole inductive step (B1.5c.3) is shipped, but the chain construction can't conclude in compactness without resolving the depth-0 issue.
All other prior queued items (B1.4c.5b, etc.) remain queued.
2026-05-05 update v1.0l (B1.4c.5 — instance migration landed): One more sub-PR landed on origin/main today, completing the MetricSpace instance unification:
B1.4c.5 (TauLib PR #128 →
e6782d2): instance migration eliminating the MetricSpace diamond. ModifiesTauProfiniteMetricSpaceCanonical.lean(~10-line change):attribute [-instance] TauProfinite.instMetricSpace noncomputable instance instMetricSpaceCanonical : MetricSpace TauProfinite := TauProfinite.instMetricSpace.replaceTopology cylinder_topology_eq_metric_topologyB1.4's
instMetricSpace(with auto-derived TopologicalSpace) is removed from the global instance pool but remains a callable nameddef. The canonical version (with topology component definitionally equal to Wave 50's cylinder topology viareplaceTopology) is now the officialMetricSpace TauProfiniteinstance. Result: a single, unambiguous instance with NO diamond.Backward compatibility preserved: code that explicitly references
TauProfinite.instMetricSpace(e.g., thecylinder_topology_eq_metric_topologytheorem statement, the canonical instance'sreplaceTopologycall itself) continues to work. Only typeclass resolution is redirected.Verification handle 7.1 preserved:
dist x y = ultrametricDistanceReal x ystill holds byrfl(theinstMetricSpaceCanonical_disttheorem confirms — unchanged).Audit findings (Phase 1 exploration before migration):
- Zero direct references to
TauProfinite.instMetricSpaceby name across TauLib code → migration risk LOW.- Implicit consumers via
[MetricSpace TauProfinite]typeclass resolution (Separation, Compactness, etc.) now see the canonical instance — full library builds cleanly (1765 jobs, 0 errors).B1.4c.5b status: explicitly QUEUED (per user decision in session). The cross-check proof of
cylinder_topology_eq_metric_topologyvia Theorem II.T10 uniqueness ("compact-Hausdorff bijection is a homeomorphism") remains BLOCKED onCompactSpace TauProfinite(queued as B1.5b/c, ~300-500 LOC of multi-iteration substrate work). T2Space + TotallyDisconnectedSpace already shipped (Wave 51); Mathlib homeomorphism lemmaisHomeomorph_iff_continuous_bijectiveavailable; onlyCompactSpaceis missing. When unblocked, B1.4c.5b is ~30 LOC of assembly.
2026-05-05 update v1.0k (B1.4c.3a+3b+3+4 — full topology equality + canonical instance landed): Two more sub-PRs landed on origin/main today, completing the entire B1.4c topology agreement workstream:
B1.4c.3a (TauLib PR #125 →
a494ab9): forward direction —cylinder_isOpen_in_metric_topology(every cylinder is metric-open). ~38 LOC, 1 named theorem. Case-splits onk = 0vsk ≥ 1and applies B1.4b/B1.4c.1's subset lemma to find a metric ball at each cylinder point.B1.4c.3b + B1.4c.3 + B1.4c.4 (TauLib PR #126 →
c3882cf): bundled three-wave completion of the topology agreement story:
B1.4c.3b: reverse direction —
metric_ball_isOpen_in_cylinder_topology(every metric ball is cylinder-open). Proof uses the Archimedean property (pow_unbounded_of_one_lt) to findk ≥ 1with1/2^k < ε - dist y x, then invokes B1.4c.2'scylinder_inter_subset_ballplus the triangle inequality. ~60 LOC.B1.4c.3: full topology equality —
cylinder_topology_eq_metric_topologyprovesTauProfinite.instTopologicalSpace = ...metric topology.le_antisymmproof using B1.4c.3a + B1.4c.3b directly:
cylinder ≤ metricviaMetric.isOpen_iff+ B1.4c.3bmetric ≤ cylinderviaTopologicalSpace.le_generateFrom_iff_subset_isOpen
- B1.4c.3a ~50 LOC.
B1.4c.4 (new module
TauProfiniteMetricSpaceCanonical.lean): canonical MetricSpace viaMetricSpace.replaceTopology—instMetricSpaceCanonicalwhose auto-generated topology component is definitionally equal to Wave 50's cylinder topology. Verification handle preserved:instMetricSpaceCanonical_dist : dist = ultrametricDistanceRealbyrfl. Shipped asnoncomputable def(notinstance) to avoid instance-resolution diamond with B1.4's existinginstMetricSpace. ~121 LOC.Manuscript context (Wave R7 research sprint): per
book-02/part02/ch10-ultrametric-depth.texProp II.P04 (ll. 302-321), cylinders ARE balls (C_k(x) = closed-ball(x, 2^(-k)) = open-ball(x, 2^(-(k-1)))). The manuscript treats cylinder + metric as ONE topology with two characterizations, NOT as two separate topologies proven equal. B1.4c.3 + B1.4c.4 together make this identification formal at both the topology level and the canonical-instance level.B1.4c.5 queued: the actual instance migration — replacing B1.4's
instancedeclaration with the canonical version. Requires an audit of downstreamMetricSpace TauProfiniteconsumers to avoid breakage. Not blocking; can land whenever downstream-audit work is convenient.B1.4c.5b queued (cross-check, post-B1.5c.6): when
CompactSpace TauProfinitelands, ship a SECOND proof of topology equality via Theorem II.T10 (Topology Uniqueness,book-02/part03/ch14-topology-invariant.texll. 135-197) — the slickcompact-Hausdorff bijection is homeomorphismargument. This would be a clean cross-check that the canonical anchoring is correct (per dossier Part 7 verification handle 7.2: provable equivalence).B1.5c.1b+ queued (still): upper-bound lemma + partition equality + n-ary pigeonhole + recursive Classical.choose chain
- limit extraction + Alexander subbasis assembly. All needed for the full
CompactSpace TauProfiniteinstance, which is needed to unlock Path B (II.T10 uniqueness) for the topology equality cross-check.
2026-05-05 update (B1.4c.1+2 + B1.5c.1 substrate landed): Two more sub-PRs landed on origin/main today, continuing the strict-discipline incremental progression:
B1.4c.1+2 (TauLib PR #121 →
eacf615): completes the bidirectional cylinder-ball correspondence viametric_ball_one_subset_cylinder_zero(depth-0 forward) +cylinder_inter_subset_ball(the reverse direction:cylinder 0 (x.proj 0) ∩ cylinder k (x.proj k) ⊆ Metric.ball x (1/2^k)). ~97 LOC, 2 named theorems.B1.5c.1 (TauLib PR #123 →
3a4c1da): named anchor for the Finset-indexed cylinder partition —validSubcylinderCenters k c : Finset TauIdxenumerates stage-(k+1) refining centers, plusvalidSubcylinderCenters_mod(coherence with parent:c' % primorial k = c). ~110 LOC, 1 def + 1 named theorem.Strict-discipline observations from this session:
- The CI
--expected-sorry 0correctly blocked an exploratory sorry write during B1.5c.1 setup.- The companion upper-bound lemma
validSubcylinderCenters_ltwas attempted but hit repeated tactic-elaboration issues (ringfailed onNat;linarith/trans_lecouldn't unify multiplication terms). Honestly queued as B1.5c.1b.- Same pattern: ship what builds 0-sorry; queue the rest.
B1.4c.3+ queued: the topology equality lemma (
cylinder_topology_eq_metric_topology) + theMetricSpace.replaceTopology-wrapped instance. The bidirectional correspondence (B1.4b + B1.4c.1+2) is the substrate; lifting to topology equality + applyingreplaceTopologyis the work.B1.5c.1b+ queued: upper-bound lemma + partition equality + n-ary pigeonhole + recursive Classical.choose chain + limit extraction + Alexander subbasis assembly. All needed for the full
CompactSpace TauProfiniteinstance. Substantial focused follow-up work, multi-iteration.
2026-05-05 update (B1.4b forward topology-agreement substrate landed): TauLib PR #119 (commit
55ef51f) ships the forward direction of the metric/cylinder topology agreement inBookI/Boundary/Bridge/TauProfiniteMetricSpaceTopologyAgreement.lean(~110 LOC, 1 named theorem):
metric_ball_subset_cylinder— fork ≥ 1and anyx,Metric.ball x (1/2^k) ⊆ cylinder k (x.proj k). Proof traces through B1.4'sdist_eq_ultrametricDistanceReal→ B1.3.5'sultrametricDistanceandfirstDisagreementDepth, honoring the canonical-anchoring discipline.B1.4c queued: the reverse direction (
cylinder ⊆ Metric.ballfor appropriate radius) and the fullMetricSpace.replaceTopology-wrapped instance. The reverse is more involved because depth 0 needs special handling:OmegaInverseLimit.compatonly constrains depths1 ≤ k ≤ l, socylinder k (x.proj k)fork ≥ 1doesn't force depth-0 agreement. The actual correspondence isMetric.ball x (1/2^k) = cylinder 0 (x.proj 0) ∩ cylinder k (x.proj k), not a direct cylinder equality. Documenting in the module docstring + queueing as a focused follow-up wave. Not blocking any consumer.B1.5c queued (still): the full
CompactSpace TauProfiniteinstance via the recursiveClassical.choosechain + Finset-indexed partition + limit-point extraction + Alexander subbasis assembly (Steps 3-6 of Remark[II.R01]). The Finset-indexed partition alone requires substantial number-theoretic substrate work (cylinder partition intonth_prime (k+1)subcylinders viaprimorial (k+1) / primorial k = nth_prime (k+1)), and the chain construction requires sigma-typedNat.rec+Classical.chooseorchestration. Estimated total ~300-500 LOC of careful Lean — better as a dedicated multi-iteration wave with no time pressure. The strict discipline (no temporary sorrys) means we ship what builds 0-sorry today and queue the rest honestly.
2026-05-05 update (B1.5b PART 3 substrate landed): TauLib module
BookI/Boundary/Bridge/TauProfiniteCompactness.leanships the PART 3 substrate for the τ-native pigeonhole proof:
proj_mod_primorial— projection compatibility lifted fromOmegaInverseLimit.compat, the foundation for cylinder nesting and chain coherence.cylinder_subset_of_proj_mod_eq— cylinder nesting (depth-(k+1) subcylinder ⊆ depth-k parent when centers are coherent).cylinder_eq_iUnion_subcylinders— the cylinder partition (every depth-k cylinder = union of depth-(k+1) subcylinders), currently parameterized by aTauProfinite-subtype indexing.B1.5c queued: the full
CompactSpace TauProfiniteinstance via the recursive chain construction + limit-point extraction + Alexander subbasis assembly (Steps 3-6 of Remark[II.R01]). Implementing this requires:
- Refactoring the partition lemma to a finite
Finset-indexed form (so n-ary pigeonhole has a concrete finite index set).- The recursive
Classical.choosechain construction (~100-200 LOC).- The limit-point extraction via
OmegaInverseLimit.mk.- The Alexander subbasis orchestration via
isCompact_generateFrom.Per the strict discipline, B1.5b ships only the parts that build 0-sorry today; the chain construction is a focused B1.5c follow-up.
2026-05-05 update (B1.5a substrate scaffolding landed): TauLib module
BookI/Boundary/Bridge/TauProfiniteCompactness.leanships the named substrate for the τ-native König-like pigeonhole proof ofCompactSpace TauProfinite:
FinitelyCoverablepredicate — the contradiction lever the pigeonhole proof propagates through the chain.not_finitelyCoverable_of_union— the binary pigeonhole helper (ifS ∪ Tnot finitely coverable, thenSorTis not).univ_subset_iUnion_cylinder— the depth-kcylinder cover ofSet.univthat the proof refines.- 4 supporting lemmas (
finitelyCoverable_empty,finitelyCoverable_of_subset, two_of_union_left/right).- All proofs land 0 sorry (the strict CI invariant correctly rejected an earlier scaffolding attempt that included a placeholder
sorry).B1.5b queued: the full
CompactSpace TauProfiniteinstance via the recursiveClassical.choosechain of non-coverable subcylinders + tower-coherence + limit-point extraction (Steps 3-6 of Remark[II.R01]). Estimated ~200-300 LOC of careful Lean — better as a focused dedicated wave than a rushed single-PR push. The B1.5a substrate provides all the named anchors B1.5b will compose.
2026-05-05 update (B1.4.5 canonical compactness spec landed): Atlas dossier
audits/taulib/2026-05-05-canonical-compactness-spec.md(commit92cb479) extracts the canonical compactness construction from Book II Part 03 ch13 ([II.T07]Compactness Theorem with both Tychonoff primary and τ-native pigeonhole proofs from Remark[II.R01]), Book II Part 09 ch52 ([II.T42]Categoricity step 3: "K2 forces compactness"), and Book I axiom K2 (ρ(ω) = ω, the architectural anchor for inherent compactness).
- B1.5 will follow Path B (τ-native König-like pigeonhole proof per Remark
[II.R01]) rather than classical Tychonoff via product embedding. Constructively cleaner (countable dependent choice only) and honors the canonical-anchoring discipline.- Headline finding: τ³'s global compactness is unusual — most ultrametric spaces (
ℚ_p,ℤ_p) are only locally compact. τ³ is globally compact because (a) the primorial tower (K1) gives finite-at-each-stage structure, and (b) ω (K2) is already in the domain — no external compactification needed. The manuscript calls this inherent compactness.- The dossier ships 5-clause anti-spec (no Tychonoff-via-product, no external compactification, no boundary readouts, no LocallyCompact fallback, no SequentialCompact shortcut) and 6-clause verification handles for the B1.5 PR.
2026-05-04 update (B1.4 canonical MetricSpace landed): TauLib PR #112 (commit
a1f0a0d) ships the canonicalMetricSpace TauProfiniteinstance inBookI/Boundary/Bridge/TauProfiniteMetricSpace.lean(~280 LOC, 4 parts), anchored toTauProfinite.ultrametricDistancefrom B1.3.5. Thedistfield is definitionally equal toultrametricDistanceReal(verifiable byrfl), satisfying the dossier Part 7.1 verification handle.
- PART 2 ships the first formal Lean proof of
[II.T05]— the ultrametric inequalityd(x, z) ≤ max(d(x, y), d(y, z))— the manuscript ch10 ll. 246-269 proof formalised viaNat.findreasoning on the disagreement set.- This is the strongest possible Mathlib metric bridge: the metric is forced by
[II.T10]Topology Uniqueness +[II.T42]Categoricity, not just "TauProfinite happens to be metrizable".- B1.4b queued: formal topology-agreement proof via
MetricSpace.replaceTopology— the metric topology and Wave 50's cylinder topology coincide as a mathematical fact, but Lean currently sees two independentTopologicalSpace TauProfiniteinstances. B1.4b would unify viareplaceTopology. Not blocking any consumer.- B1.5 deferred:
CompactSpace TauProfinitevia Tychonoff +Profinitecategorical wrap was originally planned to land in parallel with B1.4 but requires substantive work (~200-400 LOC for the closed embedding into(k : ℕ) → Fin (primorial k)). Better suited to a dedicated follow-up wave. Not blocking B1.4's MetricSpace consumer.
2026-05-04 update (B1.3.5 prep wave): Canonical topology + geometry anchoring spec landed for the upcoming B1.4 + B1.5 waves:
- New atlas dossier
audits/taulib/2026-05-04-canonical-topology-geometry-spec.mdextracts the canonical ultrametric topology (Book II Part 03 + Topology Uniqueness Theorem[II.T10]) and the canonical Tarski geometry (Book II Part 04 + Categoricity Theorem[II.T42]) from the monograph manuscript sources, and pins them as the binding anchoring spec for B1.4 / B1.5 / future Mathlib geometry bridges.- New TauLib module
BookI/Boundary/Bridge/TauProfiniteUltrametric.leanships the named anchor functions:firstDisagreementDepth(the canonical δ per[II.D12]) andultrametricDistance(= 2^(-δ) per[II.D13]). B1.4'sMetricSpace TauProfiniteinstance must wrap these.- Anti-spec (Part 6 of dossier): no boundary scalar readouts (
OrthodoxBridge), no defect-germ readouts (DefectInverseSystem), no Cauchy-completion approximation depths, no discrete metric, no boundary-conformal metrics.2026-05-03 update: Five Workstream B1 waves landed yesterday on origin/main:
- B1.0a + B1.0b (Phase 0): callsite audit + asymptotic Cauchy-stability bridge (
TauReal.iota_tau_isCauchy).- B1.1 (Phase 4): concrete-K numerical certificate at K=50, ε=1/1000 (
TauReal.iota_tau_numerical_certificate).- B1.2 (Phase 2A partial): hyperfactorization (B,C,D) ∃!-form conditional uniqueness (
hyperfactorization_uniqueness_BCD). A-uniqueness queued as B1.2c.- B1.3 (Phase 2B partial): prime polarity Prop-level dichotomy + Bool↔Prop bridges (6 theorems in new
LegendreClassifier.lean). Full Dirichlet density1/2queued as B1.3c (requires Mathlib analytic-NT bridge).See §4 status block + the B1 dossier
atlas/audits/taulib/2026-05-03-foundations-bridges-state-of-the-union.mdfor the current state and the proposed 9-wave continuation.
This document plans the porting of the three hinge theorems of the Panta Rhei τ-framework from their LaTeX proof form (three research papers, completed April 2026) into Lean 4 / TauLib formal proofs:
- Hyperfactorization (Book I Theorem I.T04) — unique tower-atom decomposition
-
Prime Polarity (Book I Theorem I.T05)
— B/C prime split and Dirichlet density
$R_B = 1/2$ -
Master Constant (Book I Chapter 41, corrected via ERRATUM-004)
— structural derivation of
$\iota_\tau = 2/(\pi + e)$
The overarching goal: replace fiat definitions with structural ones.
Most critically, Nat/Nat pair in BookI/Boundary/Iota.lean and instead be defined
as the scalar readout of the crossing-point defect
Estimated total effort: ~3000-4000 Lean lines, ~18 weeks elapsed (or 6-8 weeks with 3 engineers in parallel).
- 125,771 LOC, 450 modules, 4,332 theorems, 3,542 definitions
- Only 3
sorry— all in Book VII (methodological, not structural) - Books I–VI: zero
sorry - Build system: Lake; mathlib allowed for tactics only (no mathematical content)
autoImplicit = false— every variable explicit
All three exist as computable Boolean verifiers with narrative docstrings, but the Prop-level structural theorems the papers prove are not yet present.
| Theorem | Current state | Gap |
|---|---|---|
| ι_τ master constant | iota_tau_numer : Nat := 341304 (fiat, Iota.lean:41) |
No link to π, e; no formal theorem of the identity |
| Prime Polarity | partition_check : Bool (L220 Polarity.lean) |
No density theorem, no Legendre-symbol classifier |
| Hyperfactorization | hyperfact_check : Bool (L61 Hyperfact.lean) |
No Prop-level ∃! theorem |
The foundation is sufficient:
| Substrate | Module | Status |
|---|---|---|
SplitComplex (j² = +1) |
BookI/Polarity/BipolarAlgebra.lean + Boundary/SplitComplex.lean |
Complete — full ring axioms proved |
AlgebraicLemniscate |
BookI/Polarity/Lemniscate.lean |
Complete structurally — σ-involution, canonical construction |
| σ involution / polarity swap | BookI/Polarity/BipolarAlgebra.lean |
Proved |
OmegaTail (finite-depth ω-germs) |
BookI/Polarity/OmegaGerms.lean |
Present but computational — needs InverseLimit extension |
TauReal (Cauchy-style reals) |
BookI/Boundary/ConstructiveReals.lean |
Partial — see §2.4 below |
TauReal exists but is a simplified "sequence of TauRat
approximations" wrapper (structure with approx : Nat → TauRat),
not a true Cauchy-quotient completion.
Present:
TauReal.add, mul, sub, negate, fromTauRat, fromNat- Ring axioms (proved as
taureal_*theorems, bundled intaureal_ring_axioms) taureal_archimedean_embedding(injective embedding from ℕ)
Missing (critical for refactor):
TauReal.inv,TauReal.div— cannot form2/(π+e)todayTauReal.lt, le, abs(ordering, absolute value)TauReal.lim/Cauchy.toReal/ any limit-taking operationTauReal.pi— does not existTauReal.exp 1— does not exist- No mathlib bridge (by design — TauLib's policy is mathlib tactics only, not content)
| Phase | Scope | Lines | Weeks | Parallel? |
|---|---|---|---|---|
| Phase 0 | TauReal extensions + structural ι_τ refactor | ~200 | 2 | No (blocks all) |
| Phase 1 | Shared foundations (Lemniscate, ω-germs, Read, PolarityLattice, BipolarSwap) | 400-500 | 2 | No |
| Phase 2A | Hyperfactorization uniqueness | 500-700 | 3-4 | Yes |
| Phase 2B | Prime Polarity (Route B) | 500-600 | 3-4 | Yes |
| Phase 2C | iota-tau Steps 1-10 | ~1280 | 6-8 | Yes |
| Phase 3 | Integration + iota-tau Step 11 (split-complex lift) | 200-300 | 2 | No |
| Phase 3' | iota-tau Step 12 (Saturation, Enrich^4=Enrich^3) | 120-400 | 2-4 | Gated |
| Phase 4 | Numerical evaluation + #eval certificate |
50-100 | 0.5 | No |
iota-tau is the capstone paper (1280 core lines + extensions) but does NOT structurally depend on Hyperfactorization or Prime Polarity as completed theorems. Cross-paper references are thematic only. Consequence: Phases 2A, 2B, 2C can run in parallel after Phase 1 foundations.
Hyperfactorization is the lowest-risk starter — most pieces already
in BookI/Coordinates/*.lean (no_tie, Descent, ABCD); needs only
elevation from Boolean verifier to Prop-level uniqueness via strong
induction.
Prime Polarity Route B is explicitly independent of Hyperfactorization I.T04 (paper §1760, "Route B's entire pipeline lives at the CRT-idempotent level without invoking hyperfactorization"). This breaks a potential circular dependency.
Status update (2026-05-03, Workstream B1): Phase 0 is closed in two halves — see
atlas/audits/taulib/2026-05-03-foundations-bridges-state-of-the-union.mdand the B1 atlas dossier.
- B1.0a ✓ — Callsite audit + dual-representation pattern documented. Atlas:
audits/taulib/2026-05-03-iota-tau-callsite-audit.md. TauLib PR #103 (commit8bd68ce) — docstring enrichment onIota.lean↔TauRealIotaTau.leandocumenting that the fiat form (iota_tau_numer/iota_tau_denom, 162 callsites) and the structural form (TauReal.iota_tau := 2/(π+e)) coexist by design — not a fiat-to-replace migration.- B1.0b ✓ — Asymptotic bridge theorem
TauReal.iota_tau_isCauchy(TauLib PR #104) certifying that the structural form is a well-defined element of the TauReal Cauchy completion. Pure composition of existing IsCauchy infrastructure (IsCauchy_mul,IsCauchy_inv,IsCauchy_add,pi_isCauchy,e_isCauchy,pi_plus_e_boundedAwayFromZero). No partial-sum evaluation; no new sorry / axioms.- B1.1 ✓ — Concrete-K numerical certificate
TauReal.iota_tau_numerical_certificate(TauLib PR following B1.0b). At witness depthK = 50, the structural form is within1/1000of the fiat decimal — discharged via a singlenative_decidecall on the unfoldedTauRat.ltinequality (50 Leibniz-pair partial-sum terms inpi_partial 50+ 50 factorial terms ine_partial 50, composed throughmul/inv/addand reduced at the C-compiled byte-code level).- B1.1c queued (opt-in) — Tighten the certificate to either
|iota_tau.approx K − 341304/1000000| < 1/10⁶(would needK ≥ 30 000for Leibniz pairs, stressingnative_decide's reduction budget) or to the dossier's original1/10¹²target (unreachable with Leibniz pairs; needs Machin / Wallis / Chudnovsky π series acceleration, ~200–500 LOC of new infrastructure). Not currently blocking any downstream consumer — per the B1.0a audit, all 162decide/native_decidecallsites use the fiatNat/Natdirectly. Pick up only when a downstream theorem actually needs the tighter formal bound.The structural
TauReal.pi,TauReal.e,TauReal.iota_taudefinitions and the defining identityiota_tau · (π+e) ≡ 2(TauReal.iota_tau_mul_pi_plus_e_eq_two) were all delivered in Waves 3b/3c/3d/4 of the TauReal infrastructure refactor (origin/main, pre-B1.0). The detailed P0.1–P0.4 sub-task structure below was the v1.0 strategic plan; the actual landings took a slightly different shape (Cauchy machinery instead of direct-sequence avoidance), but achieve the same end state.
Replace iota_tau : Nat/Nat fiat definition with a structural
iota_tau : TauReal derived from the defect-germ scalar readout, and
prove iota_tau = 2/(π + e) as a theorem in TauReal.
P0.1 — Extend ConstructiveReals.lean with pi, e constants (~45 lines)
Add two standalone definitions of TauReal constants using the direct-sequence idiom (no quotient, no Cauchy machinery):
-- In BookII/Transcendentals/PiEarned.lean (extend)
-- Leibniz / Archimedes-polygon series (already scaled integer in pi_scaled)
noncomputable def TauReal.pi : TauReal where
approx n := ⟨⟨pi_scaled n, 0⟩, 10^n, pow_pos_of_two ..⟩
-- In BookII/Transcendentals/EEarned.lean (extend)
noncomputable def TauReal.e : TauReal where
approx n := ⟨⟨e_factorial_scaled n, 0⟩, fact_denom n, fact_denom_pos ..⟩Estimated: ~20 lines per constant + 5 lines for the denominator positivity lemmas = ~45 lines total.
P0.2 — Add TauReal.two (~1 line)
noncomputable def TauReal.two : TauReal := TauReal.fromNat 2P0.3 — Direct-sequence definition of ι_τ avoiding division (~10 lines)
Since TauReal.inv / TauReal.div don't exist yet, define ι_τ as a
direct sequence matching 2 * 10^n / (pi_scaled n + e_scaled n):
-- In BookI/Boundary/Iota.lean (rewrite)
noncomputable def iota_tau : TauReal where
approx n := ⟨⟨2 * 10^n, 0⟩, pi_scaled n + e_scaled n, pi_plus_e_pos ..⟩This is the structural definition: a canonical sequence earned from the paper's construction. The Nat/Nat fiat becomes a derived bound:
-- Preserved for backward compatibility (~50 downstream callsites)
def iota_tau_numer : Nat := 341304 -- now: derived bound
def iota_tau_denom : Nat := 1000000
lemma iota_tau_bound :
TauReal.approx iota_tau 7 = ⟨⟨iota_tau_numer * 10, 0⟩, iota_tau_denom * 10, _⟩ := by
native_decideP0.4 — The numerical identity theorem (~40 lines, the hard step)
Prove the pointwise-TauRat identity linking the ι_τ sequence to
the 2/(π+e) sequence. This requires adding TauRat.inv with a
nonzero hypothesis:
-- New in TauRat.lean (~30 lines)
noncomputable def TauRat.inv (q : TauRat) (h : q.num ≠ 0) : TauRat := ...
-- Prove basic properties: inv_mul_self, inv_nonzero, etc.
-- In Iota.lean
theorem iota_tau_eq_two_over_pi_plus_e_pointwise :
∀ n, TauRat.equiv
(iota_tau.approx n)
(TauRat.two.mul (TauRat.inv ((TauReal.pi.approx n).add (TauReal.e.approx n)) _)) := by
intro n
-- direct algebraic manipulation on TauRat
...From this pointwise identity, iota_tau = 2/(π_τ + e_τ) at the
TauReal-equiv level follows by TauReal.equiv unfolding.
P0.5 — Reconcile backward compatibility (~20 lines, audit-driven)
Audit the ~50 downstream callsites of iota_tau_numer /
iota_tau_denom (identified in BookIV/MassDerivation/BreathingModes.lean:92,
BookV/GravityField/NonlinearEinstein.lean:435, etc.). Ensure the
new structural definition preserves these as derived bounds so no
callsite proof breaks.
At the end of Phase 0:
TauReal.piandTauReal.eexist as canonical sequences (not via Cauchy quotient, but as direct sequence approximants — sufficient for current needs).TauReal.twois a named constant.TauRat.invwith nonzero hypothesis is implemented with basic properties.iota_tau : TauRealis the structural definition inIota.lean.iota_tau_eq_two_over_pi_plus_eis a proven theorem.iota_tau_numer/iota_tau_denomremain as derived bounds; downstream callsites continue to compile.BookI/Boundary/Iota.leandocstring updated: old: "iota_tau is NOT defined as a real number (deferred to Book II)" → new: "iota_tau is the canonical scalar readout of the crossing-point defect germ; the numerical identityiota_tau = 2/(π + e)is Theoremiota_tau_eq_two_over_pi_plus_e."
~200 Lean lines (45 + 1 + 10 + 40 + 30 + 20 + proofs), 2 weeks for one engineer. No mathlib bridge required. No full Cauchy-quotient TauReal rewrite required (that's a separate wave if desired).
R0.1 — TauRat.inv complexity. If TauRat lacks a num_ne_zero
witness field, adding inv may require restructuring TauRat itself.
Mitigation: spot-check TauRat.lean first (before starting P0.4) and
scope the inv extension.
R0.2 — pi_scaled / e_factorial_scaled numerical precision. The existing Leibniz / factorial series produce integer approximations — need to verify they converge accurately enough for the identity theorem's pointwise bound to hold. Mitigation: if precision is insufficient, add improved series (e.g., Machin-like π formula, faster-converging e series) — estimated +50 lines.
R0.3 — Downstream callsite breakage. ~50 files reference
iota_tau_numer / iota_tau_denom. Mitigation: preserve these as
derived bounds with same Nat values (Phase 0 maintains exact
numerical compatibility).
Build once, reuse three times:
-
BookI/Polarity/Lemniscate.leanextension — σ-involution on$\mathbb{L} = S^1 \vee S^1$ as wedge, crossing point$\omega_\times$ -
BookI/Polarity/OmegaGerms.lean— fullInverseLimittype (upgrade from finite-depth tuples) -
BookI/Boundary/Read.lean(new) —ReadF_n,ReadF = invLim,ReadOrthfunctor (using Phase 0's TauReal.pi, TauReal.e) -
BookI/Polarity/PolarityLattice.lean—$\Lambda[n]$ with labeled classes (B / C / ×) -
BookI/Polarity/BipolarSwap.lean— universal lobe-swap API
Each phase delivers the Prop-level theorems replacing the current Boolean verifiers.
Status update (2026-05-03, Workstream B1): Phase 2A and Phase 2B are partially closed via B1.2 + B1.3 respectively (see header status block + the B1 atlas dossier).
- B1.2 ✓ — TauLib PR #108 (commit
512bf66):hyperfactorization_uniqueness_BCD : ∃! bcd, IsHyperfactWitness x a bcd.1 bcd.2.1 bcd.2.2 vinBookI/Coordinates/HyperfactProp.lean. Closes the conditional uniqueness half of paper I.T04 — given(x, a, v)is fixed,(B, C, D)is uniquely determined.- B1.3 ✓ — TauLib PR #107 (commit
bbef12e): newBookI/Polarity/LegendreClassifier.leanwith 6 named theorems (Prop-level dichotomyprime_polarity_dichotomy+ Bool↔Prop bridgespartition_check_iff/b_class_witness_iff/c_class_witness_iff+ disjointness + exhaustiveness).- B1.2c queued — A-uniqueness (proving
A=largest_prime_divisor x) requires interaction withlargest_prime_divisor, ~150-300 LOC. Not currently blocking any consumer — Wave 6'sIsHyperfactWitnessalready pins (A, V) pre-condition for all uses.- B1.3c queued — full Dirichlet density
1/2theorem (b_density_one_half) requires Mathlib analytic-NT bridge; policy decision pending per dossier §4.5 + §B1.4.
Phase 2A — Hyperfactorization (~500-700 lines):
theorem hyperfactorization : ∀ x ≥ 2, ∃! abcd, ValidABCD x abcd- Uses existing
no_tie+Descent+ strong induction - Deliverable module:
BookI/Coordinates/Hyperfact.leanupgrade - 2026-05-03 status: B1.2 (above) closes the conditional-on-(A,V)
half; full unconditional
∃! abcdqueued as B1.2c.
Phase 2B — Prime Polarity Route B (~500-600 lines):
- New
BookI/Polarity/LegendreClassifier.lean(mod-8 classifier) - Dichotomy theorem (Prop-level, replacing
partition_checkBool) - Density theorem (partial — density = 1/2 via Dirichlet-in-AP from mathlib; density→ι_τ identification deferred to Phase 3)
- 2026-05-03 status: B1.3 (above) closes the dichotomy + Bool↔Prop bridge half; full Dirichlet density queued as B1.3c.
Phase 2C — iota-tau Steps 1-10 (~1280 lines):
- Crossing-point defect germ construction (Steps 4-5)
- Non-polarity + ω-approach halves (Steps 6a-6b)
- Intersection + universality (Steps 6c-7)
- Coupling identity (Step 9 — depends on Phase 0's TauReal.pi, e)
- Numerical readout (Step 10 — this promotes Phase 0's pointwise-TauRat identity to the full scalar-algebra theorem)
- Step 11: split-complex lift via Book II ch.47 idempotent
decomposition —
BookI/IotaTau/SplitComplex.leanor equivalent - Cross-paper consistency: Prime Polarity's χ character agrees with iota-tau's split-complex χ̃ lift
- Capstone theorem module
BookI/IotaTau/NumericalIdentity.lean: the finaliota_tau_eq_two_over_pi_plus_ewith full chain
- iota-tau Step 12:
Enrich^4(τ) = Enrich^3(τ)saturation theorem - Blocked until Book VII chapter 48 (self-enrichment tower) is formalised
- Recommendation: ship 3-hinge refactor WITHOUT Phase 3', add later when Book VII matures
- Interval-arithmetic proof:
|ReadOrth iota_tau - 0.341304238875| < 10^{-12} - Optional
#evalcertificate vianative_decideon bounded rational approximation - Verification against the 2nd-Ed locked constant (CLAUDE.md: 0.341304238875... as of 2026-02-18)
Current: Lakefile allows mathlib tactics only, not content.
Question: Can we import Mathlib.Data.Real.Basic + Real.pi +
Real.exp for the Phase 4 numerical cross-verification? This would
enable a bridge theorem TauReal.pi ≈ Real.pi to within
proven error bounds.
Impact: If yes, Phase 4 is straightforward (~50 lines). If no, Phase 4 requires native TauReal interval arithmetic (~100 lines, more work but keeps mathlib-free purity).
Recommendation: start with no mathlib content policy (preserves TauLib's purity claim), revisit if Phase 4 blockers emerge.
Current plan: preserve iota_tau_numer / iota_tau_denom as
derived bounds so ~50 downstream callsites compile unchanged.
Alternative: rewrite all callsites to use the new structural
iota_tau : TauReal directly, removing the Nat/Nat intermediate.
Recommendation: derived-bounds strategy (safer, preserves momentum, downstream can migrate incrementally).
Sequential (1 engineer): ~18 weeks total Parallel (3 engineers on Phases 2A/2B/2C after Phase 1): ~6-8 weeks total
Recommendation: start sequential (build momentum, confirm patterns work); parallelise Phase 2 once Phase 1 foundations are proven.
Option A: Ship 3-hinge refactor without Step 12. Add later as Book VII matures. Option B: Delay release until Book VII ch.48 is formalised (unknown timeline).
Recommendation: Option A — the three hinges stand on their own; Step 12 is a structural bonus, not a prerequisite.
Current TauReal is a simplified "sequence wrapper" with pointwise-equiv semantics. A proper Cauchy-quotient construction would be more mathematically honest but is a separate ~200-300 line wave.
Recommendation: keep simplified TauReal for now (Phase 0 works with existing semantics); schedule Cauchy-quotient upgrade as a separate wave after 3-hinge refactor completes.
| Milestone | Phase | Status | Target date |
|---|---|---|---|
| M0: TauReal audit complete | 0 | ✅ Done (2026-04-21) | — |
| M1: Strategy doc ratified | — | 🟡 In review | 2026-04-21 |
| M2: TauReal.pi, TauReal.e, TauReal.two | 0 | ⬜ Pending | +2 days |
| M3: TauRat.inv + nonzero hypothesis | 0 | ⬜ Pending | +3 days |
| M4: Structural iota_tau + numerical theorem | 0 | ⬜ Pending | +1 week |
| M5: Phase 0 complete (Iota.lean refactor) | 0 | ⬜ Pending | +2 weeks |
| M6: Phase 1 foundations | 1 | ⬜ Pending | +4 weeks |
| M7: First hinge theorem ported (2A recommended) | 2A | ⬜ Pending | +7-8 weeks |
| M8: All three hinges ported | 2A-2C | ⬜ Pending | +14-16 weeks |
| M9: Numerical evaluation certificate | 4 | ⬜ Pending | +16-18 weeks |
| ID | Risk | Severity | Mitigation |
|---|---|---|---|
| R0.1 | TauRat.inv complexity | Medium | Audit TauRat before P0.4 |
| R0.2 | pi_scaled / e_scaled precision | Low | Add improved series if needed |
| R0.3 | Callsite breakage | Low | Preserve derived bounds |
| R1.1 | OmegaGerms InverseLimit type refactor | Medium | Prototype in spike branch first |
| R2C.1 | Novel σ-equivariant holomorphic transformer API | High | Spike early, pair with paper author |
| R3'.1 | Book VII ch.48 dependency | High | Gate Phase 3', ship without if needed |
Upstream papers (LaTeX source, in the Panta Rhei book repo, not TauLib):
papers/iota-tau/main.tex(v2.9, 33 pages)papers/prime-polarity/main.texpapers/hyperfactorization/main.tex
TauLib primary refactor targets (paths below are relative to TauLib repo root):
TauLib/BookI/Boundary/Iota.leanTauLib/BookI/Boundary/ConstructiveReals.leanTauLib/BookI/Polarity/Polarity.leanTauLib/BookI/Coordinates/Hyperfact.lean
TauLib shared infrastructure:
BookI/Polarity/Lemniscate.lean,BipolarAlgebra.lean,OmegaGerms.lean,PolarizedGerms.lean,Spectral.leanBookI/Coordinates/NoTie.lean,Descent.lean,ABCD.leanBookI/Boundary/SplitComplex.leanBookII/Hartogs/BndLift.lean,EvolutionOperator.lean,MutualDetermination.leanBookII/CentralTheorem/CentralTheorem.lean,ExtensionsOmegaGerms.lean
| Paper | Lean section label | Line range |
|---|---|---|
| iota-tau | sec:lean-plan |
2975-3058 |
| prime-polarity | sec:lean-plan |
1694-1795 |
| hyperfactorization | sec:lean-plan |
1340-1428 |
- 2026-02-18: ι_τ corrected to 0.341304238875... (was 0.341459 in 1st Ed) — locked in Book II, not yet reflected in Iota.lean
- 2026-04-21 (this session): Three hinge papers completed to v2.9 / v1 structural rigour; TauLib refactor roadmap drafted
RELEASE_NOTES.md— TauLib release tracking (will be updated per phase)ATLAS.md— registry-to-Lean cross-reference (to be updated as hinge theorems are ported)
-
v1.0 (2026-04-21): Initial strategy document. Based on parallel reconnaissance reports covering (a) Lean roadmaps across all three papers and (b) TauLib kernel audit including TauReal substrate status. Phase 0 plan detailed; Phases 1-4 high-level.
-
v1.1 (2026-04-21): Phase 0 expanded into a full 4-wave TauReal infrastructure build (replaces minimal
direct-sequence avoidanceapproach). New scope: ~900 lines instead of ~200. Decision: walk the hard way and build proper Cauchy semantics, ordering, field operations, and standard constants natively in TauLib.Wave Scope Lines Module 1 TauRat field & order ( equiv_trans,toRat,lt/le/abs/inv/div)~250 TauRatField.lean(new)2 TauReal Cauchy semantics + ordering ~300 TauRealCauchy.lean(new)3 TauReal constants (π, e via Cauchy series) ~200 extend PiEarned.lean,EEarned.lean4 Structural ι_τ + numerical identity ~150 refactor Iota.lean -
v1.2 (2026-04-21): Tactical-constraint audit complete. Discovered that
Mathlib.Tactic.FieldSimpandMathlib.Tactic.Linarithare NOT in TauLib's effective tactic budget because their discharger sub-modules pull inMathlib.Algebra.Field.*,Mathlib.Algebra.Order.*,Mathlib.Algebra.Group.Nat.Defs,Mathlib.Logic.Basic— all mathematical content forbidden by lakefile policy. Effective budget:ring,ring_nf,linear_combination,norm_num,push_cast,omega,decide,native_decide, plus Lean core types (Rat,Int,Nat) with their built-in operations.Strategy: Option B1 + selective B3. Push through with manual tactical work, building TauLib-internal helper lemmas opportunistically as patterns recur. Wave 1 split into 4 sub-waves for compile-time isolation:
Sub-wave Scope Lines Module Status 1a equiv_trans,toRatbridge, homomorphisms,is_nonzero223 TauRatField.lean✅ DELIVERED 1b Ordering ( lt,le, transitivity, trichotomy)~80 TauRatOrder.leannext 1c Absolute value ( abs+ properties)~100 TauRatAbs.leanpending 1d Inverse + division ( inv,divwith nonzero hypotheses)~150-200 TauRatInv.leanpending Revised estimates (factoring 2-3× tactical-work overhead): Wave 1 ~600 lines, Wave 2 ~600 lines, Wave 3 ~250 lines, Wave 4 ~200 lines. Total ~1650 lines (was 900).
-
v1.3 (2026-04-21): Wave 1a delivered and compiling. 223 lines. TauRat now has
equiv_trans(the missing piece in NumberTower),toRatsemantic bridge, full set of homomorphism properties (toRat_add/mul/negate/sub/zero/one), andis_nonzeropredicate with equiv preservation. Smoke tests passing.