VR Cycle Blueprint

7 VR-Audit

7.1 Position

VR-Audit is the first Application in the VR Cycle (Layer III). It applies the two-register apparatus from Chapter 6 and the Mode B schema from Chapter 8 to classical mathematics. Audit One establishes an operational Hahn-Banach theorem for Hilbert spaces via the Riesz representation route (Path B).

Wrapping principle. No new type of “computable Hilbert space” is introduced parallel to mathlib’s Real or InnerProductSpace. Instead, a predicate IsComputableReal : ℝ → Prop selects the computable reals as a sub-collection of mathlib’s classical \(\mathbb {R}\). Similarly, OperationalHilbertSpace E layers three computability fields on top of mathlib’s InnerProductSpace ℝ E. This is the direct embodiment of the VR-Forms two-register apparatus in analysis: formal register \(=\) mathlib’s classical structures; operational register \(=\) the sub-collection satisfying computability predicates with witnesses.

Non-chronological dependency. The Apparatus preprint (Chapter 8) was published after VR-Audit, but methodologically, VR-Audit is an instance of the Mode B schema defined there. The blueprint shows this dependency explicitly; publication order is not the ordering principle here.

Axiom profile: [propext, Classical.choice, Quot.sound] for all 17 public objects. Classical.choice enters through mathlib’s \(\mathbb {R}\) (Cauchy completeness) and Riesz representation. This is the expected and acceptable ceiling: operational content lives within the classical structure, not outside it.

7.2 Operational structures (Stages 1–4)

Definition 189 Computability predicate for real numbers
#

\(\texttt{IsComputableReal}(x) := \exists \, (\texttt{alg} : \mathbb {N} \to \mathbb {Q})\, (\texttt{mod} : \mathbb {N} \to \mathbb {N}),\; \forall n\, k,\; \texttt{mod}(n) \le k \Rightarrow |(\texttt{alg}(k) : \mathbb {R}) - x| \le 1/2^n\). Following Pour-El & Richards 1989 § 1.1 and Bishop-Bridges 1985 § 2.2: \(x\) is computable if there exists a rational approximation sequence with an explicit modulus of convergence. Implemented as a Prop (not a Structure): witnesses are accessible via obtain when needed.

Definition 190 Computability predicate for sequences
#

\(\texttt{IsComputableSequence}(s : \mathbb {N} \to \mathbb {R}) := \forall n,\; \texttt{IsComputableReal}(s(n))\): every term of the sequence is a computable real.

Rational numbers are computable (IsComputableReal_rat); \(0\), \(1\) are computable; the predicate is closed under negation, addition, and subtraction. These six lemmas at Axiom profile: [propext, Classical.choice, Quot.sound]. Note: IsComputableReal_mul is absent from Stage 1 (requires bounded-sequence argument handled at the Hilbert-space level); it is not needed for the main theorem.

Definition 192 Operational Hilbert space
#

OperationalHilbertSpace E is a typeclass (not a structure) requiring [InnerProductSpace ℝ E] and [CompleteSpace E] as implicit prerequisites, with three additional fields:

  1. denseSeq : ℕ → E — an explicit dense sequence (separability witness);

  2. denseSeq_dense : DenseRange denseSeq — its range is classically dense in \(E\);

  3. inner_computable : ∀ m n, IsComputableReal (@inner ℝ E _ (denseSeq m) (denseSeq n)) — pairwise inner products of the dense sequence are computable reals.

Three fields are the minimum sufficient for the main theorem (Stage 5 via Riesz). No completeness modulus is required: classical CompleteSpace E from mathlib suffices. Pointwise computability of individual denseSeq k is not required.

Definition 193 Operational located subspace
#

\(\texttt{OperationalLocatedSubspace E}\) is a structure extending ClosedSubmodule ℝ E (mathlib) with three fields:

  1. denseSubSeq : ℕ → E — explicit dense sequence within \(M\);

  2. denseSubSeq_dense_in — density within \(M\);

  3. dist_computable : ∀ n, IsComputableReal (infDist (denseSeq n) M) — computable distance from ambient dense sequence points to \(M\) (locatedness in Bishop’s sense).

