Completeness of the executable Syracuse descent checker on canonical dyadic chains
ProvedCollatzFrontier.chainCertificate_acceptsFix two sequences (exponents and representatives) and a dyadic modulus budget . chainCertificate a b K k packages the length- prefix of this data into the executable DescentCertificate format of Def_collatzFrontierCertificate (the coefficient at step is the exact remaining budget ). This theorem is the completeness (acceptance) bridge between an abstract Syracuse-step chain and the executable checker checkDescent:
whenever (i) the start representative is a positive odd number strictly below (so the family is a canonical progression), (ii) every exponent for is positive, (iii) the exact division identity holds through step , (iv) every intermediate representative for is odd, (v) the cumulative exponent budget does not exceed , and (vi) the representative strictly decreases ().
Role and reuse. This is the single reusable checker-completeness engine behind both the linear-budget completeness theorem (bounded_descent_generated, which instantiates it with the factorization-derived exponent/representative sequence of an actual Syracuse orbit) and the adaptive-budget completeness equivalence (eventual_descent_iff_certificate, via the same instantiation). Packaging it as its own platform theorem removes the need to re-derive this ~60-line argument inside each of those two headline proofs.
Formalization Note. Transcribed verbatim from CollatzFrontier.chainCertificate_accepts in lean/CollatzFrontier/CertificateCompleteness.lean. All eight hypotheses are used in the proof; none were dropped.
import Definitions.Def_collatzFrontierCertificate
namespace CollatzFrontier
theorem chainCertificate_accepts (a b : ℕ → ℕ) (K k : ℕ)
(hbpos : 0 < b 0) (hcanonical : b 0 < 2 ^ K) (hbodd : Odd (b 0))
(hapos : ∀ i ≤ k, 0 < a i)
(hstep : ∀ i ≤ k, 3 * b i + 1 = 2 ^ (a i) * b (i + 1))
(hodd : ∀ i < k, Odd (b (i + 1)))
(hbudget : (∑ i ∈ Finset.range (k + 1), a i) ≤ K)
(hdesc : b (k + 1) < b 0) :
checkDescent (chainCertificate a b K k) = true := by sorry
end CollatzFrontier