GCD and balanced Bézout construction#
The native gcd layer uses a relation rather than a new function symbol. With
\(d\mid n\) expanded as exists q. n = d * q, write
The grouping is part of the interface. Peano Lab parses repeated /\
left-associatively, so the stored formulas explicitly parenthesize the two
divisibility witnesses before the greatest-common-divisor clause.
What is checked now#
The 432-theorem runtime contains 23 baseline entries and 409 checked post-baseline entries. Two hundred and twelve of the latter form the general foundational layer, twelve are the fixed modular capstones, and 137 form the quadratic-residue campaign checkpoint; 25 form the strict-HA canonical, gcd, and LCM interface tranche; the remaining 23 are the selectively admitted generalized-CRT dependency closure. The broader catalog has 433 nodes: those 432 checked entries and one representation-blocked entry; it has no planned entry.
The checked gcd layer includes the relational API through uniqueness and existence:
symmetry and both input-divisibility projections;
extraction of the greatest-common-divisor clause;
a constructor showing that \(a\) is a gcd of \(a,b\) whenever \(a\mid b\);
mutual-divisibility antisymmetry and uniqueness of relational gcds;
factor-one rigidity and the fact that every divisor of one is one; and
both directions between the expanded common-divisor definition of coprimality and \(\operatorname{IsGCD}(1,a,b)\); and
bounded formula-specific gcd construction and unrestricted relational gcd existence.
The admitted LCM surface now also contains the universal-property projections, symmetry and uniqueness, both zero cases, compatible gcd/LCM existence, relational LCM existence, unique LCM value, and the identity \(\gcd(a,b)\operatorname{lcm}(a,b)=ab\). Ten convenience LCM wrappers, eight canonical-gcd wrappers, and the signed-gcd client remain deliberately private candidates.
Every gcd/coprimality, Euclidean-step, Bézout, and Gauss certificate is constructive. No theorem in this layer uses integer coefficients, subtraction, or classical logic.
Euclidean invariance without subtraction#
Suppose
The hard direction in the usual paper argument says that every common divisor of \(a\) and \(b\) divides \(r\). Naturals have no subtraction in this language, so the proof uses the constructive lemma
forall c u v r.
c * u = c * v + r ->
exists w. r = c * w
The checked native theorem factor_difference proves this by induction on the
two multipliers. It supports the following admitted ladder:
Checked theorem |
Meaning |
Shared nodes/depth |
|---|---|---|
|
base case \(\operatorname{IsGCD}(a,a,0)\) |
65 / 11 |
|
remove a common multiple prefix |
265 / 26 |
|
\(c\mid a\) and \(c\mid b\) imply \(c\mid r\) |
427 / 29 |
|
\(c\mid b\) and \(c\mid r\) imply \(c\mid bq+r\) |
224 / 19 |
|
\(\operatorname{IsGCD}(d,b,r)\to\operatorname{IsGCD}(d,a,b)\) |
741 / 38 |
|
the converse direction |
741 / 37 |
Each entry replays from its declared earlier dependencies and its self-contained certificate checks from the empty context. Euclidean invariance supplies the descent transport used by the separate checked existence construction; it did not by itself provide an existence witness.
Checked formula-specific strong induction#
The object language has no predicate variables, so it cannot store one polymorphic strong-induction theorem. For gcd existence, ordinary induction on a bound \(B\) can prove the concrete formula
At the successor step, discrete order gives either \(b\le B\) or \(b=S B\). The first branch uses the induction hypothesis. In the second, division supplies \(a=bq+r\) with \(r<b=S B\), hence \(r\le B\); the induction hypothesis factors the smaller pair \((b,r)\) and Euclidean invariance transports its gcd back to \((a,b)\).
The checked theorem gcd_exists_up_to is exactly this bounded construction.
Its authored body closes against the dependency-curried goal in 90 nodes. The
former dependency inliner corrupted the closed induction tree, which the
independent kernel correctly rejected. With reviewed self-contained sharing,
the theorem now checks constructively from the empty context at 1,232
nodes/depth 44.
The public gcd_exists_relational theorem specializes the bound to \(B=b\).
The checked le_refl supplies
after which gcd_exists_up_to yields a gcd for arbitrary \(a\) and \(b\). This
wrapper also checks constructively from the empty context, at 1,268
nodes/depth 46. Neither theorem introduces subtraction, a gcd function, or
classical choice.
The reviewed remedy is the now-implemented self-contained derived proof node
Cut(A, B, lemma, body)
whose checker rule verifies lemma : A in the ambient context and verifies
body : B with A as a new hypothesis. It contains no theorem names, hashes,
or external theorem authority. Because this changes the trusted checker, it
landed as its own audited milestone. It changes neither the arithmetic object
language nor the logic; Self-contained proof sharing
records the exact trust and erasure boundary. The two existence theorems now
complete the arithmetic admission that this architecture was designed to
support.
Bézout with four natural coefficients#
Signed integer coefficients are unnecessary. Define the balanced relation
For \(a=bq+r\), coefficients for \((b,r)\) transport to coefficients for \((a,b)\) by
The checked balanced_bezout_euclid_step theorem proves this identity using
only ordinary semiring equalities. The small add_permute_outer helper makes
the balanced equation available as an exact subterm; neither theorem invokes
ring as an oracle.
Simultaneous bounded construction#
The admitted bounded motive strengthens the earlier gcd-only construction to
At \(B=0\), \(b=0\), so \(d=a\) and coefficients \((1,0,0,0)\) close the balanced
equation. At a successor bound, the branch \(b\le B\) uses the induction
hypothesis directly. In the boundary branch \(b=S B\), division gives
\(a=bq+r\) and \(r<b\), hence \(r\le B\). The induction hypothesis supplies both a
full IsGCD(d,b,r) proof and balanced coefficients for \((b,r)\).
is_gcd_euclid_forward transports the complete relational gcd proof, while
balanced_bezout_euclid_step transports the coefficients.
This distinction matters: common_divisor_divides_balanced_result is not used
to manufacture the greatest-divisor clause in the bounded proof. It is a
separate bridge used downstream in Gauss cancellation.
The unrestricted gcd_balanced_bezout_exists theorem takes \(B=b\), exactly as
gcd_exists_relational does. Coprimality then forces the constructed gcd to be
one, yielding coprime_balanced_bezout.
From balanced Bézout to Gauss#
The scale theorem has the precise semantic form
Its stored name is balanced_combination_scale_right; the displayed formula
clarifies that the second input and balanced result are scaled, while the
first input absorbs \(z\) into its positive and negative coefficients.
The checked common_divisor_divides_balanced_result theorem says that if
\(c\mid a\), \(c\mid b\), and a balanced equation has result \(d\), then \(c\mid d\).
Applied to the scaled result-one equation, with inputs \(a\) and \(bz\), it proves
This is the admitted gauss_coprime_cancel theorem. The complete new ladder
has the following shared-certificate metrics:
Checked theorem |
Role |
Nodes/depth |
|---|---|---|
|
four-summand additive permutation |
149 / 15 |
|
coefficient transport across \(a=bq+r\) |
880 / 35 |
|
bounded simultaneous gcd/Bézout descent |
2,233 / 45 |
|
unrestricted simultaneous existence |
2,269 / 47 |
|
scale the balanced result and second input |
754 / 28 |
|
recover divisibility of the result |
626 / 39 |
|
balanced result-one witnesses for coprime inputs |
2,304 / 48 |
|
cancel a coprime factor from divisibility |
3,800 / 51 |
|
every divisor of a prime is one or that prime |
57 / 12 |
|
a prime divisor of a product divides a factor |
5,382 / 55 |
Every certificate checks from the empty context in the intuitionistic kernel.
Euclid’s lemma is developed in Primes and unique factorization. The independent constructive search branch now
also checks bounded nontrivial-factor search, proper-factor descent, and
prime_divisor_exists. Single-position Gödel-β decoding existence,
uniqueness, and its equivalence to bounded balanced congruence are checked too.
Downstream, constructive binary_crt combines residues for nonzero coprime
moduli. The β layer now goes beyond the earlier conditional two-position
client: bounded pairwise coprimality, independent finite-prefix recoding,
one-value extension, exact prefix-product traces, Product functionality,
greatest-prime descent and canonical append are all checked. Those interfaces
feed factorization existence, uniqueness and the combined native FTA. Follow
that completed route in the guided tour or move directly
from
gcd_balanced_bezout_exists
to its dependents in the theorem atlas.