HasOrthogonalProjection is inherited from ClosedSubmodule via a global mathlib instance; no extra field is needed. Locatedness is formulated only over denseSeq points, not arbitrary x : E: see Observation 3.

Definition 194 Operational normable functional

\(\texttt{OperationalNormableFunctional~ E~ M}\) is a structure wrapping a classical M.toSubmodule →L[ℝ] ℝ (continuous linear map) with two operational fields:

  1. fn_computable_on_dense : ∀ n, IsComputableReal (toFun (denseSubSeq n, _)) — values on \(M\)’s dense sequence are computable;

  2. norm_computable : IsComputableReal toFun.opNorm — the operator norm is a computable real (normability).

Distinction bounded vs normable (Ishihara 1989): in computable analysis, a functional can be bounded without its norm being computable. norm_computable captures exactly normability, which is required for the norm-preservation clause of the main theorem. See Observation 5.

Theorem 195 Computability extends to all of \(M\)

For any \(\texttt{f : OperationalNormableFunctional~ E~ M}\) and \(x \in M.\texttt{toSubmodule}\), IsComputableReal\((f(x))\). Proof: density gives a sequence \(y_k \to x\); continuity (f.le_opNorm) bounds \(|f(x) - f(y_k)|\); fn_computable_on_dense provides rational approximations for \(f(y_k)\); triangle inequality combines them. Witnesses via Classical.choose.

7.3 Main theorem

Theorem 196 Operational Hahn-Banach for Hilbert spaces

Given: \(E\) with OperationalHilbertSpace E; \(M : \texttt{OperationalLocatedSubspace E}\); \(f : \texttt{OperationalNormableFunctional E M}\).

Produces: \(g : E \to _L[\mathbb {R}] \mathbb {R}\) (classical CLM) such that: (1) \(\forall n,\; \texttt{IsComputableReal}(g(\texttt{denseSeq n}))\) — \(g\) is computable on ambient dense sequence; (2) \(\texttt{IsComputableReal}(g.\texttt{opNorm})\) — \(g\) is normable; (3) \(\forall x \in M,\; g(x) = f(x)\) — \(g\) extends \(f\); (4) \(g.\texttt{opNorm} = f.\texttt{opNorm}\) — norms agree.

Proof via Riesz representation (Path B). Six steps: (i) Riesz vector \(\xi \in M\) via InnerProductSpace.toDual; (ii) extension \(g := \texttt{innerSL}\, \mathbb {R}\, (\xi : E)\); (iii) extension property; (iv) operationality of \(g\) via factorisation \(g(x) = f(P_M(x))\); (v) norm equality by Cauchy-Schwarz and inner product evaluation; (vi) computability of \(g.\texttt{opNorm}\) from \(f.\texttt{norm\_ computable}\). Axiom profile: [propext, Classical.choice, Quot.sound].

7.4 The transit pattern in action

Step 1: Riesz invoked as black box

Remark 197 Riesz as formal-register tool
#

InnerProductSpace.toDual (Riesz representation, mathlib) is invoked to produce a vector \(\xi \in M\) satisfying \(f(v) = \langle \xi , v\rangle _M\) for all \(v \in M\). \(\xi \) has classical ontological status: it exists by Riesz but its value is not explicitly computed. This is the formal-register step of the transit: a classical existence result is invoked as a black box. It uses Classical.choice through CompleteSpace and toDual.

Step 2: Explicit extension

Remark 198 Concrete extension
#

\(g := \texttt{innerSL}\, \mathbb {R}\, (\xi : E) : E \to _L[\mathbb {R}] \mathbb {R}\) is defined concretely from \(\xi \) without additional classical machinery. \(g(w) = \langle \xi , w\rangle _E\) for all \(w : E\). Linearity and continuity are automatic from innerSL.

