3 VR-Numbers
3.1 Position
VR-Numbers constructs the integers \(\mathbb {Z}_{\mathrm{VR}}\), rationals \(\mathbb {Q}_{\mathrm{VR}}\), reals \(\mathbb {R}_{\mathrm{VR}}\), and complex numbers \(\mathbb {C}_{\mathrm{VR}}\) as successive operational superstructures over the VR natural numbers \(\mathrm{VRObj}\). Each numerical domain is introduced as a formal language of expressions with an equivalence relation; no level uses ordered pairs as primitive objects. \(\emptyset \) is the base operation, not an ontological primitive; all number systems are operational constructions of increasing depth over it (§ VI.4 of the preprint).
The isomorphisms with mathlib’s Int, Rat, Real, and Complex are proved as explicit structure terms with named fields for bijectivity and operation preservation—the same pattern as VR_PA_iso in Chapter 2. The chapter establishes a structural axiom-profile boundary: \(\mathbb {Z}_{\mathrm{VR}}\) is constructive ([propext, Quot.sound]), while \(\mathbb {Q}_{\mathrm{VR}}\) and all subsequent levels require Classical.choice due to a structural dependency in mathlib’s rational arithmetic.
3.2 Integers \(\mathbb {Z}_{\mathrm{VR}}\)
IntExpr is an inductive type with a single constructor \(\texttt{mk} : \mathrm{VRObj} \to \mathrm{VRObj} \to \mathrm{IntExpr}\), representing the syntactic expression \(a \ominus b\) where \(a, b \in \mathrm{VRObj}\). Access is exclusively via pattern matching; no projections are named (§ VI.5, item 1 of the preprint).
\(\texttt{intEq}(a \ominus b,\, c \ominus d) \; \Longleftrightarrow \; \texttt{vadd}\, a\, d = \texttt{vadd}\, b\, c\). Equivalence of two subtraction expressions, mirroring the standard integer construction via natural-number pairs.
Reflexivity uses T1 (commutativity). Symmetry uses T1 and transitivity in \(\mathrm{VRObj}\). Transitivity reduces to right cancellation of vadd, which is an explicit private lemma vadd_cancel (proved by induction on \(c\) using P4_succ_inj).
\((a \ominus b) \oplus (c \ominus d) := (a{+}c) \ominus (b{+}d)\); \((a \ominus b) \otimes (c \ominus d) := (a{\times }c {+} b{\times }d) \ominus (a{\times }d {+} b{\times }c)\); \(\ominus (a \ominus b) := b \ominus a\); \((a \ominus b) \ominus (c \ominus d) := (a{+}d) \ominus (b{+}c)\). Subtraction is definable as \(e \ominus f = e \oplus \ominus f\) (isub_via_iadd_ineg, by rfl).
Each of ineg, iadd, imul, isub sends intEq-equivalent inputs to intEq-equivalent outputs. iadd_respects uses vadd_swap; imul_respects chains two private lemmas (imul_left_respects and imul_right_respects).
\(\mathbb {Z}_{\mathrm{VR}} := \mathrm{IntExpr} / \texttt{intEq}\) via Quotient. Operations iaddQ, imulQ, inegQ, isubQ are lifted via Quotient.lift₂ using the well-definedness theorems; each lift invokes Quot.sound. The natural number \(n\) embeds as \([n \ominus \emptyset ]\) via embedN.
Every IntExpr is intEq-equivalent to either \((n \ominus \emptyset )\) (non-negative) or \((\emptyset \ominus n)\) (negative). Proved via the private vadd_comparable lemma (constructive totality of the natural order on VRObj).
The structure IntVRIntIso has seven fields: forward (\(\mathbb {Z}_{\mathrm{VR}} \to \mathbb {Z}\)), backward (\(\mathbb {Z} \to \mathbb {Z}_{\mathrm{VR}}\)), bijectivity (right_inv, left_inv), and preservation of iaddQ, imulQ, inegQ.
The term Theorem_II_6_IntVR_Int : IntVRIntIso is constructed with forward mapping \([a \ominus b] \mapsto \texttt{O\_ inv}(a) - \texttt{O\_ inv}(b)\) and backward mapping via Int.ofNat/Int.negSucc branches. Well-definedness: private bridge lemmas O_inv_vadd and O_inv_vmul. Bijectivity: right_inv_int and left_inv_int; the latter splits by by_cases on a decidable inequality (no Classical.choice). Preservation of operations: by push_cast + ring after rewriting with O_inv_vadd/O_inv_vmul.
Axiom profile: [propext, Quot.sound] (no Classical.choice).
3.3 Rationals \(\mathbb {Q}_{\mathrm{VR}}\)
RatExpr is an inductive type with constructor \(\texttt{mk} : \mathbb {Z}_{\mathrm{VR}} \to \mathbb {Z}_{\mathrm{VR}} \to \mathrm{RatExpr}\), representing \(a \oslash b\). The subtype \(\texttt{NonZeroRatExpr} := \{ e : \mathrm{RatExpr} \mid e.\texttt{snd} \ne 0_{\mathbb {Z}}\} \) restricts to expressions with nonzero denominator. Access via pattern matching only; no named projections in the sense of § VI.5 item 1.
\(\texttt{ratEq}(a \oslash b,\, c \oslash d) \; \Longleftrightarrow \; \texttt{imulQ}\, a\, d = \texttt{imulQ}\, b\, c\) (cross-multiplication on \(\mathbb {Z}_{\mathrm{VR}}\)). Defined on NonZeroRatExpr.
Reflexivity: imulQ_comm. Symmetry: swap and use commutativity. Transitivity: cancel the common factor via the private Int_mul_right_cancel, which avoids mul_right_cancel₀ (the latter pulls Classical.choice through mathlib’s integral domain instance). All three proofs stay in [propext, Quot.sound].
Addition, multiplication, subtraction, and division on NonZeroRatExpr follow the standard cross-multiplication formulas; denominators are nonzero by imulQ_ne_zero. Division has a junk value \(p / 0_{\mathbb {Q}} := 0_{\mathbb {Q}}\). All four operations lift to \(\mathbb {Q}_{\mathrm{VR}}\) via Quotient.lift₂ using their respective respects theorems.
\(\mathbb {Q}_{\mathrm{VR}} := \mathrm{NonZeroRatExpr} / \texttt{ratEq}\). Zero element \(0_{\mathbb {Q}} := [0_{\mathbb {Z}} \oslash 1_{\mathbb {Z}}]\). Nonzero predicate nonZeroQ is defined via Quotient.lift using propext for well-definedness. Integer \(a \in \mathbb {Z}_{\mathrm{VR}}\) embeds as \([a \oslash 1_{\mathbb {Z}}]\) via embedZ. The structure RatVRRatIso has ten fields: bijection, preservation of \(0\), \(1\), addition, multiplication, subtraction, and division.
The term Theorem_III_6_RatVR_Rat : RatVRRatIso with forwardQ(\([a \oslash b]\)) \(:= \texttt{forward}(a) \mathbin {/\! \! .} \texttt{forward}(b)\) (mathlib’s Rat.divInt) and backwardQ(\(r\)) \(:= [\texttt{backward}(r.\texttt{num}) \oslash \texttt{backward}({\uparrow }r.\texttt{den})]\). Operation preservation uses Rat.divInt_add_divInt, Rat.divInt_mul_divInt, etc.
Axiom profile: [propext, Classical.choice, Quot.sound]. Classical.choice enters here from the target type Rat: Lean 4 Core’s Rat.add normalises via Nat.gcd, whose proof chain depends on Classical.choice. This is structural and unavoidable; see Remark 62.
Every \(q \in \mathbb {Q}_{\mathrm{VR}}\) equals \(\texttt{backwardQ}(\texttt{forwardQ}(q))\), where \(\texttt{forwardQ}(q)\) is already in canonical form as a Rat (denominator positive, numerator and denominator coprime by Rat.reduced). The three canonicity properties from the preprint follow from this equality.
3.4 Reals \(\mathbb {R}_{\mathrm{VR}}\)
\(p {\lt} q \; \Longleftrightarrow \; \texttt{forwardQ}(p) {\lt} \texttt{forwardQ}(q)\) in \(\mathbb {Q}\). \(|p| := \texttt{backwardQ}(|\texttt{forwardQ}(p)|)\). Both are transferred through the isomorphism; decidability of \({\lt}\) is inherited from DecidableEq on \(\mathbb {Q}\).
\(\texttt{isFundamentalVR}(a)\) holds when for every \(\varepsilon {\gt} 0_{\mathbb {Q}}\) there exists \(N\) such that \(|a(m) - a(n)| {\lt} \varepsilon \) for all \(m, n \ge N\). \(\texttt{cauchyEqVR}(a, b)\): for every \(\varepsilon {\gt} 0_{\mathbb {Q}}\) there exists \(N\) such that \(|a(n) - b(n)| {\lt} \varepsilon \) for all \(n \ge N\). Both are stated directly over \(\mathbb {Q}_{\mathrm{VR}}\) using ltRatVR and absRatVR.
Reflexivity: ratSub_self + absRatVR_zero. Symmetry: absRatVR_sub_comm. Transitivity: triangle inequality via \(\varepsilon /2\)-splitting (half_exists). All proofs lift through forwardQ/forwardQ_right_inv to \(\mathbb {Q}\) identities.
\(\texttt{FundSeqVR}\) is the subtype of isFundamentalVR sequences. \(\mathbb {R}_{\mathrm{VR}} := \texttt{FundSeqVR} / \texttt{cauchyEqVR}\). Operations realAdd, realSub, realMul are lifted via Quotient.lift₂; Cauchy-preservation and well-definedness are private. Division realDiv is noncomputable: defined as \(\texttt{backwardR}(\texttt{forwardR}(p) / \texttt{forwardR}(q))\) through the isomorphism. Every rational \(q \in \mathbb {Q}_{\mathrm{VR}}\) embeds as the constant sequence via embedQ. The structure RealVRRealIso has ten fields: bijection and preservation of \(0\), \(1\), addition, multiplication, subtraction, division.
The term Theorem_IV_7_RealVR_Real : RealVRRealIso with forwardR(\(\llbracket a \rrbracket \)) \(:= \texttt{Real.mk}(\texttt{forwardQ} \circ a)\) and backwardR(\(r\)) \(:= \llbracket \texttt{backwardQ} \circ r.\texttt{cauchy} \rrbracket \). Well-definedness: private bridge lemmas translating between IsCauSeq (mathlib) and isFundamentalVR. Operation preservation: mk_eq_of_pointwise + Real.mk_add/mul/neg.
Axiom profile: [propext, Classical.choice, Quot.sound] (inherited from \(\mathbb {Q}_{\mathrm{VR}}\)).
The preprint (§ IV.1) restricts Cauchy sequences to those with finite algorithmic descriptions. Lean 4 does not distinguish computable from non-computable functions at the type level: the type \(\mathbb {N} \to \mathbb {Q}_{\mathrm{VR}}\) includes all total functions. The operational restriction is a metatheoretic claim, not expressible as a Lean type predicate. The formal isomorphism Theorem_IV_7_RealVR_Real is proved without this restriction; the computable-reals interpretation is the operational reading of the same structure.
3.5 Complex \(\mathbb {C}_{\mathrm{VR}}\)
\(\texttt{ComplexVR}\) is a structure with two fields \(\texttt{fst} : \mathbb {R}_{\mathrm{VR}}\) (the real component) and \(\texttt{snd} : \mathbb {R}_{\mathrm{VR}}\) (the imaginary component).
\((a \oplus b\mathbf{i}) \oplus _{\mathbb {C}} (c \oplus d\mathbf{i}) := (a + c) \oplus (b + d)\mathbf{i}\) (cadd). \((a \oplus b\mathbf{i}) \otimes _{\mathbb {C}} (c \oplus d\mathbf{i}) := (a{\times }c \ominus b{\times }d) \oplus (a{\times }d \oplus b{\times }c)\mathbf{i}\) (cmul; the term \(\ominus (b {\times } d)\) encodes \(i \otimes i = \ominus 1\)). Conjugation: \(\overline{a \oplus b\mathbf{i}} := a \oplus (\ominus b)\mathbf{i}\) (cconj). Modulus cabs and division cdiv are noncomputable, defined via forwardC and real/complex arithmetic in mathlib. The structure ComplexVRComplexIso has nine fields: bijection and preservation of \(0\), \(1\), addition, multiplication, conjugation.
The term Theorem_V_8_ComplexVR_Complex : ComplexVRComplexIso with forwardC(\(p\)) \(:= \langle \texttt{forwardR}(p.\texttt{fst}),\, \texttt{forwardR}(p.\texttt{snd}) \rangle \) (no quotient: ComplexVR is a plain structure). Multiplication preservation: two applications of fR_sub/fR_mul. Conjugation preservation: Complex.star_def + fR_zero for the sign-flip in the imaginary component.
Axiom profile: [propext, Classical.choice, Quot.sound] (inherited from \(\mathbb {R}_{\mathrm{VR}}\)).
3.6 Axiom profile boundary
The classical-free boundary in VR-Numbers lies between \(\mathbb {Z}_{\mathrm{VR}}\) and \(\mathbb {Q}_{\mathrm{VR}}\):
\(\mathbb {Z}_{\mathrm{VR}}\) (§ II – § III, objects through Theorem_II_6_IntVR_Int): Axiom profile: [propext, Quot.sound].
\(\mathbb {Q}_{\mathrm{VR}}\) and all subsequent levels: Axiom profile: [propext, Classical.choice, Quot.sound].
The cause is structural: Lean 4 Core’s Rat.add normalises via Nat.gcd coprimality, whose proof chain depends on Classical.choice. Confirmed via #print axioms Theorem_III_6_RatVR_Rat.
This dependency is in the target type Rat, not in any VR-Numbers proof technique: replacing individual lemmas or tactics cannot remove it. The boundary is a structural fact about how mathlib encodes rational arithmetic, not a defect of the VR construction.
3.7 The § VI.5 list of non-primitive objects
Following § VI.5 of the preprint, the following objects are absent as independent objects: (1) ordered pairs (both IntExpr.mk and RatExpr.mk are formal binary operators accessed via pattern matching only); (2) negative numbers (classes of \(a \ominus b\), not a distinct primitive); (3) fractions (classes of \(a \oslash b\) with \(b \ne 0\)); (4) real numbers (equivalence classes of Cauchy sequences of rationals); (5) complex numbers (pairs of reals, but not primitive pairs—a plain Lean structure whose fields are real components); (6) zero (emerges as the class \([0_{\mathbb {Z}} \oslash 1_{\mathbb {Z}}]\) or as the constant sequence at \(0_{\mathbb {Q}}\), not as a primitive object). Each level is an operational construction of increasing depth over \(\emptyset \).
3.8 Methodological observations
The following twelve remarks document observations from the formalisation that sharpen or extend the claims of the preprint (Part VIII, v1.0.2).
Transitivity of intEq reduces to right cancellation of vadd: if \(\texttt{vadd}\, a\, c = \texttt{vadd}\, b\, c\) then \(a = b\). This cancellation law (vadd_cancel, private) is proved by induction on \(c\) using P4_succ_inj. The preprint’s “direct verification” conceals this dependency; the formalisation makes it explicit.
T3 (T3_vmul_distrib) gives right distributivity \(a \times (b + c) = a \times b + a \times c\). Left distributivity \((a + b) \times c = a \times c + b \times c\) requires a separate inductive argument (vmul_distrib_right). Its absence from T1–T4 is a formalization finding parallel to Remark O1.
Quot.sound is the only axiom beyond Part I’s axiom-free profile that enters VR-Numbers. It appears at the first quotient construction (IntVR) and is unavoidable: without it, equivalence classes would be distinguishable as terms, destroying the mathematical content of the quotient. Quot.sound is not Classical.choice and does not break computability.
propext appears in \(\mathbb {Z}_{\mathrm{VR}}\) (profile [propext, Quot.sound]) because Lean’s Setoid API uses it internally. It is not invoked as an inference principle in any VR proof; it surfaces as a kernel-level dependency of the quotient infrastructure.
The left-inverse proof (left_inv_int) splits on whether \(\texttt{O\_ inv}(b) \le \texttt{O\_ inv}(a)\) using by_cases. This is a decidable inequality on Nat (via instDecidableNatLe) and does not invoke Classical.choice. The [propext, Quot.sound] profile of Theorem_II_6_IntVR_Int is preserved.
Transitivity of ratEq requires right cancellation in \(\mathbb {Z}\). The standard mathlib lemma mul_right_cancel₀ pulls Classical.choice via the integral domain instance. The private Int_mul_right_cancel avoids this by the route \((a - b) \times c = 0 \Rightarrow \texttt{natAbs}(a - b) \times \texttt{natAbs}(c) = 0 \Rightarrow a = b\), using only core lemmas Int.natAbs_mul, Int.natAbs_eq_zero, Nat.mul_eq_zero, and sub_eq_zero. Profile: [propext, Quot.sound].
Classical.choice in \(\mathbb {Q}_{\mathrm{VR}}\) is inherited from the target type Rat, not introduced by any VR tactic or lemma. Confirmed by #print axioms Rat.add (no mathlib import needed). No rewriting of individual lemmas in VR-Numbers can remove it.
Each isomorphism theorem targets mathlib’s Int, Rat, Real, Complex as destinations, not re-derived structures. VR-Numbers is built on mathlib, not parallel to it. The isomorphisms provide the operational superstructure; mathlib provides the classical substrate.
Neither IntExpr nor RatExpr has named accessor functions corresponding to “first” and “second” components. Lean projections (.1, .2) exist but are not used; all access is via pattern matching. The constructors .mk denote syntactic juxtaposition under a binary operator (\(\ominus \), \(\oslash \)), not ordered-pair structure.
The VR-Numbers hierarchy has three operational depths above \(\emptyset \): depth 1 (IntExpr: formal subtractions of VRObj); depth 2 (RatExpr: formal divisions of \(\mathbb {Z}_{\mathrm{VR}}\)); depth 3 (FundSeqVR: sequences of \(\mathbb {Q}_{\mathrm{VR}}\) values). \(\mathbb {C}_{\mathrm{VR}}\) is depth 3 (a plain structure of two \(\mathbb {R}_{\mathrm{VR}}\) values, no additional quotienting).
The preprint restricts Cauchy sequences in \(\mathbb {R}_{\mathrm{VR}}\) to those with finite algorithmic descriptions (§ IV.1). This restriction cannot be expressed as a Lean 4 type predicate: the type \(\mathbb {N} \to \mathbb {Q}_{\mathrm{VR}}\) includes all total functions. Theorem_IV_7_RealVR_Real proves the structural isomorphism without this restriction. The computable-reals reading is the operational interpretation of the isomorphism, verified at the metatheoretic level.
The two-dimensionality of \(\mathbb {C}_{\mathrm{VR}}\) is carried by its two real components fst, snd, not by posited ordered pairs. The algebraic coupling between the components—the joining rule \(i \otimes i := \ominus 1\)—is an independent postulate encoded in cmul via the term \(\ominus (b \times d)\) in the real part. Without cmul, \(\mathbb {C}_{\mathrm{VR}}\) is two independent copies of \(\mathbb {R}_{\mathrm{VR}}\); cmul makes it a field. The preprint (§ V.9) distinguishes these two contributions explicitly.
3.9 Axiom profile
Axiom profile: [propext, Quot.sound] for \(\mathbb {Z}_{\mathrm{VR}}\) and all objects through Theorem_II_6_IntVR_Int. Axiom profile: [propext, Classical.choice, Quot.sound] for \(\mathbb {Q}_{\mathrm{VR}}\) and all objects through Theorem_V_8_ComplexVR_Complex.
The boundary is structural: it lies in Lean 4 Core’s Rat.add, not in any VR construction choice. The proof techniques of VR-Numbers (quotient lifting, bijection via O/O_inv, operation preservation via ring/omega) do not introduce Classical.choice independently.
3.10 References
The preprint for this chapter is VR-Numbers, v1.0.2 (23 May 2026).
The Lean 4 formalisation is archived at VR-Numbers Lean, v1.0.0 (23 May 2026), git tag v1.1-vr-numbers.