English

Formalization of Amicable Numbers Theory

Logic in Computer Science 2026-01-13 v1

Abstract

This paper presents a formalization of the theory of amicable numbers in the Lean~4 proof assistant. Two positive integers mm and nn are called an amicable pair if the sum of proper divisors of mm equals nn and the sum of proper divisors of nn equals mm. Our formalization introduces the proper divisor sum function \propersum(n)=σ(n)n\propersum(n) = \sigma(n) - n, defines the concepts of amicable pairs and amicable numbers, and computationally verifies historically famous amicable pairs. Furthermore, we formalize basic structural theorems, including symmetry, non-triviality, and connections to abundant/deficient numbers. A key contribution is the complete formal proof of the classical Th\={a}bit formula (9th century), using index-shifting and the \texttt{zify} tactic. Additionally, we provide complete formal proofs of both Th\={a}bit's rule and Euler's generalized rule (1747), two fundamental theorems for generating amicable pairs. A major achievement is the first complete formalization of the Borho-Hoffmann breeding method (1986), comprising 540 lines with 33 theorems and leveraging automated algebra tactics (\texttt{zify} and \texttt{ring}) to verify complex polynomial identities. We also formalize extensions including sociable numbers (aliquot cycles), betrothed numbers (quasi-amicable pairs), parity constraint theorems, and computational search bounds for coprime pairs (>1065>10^{65}). We verify the smallest sociable cycle of length 5 (Poulet's cycle) and computationally verify specific instances. The formalization comprises 2076 lines of Lean code organized into Mathlib-candidate and paper-specific modules, with 139 theorems and all necessary infrastructure for divisor sum multiplicativity and coprimality reasoning.

Cite

@article{arxiv.2601.07444,
  title  = {Formalization of Amicable Numbers Theory},
  author = {Zhipeng Chen and Haolun Tang and Jingyi Zhan},
  journal= {arXiv preprint arXiv:2601.07444},
  year   = {2026}
}
R2 v1 2026-07-01T09:00:34.960Z