Step 3: Operationality via orthogonal projection

Remark 199 Factorisation as operational heart
#

Key factorisation: \(g(\texttt{denseSeq n}) = \langle \xi , \texttt{denseSeq n}\rangle _E = \langle \xi , P_M(\texttt{denseSeq n})\rangle _M = f(P_M(\texttt{denseSeq n}))\), where \(P_M\) is orthogonal projection (available from HasOrthogonalProjection inherited via ClosedSubmodule). Locatedness of \(M\) (dist_computable) makes the projection operationally accessible. fn_computable_everywhere gives computability of \(f\) on all of \(M\), including \(P_M(\texttt{denseSeq n})\). The transit closes: the formal object \(\xi \) is used as an instrument to express the operational result \(g(\texttt{denseSeq n})\) as \(f\) applied to a computable input.

Step 4: Norm equality

Remark 200 Norm preservation
#

\(g.\texttt{opNorm} = \| \xi \| _E\) via innerSL_apply_norm. \(f.\texttt{opNorm} = \| \xi \| _E\) by le_antisymm: upper bound via Cauchy-Schwarz; lower bound by evaluating \(f.\texttt{le\_ opNorm}\) at \(\xi \). Transitively: \(g.\texttt{opNorm} = f.\texttt{opNorm}\). Computability of \(g.\texttt{opNorm}\) follows from \(f.\texttt{norm\_ computable}\) and the equality.

7.5 Why Path B, not Path A

Remark 201 Specker obstruction and structural avoidance
#

The Specker obstruction (1949) applies to suprema of bounded monotone computable sequences: such suprema can be non-computable. Path A — invoking classical Hahn-Banach directly — produces an extension abstractly: only an existence result, with no computable witness for \(g(\texttt{denseSeq n})\). This satisfies the formal register but leaves the operational register empty.

Path B (via Riesz) avoids the obstruction structurally: (i) \(\xi \) is a single vector produced by Riesz, not a limit of a monotone sequence; (ii) \(g(\texttt{denseSeq n}) = f(P_M(\texttt{denseSeq n}))\) is a finite-step computation, not a sequence supremum; (iii) \(g.\texttt{opNorm} = \| \xi \| _E\), a single real, not a supremum.

Locatedness (dist_computable) is the key structural ingredient: it makes orthogonal projection applicable at the operational level and enables the factorisation of Step 3. Without locatedness, the projection \(P_M(\texttt{denseSeq n})\) would remain in the formal register.

7.6 Non-vacuity instance

Theorem 202 \(\mathrm{EuclideanSpace}\, \mathbb {R}\, (\mathrm{Fin}\, n)\) is an operational Hilbert space

For every \(n : \mathbb {N}\), instOperationalHilbertSpaceEuclidean provides OperationalHilbertSpace (EuclideanSpace ℝ (Fin n)). Dense sequence: rational vectors \((\mathrm{Fin}\, n \to \mathbb {Q})\) enumerated via Encodable.decode, embedded via WithLp.toLp 2. Density: three-step DenseRange.comp chain via Encodable.surjective_decode_getD, DenseRange.piMap, and PiLp.homeomorph. Inner product computability: PiLp.inner_apply reduces \(\langle \cdot , \cdot \rangle \) to a finite sum of rational products; IsComputableReal_rat closes.

This is the canonical non-vacuity witness: for every \(n\), HahnBanachOperational_Hilbert applies to \(\mathrm{EuclideanSpace}\, \mathbb {R}\, (\mathrm{Fin}\, n)\). The infinite-dimensional case \(\ell ^2\) is deferred (requires Finsupp-based enumeration and tsum convergence).

7.7 Open programme

Remark 203 Future audit candidates
#

VR-Audit is an open programme. Audit One (Hahn-Banach for Hilbert spaces via Riesz) establishes the pattern. Future candidates listed in the preprint: Banach-Steinhaus (uniform boundedness), open mapping theorem, closed graph theorem, spectral theorem for self-adjoint compact operators, and Stone-Weierstrass. Each would follow the Mode B schema: classical theorem invoked as formal-register black box; operational output extracted via explicit witnesses and locatedness/computability predicates.

7.8 Position relative to neighbouring frameworks

Remark 204 Comparison with Bishop-style constructive analysis
#

Bishop-Bridges 1985 rebuilds analysis from scratch with constructive proofs. VR-Audit wraps over mathlib’s classical analysis rather than rebuilding it. The operational layer is thinner (predicate restrictions, not new types) and requires fewer proof lines, at the cost of accepting Classical.choice in the formal register.

Remark 205 Comparison with reverse mathematics
#

Reverse mathematics locates each theorem in the subsystem hierarchy (WKL\(_0\), ACA\(_0\), …). VR-Audit does not attempt this classification; it identifies the operational content that can be extracted from a classical theorem at the Classical.choice ceiling, not the minimal axioms needed to prove it.

Remark 206 Comparison with computable analysis and Weihrauch reducibility
#

Pour-El & Richards 1989 and the Weihrauch framework study computability of classical analysis results over abstract computation models. VR-Audit works within Lean 4’s type-theoretic framework: computability is expressed as IsComputableReal predicates rather than oracle Turing machines. The metatheoretic equivalence of these notions is not formalised here.

7.9 Methodological observations

Remark 207 Obs 1 — No Computable annotation on approximation functions
#

Computable₂ for \(\mathbb {Q}\) arithmetic operations is absent from mathlib4 (verified by exhaustive search). Lean’s intrinsic totality of alg : ℕ → ℚ and mod : ℕ → ℕ provides algorithmicity at the type level; Turing-machine codings remain metatheoretic. This is the first concrete confirmation in VR-Audit of the architectural principle: operationality is expressed through predicate restrictions, not Lean’s computational machinery. (Parallel to VR-Numbers § IV.1 boundary.)

Remark 208 Obs 2 — inner_computable as wrapping principle in Hilbert setting
#

The field inner_computable : ∀ m n, IsComputableReal (@inner ℝ E _ (denseSeq m) (denseSeq n)) selects, from the classical values provided by InnerProductSpace ℝ E, precisely those pairs for which the inner product is computable. The operational register (computable pairs) lives inside the formal register (full classical InnerProductSpace). This generalises: any classical structure with values in \(\mathbb {R}\) can be wrapped operationally by adding IsComputableReal predicates on selected outputs.

Remark 209 Obs 3 — Locatedness over dense sequence points only
#

dist_computable is formulated only over denseSeq n (operational witnesses), not arbitrary \(x : E\). This is principled: operational predicates apply to operational objects. Arbitrary \(x : E\) lives in the formal register. Demanding computability on arbitrary points would conflate the registers. The formulation is sufficient for Stage 5 because orthogonal projection is applied precisely to denseSeq points. This pattern — operational predicates only over operational witnesses — generalises to all future VR-Audit work.

Remark 210 Obs 4 — Specker boundary structurally avoided
#

The Riesz vector \(\xi \) is a single element, not a limit of a bounded monotone computable sequence. The Specker obstruction (1949) applies to the latter; our construction explicitly avoids it. Locatedness enables orthogonal projection without a Specker-vulnerable supremum. This is the structural reason why Path B (Riesz) is clean where a general Banach Hahn-Banach extension would not be.

Remark 211 Obs 5 — Bounded \(\ne \) normable
#

In computable analysis (Ishihara 1989), “bounded” (\(\exists C,\; |f(x)| \le C\| x\| \)) and “normable” (exact \(\sup |f(x)|/\| x\| \) computable) are distinct: a functional can be bounded without its norm being computable. norm_computable captures normability; this is required for the norm-preservation clause \(g.\texttt{opNorm} = f.\texttt{opNorm}\) in the main theorem. The distinction collapses classically; it is critical constructively.

Remark 212 Obs 6 — Transit pattern has richer structure
#

The classical extended functional \(g\) is built entirely from operational data: \(\xi \) is the Riesz vector of \(f\); \(g := \texttt{innerSL}\, \mathbb {R}\, (\xi : E)\) is defined concretely. The operational content of \(g\) at denseSeq n comes not from \(g\)’s definition directly but from the factorisation \(g(x) = f(P_M(x))\). This is richer than the standard Mode B schema (“apply classical lemma, prove output operational”): here the classical construction and the operational extraction are interleaved through the projection factorisation.

Remark 213 Obs 7 — Norm instance synthesis gap
#

The Norm (M.toSubmodule →L[ℝ] ℝ) instance does not synthesize at declaration/goal time in this context (mathlib infrastructure gap). Workaround: use f.opNorm (direct field access on ContinuousLinearMap) throughout, and change/show to pass to \(\| \cdot \| \)-based mathlib lemmas inside tactic proofs. This gap is structural (universe/instance unification) and expected in wrapping-style formalisations with multiple unification paths.

Remark 214 Obs 8 — ⟪·,·⟫_ℝ notation fails in class and binder scopes
#

The notation ⟪·, ·⟫_ℝ (from open scoped RealInnerProductSpace) does not parse inside class where field type declarations (subscript _ℝ misinterpreted by the parser) nor in \(\exists \)-binder scopes within tactic proofs. Workaround in class fields: use @inner ℝ E _ (explicit arguments). Workaround in binder scopes: use inner ℝ (function form). The notation works normally outside class blocks and binder scopes. This is the second cross-namespace universe issue in VR-Audit (after the OSet.{0} annotation in VR-Forms).

Remark 215 Obs 9 — letI vs haveI opacity in Riesz invocation
#

In the main theorem proof, hK_complete (CompleteSpace K) must be introduced via letI (transparent) rather than haveI (opaque) so that tactic-level instance synthesis finds it. Furthermore, @InnerProductSpace.toDual must be called with explicit hK_complete argument because instance synthesis fails to match the unreduced form ↥M.toSubmodule against ↥↑M.toClosedSubmodule. These two obstacles are overcome without new axioms; they reflect the instance-resolution sensitivity of wrapping-style formalisations.

Remark 216 Obs 10 — Non-vacuity of operationality
#

Stage 6 confirms that the operational requirements of OperationalHilbertSpace are achievable on a natural infinite family: \(\mathrm{EuclideanSpace}\, \mathbb {R}\, (\mathrm{Fin}\, n)\) for all \(n : \mathbb {N}\). This is the standard VR-Audit pattern: main theorem in full generality, then at least one explicit instance to show the operationality is inhabited without exotic mathematics.

7.10 Axiom profile

Axiom profile: [propext, Classical.choice, Quot.sound] for all 17 public objects.

Classical.choice enters through: mathlib’s \(\mathbb {R}\) (Cauchy completeness, inherited by every object); InnerProductSpace.toDual (Riesz, used in the main theorem); Classical.choose in fn_computable_everywhere (density approximation).

Remark 217 AC as formal-register tool
#

The use of Classical.choice in VR-Audit is methodologically correct. Classical.choice (AC) lives in the formal register: it produces a classical existence result without a computable witness. The operational register is then extracted via structural arguments (projection factorisation, locatedness, normability) that do not themselves require AC. This is exactly the Mode B pattern of Chapter 8: classical operations with operational witnesses. AC is a formal-register black box; the operational content is the computable output extracted from it.

7.11 References

The preprint for this chapter is VR-Audit, v1.0.0 (24 May 2026).

The Lean 4 formalisation is archived at VR-Audit Lean, v1.0.0 (24 May 2026), git tag v1.4-vr-audit-hb-hilbert.