Tencent Hyra Open-Source Model Solves 50-Year Math Problem: Deep Dive into Additive Combinatorics, Base-12 Structure, and the New Research Agent Paradigm
Introduction
On July 29, 2026, an arXiv preprint quietly appeared with an unassuming title — “Settling the Optimal Exponent Relating Sumsets and Difference Sets” — yet it immediately electrified both the mathematics and AI communities. Authors Haowei Lin (Tencent Hunyuan) and Shanda Li (Carnegie Mellon University) announced that a core open problem in additive combinatorics, unresolved for over half a century, had been definitively solved.
What makes this achievement even more remarkable is that the key construction was proposed by Hyra (Hunyuan Research Agent) — a research AI agent built on Tencent’s Hy3 model (295B total / 21B active parameters, MoE architecture, Apache 2.0 license, open-sourced July 6, 2026). In approximately 24 hours of autonomous exploration, Hyra found a critical path that human mathematicians had been unable to reach for more than fifty years.
This is not merely the resolution of a mathematical problem. It is a landmark moment demonstrating that open-source models can compete with — and in some dimensions surpass — closed-source products at the frontier of fundamental scientific research.
1. The Problem: A Holy Grail of Additive Combinatorics
1.1 Sumsets and Difference Sets
Additive combinatorics investigates the structural properties of integer sets under addition. The fundamental question is: given a finite nonempty integer set (A), define:
- Sumset: (A+A = {a+b \mid a,b \in A})
- Difference Set: (A-A = {a-b \mid a,b \in A})
Since duplicate results are counted only once, the set “expands” under addition and subtraction. We measure this expansion with two metrics:
[ \sigma(A) = \frac{|A+A|}{|A|}, \quad \delta(A) = \frac{|A-A|}{|A|} ]
1.2 The Classical Inequality and a Half-Century of Uncertainty
The classical sum-difference inequalities provide an elegant constraint:
[ \sigma(A)^{1/2} \leq \delta(A) \leq \sigma(A)^2 ]
To quantify the “exponent,” we define:
[ C(A) = \frac{\log \sigma(A)}{\log \delta(A)} ]
The classical inequality yields (C(A) \leq 2). The deceptively simple question: Is 2 a loose upper bound, or the optimal exponent that can be arbitrarily approached?
For more than half a century, no one knew.
1.3 Historical Timeline of Progress
| Year | Authors | Exponent (C(A)) | Method |
|---|---|---|---|
| 1969 | Marica | 1.0290 | Early construction |
| 1973 | Freiman & Pigarev | 1.0598 | Improved combinatorial method |
| 2013 | Penman & Wells | 1.1259 | Refined explicit construction |
| 2025.11 | AlphaEvolve (DeepMind) | 1.1219 | Evolutionary search |
| 2026 | LoongFlow (Baidu) | 1.13+ | Agent-based search |
| 2026 | SimpleTES (Stanford/Beijing) | 1.1440 | Exact evaluator + search |
| 2026 | SimpleTES post-training | 1.1449 | Fine-tuning optimization |
| 2026 | Codex (GPT-5.5) + human guidance | 1.2851 | Interactive search |
| 2026.7 | Hyra + Hy3 (Tencent) | → 2 (supremum) | Base-12 structure + CRT |
The comparison is startling: AlphaEvolve, GPT-5.5, Claude Fable 5 — all closed-source giants — were stuck in the 1.1–1.28 range. Hyra produced a construction family proving that (C(A)) can approach 2 arbitrarily closely.
2. Hyra Architecture: Recursive Self-Improvement for Scientific Discovery
2.1 Design Philosophy: The Bitter Lesson
Hyra’s design philosophy derives from Rich Sutton’s classic essay “The Bitter Lesson”: keep the framework as lightweight as possible, give the agent maximum action space, and let compute and search drive improvement.
2.2 Core Architecture
┌─────────────────────────────────────────────────────────────┐
│ Hyra Research Agent │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Context Agent │ │
│ │ ┌────────────────────────────────────────────────┐ │ │
│ │ │ Experience Bank (EB) │ │ │
│ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │
│ │ │ │ Sol #1 │ │ Sol #2 │ │ Sol #N │ ... │ │ │
│ │ │ │code/log │ │code/log │ │code/log │ │ │ │
│ │ │ │ score │ │ score │ │ score │ │ │ │
│ │ │ └──────────┘ └──────────┘ └──────────┘ │ │ │
│ │ └────────────────────────────────────────────────┘ │ │
│ │ ↓ │ │
│ │ Inspiration Generator │ │
│ │ ┌──────────────────┐ │ │
│ │ │ Task Queue │ │ │
│ │ └────────┬─────────┘ │ │
│ └───────────────────────┼──────────────────────────────┘ │
│ │ │
│ ┌───────────────────────┼──────────────────────────────┐ │
│ │ Proposal Agent Pool │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │
│ │ │Agent #1 │ │Agent #2 │ │Agent #N │ │ │
│ │ └────┬─────┘ └────┬─────┘ └────┬─────┘ │ │
│ │ │ │ │ │ │
│ │ ▼ ▼ ▼ │ │
│ │ ┌──────────────────────────────────────┐ │ │
│ │ │ Isolated Sandbox │ │ │
│ │ │ solve.sh → execute → eval → return │ │ │
│ │ └──────────────────────────────────────┘ │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
│ Semaphore-controlled concurrency | Async producer-consumer │
│ Dual-loop mode when no evaluator exists │
└─────────────────────────────────────────────────────────────┘
2.3 Key Components
Context Agent:
- Maintains an Experience Bank (EB) recording all solutions and evaluations
- Extracts materials from EB to generate “Inspiration” contexts
- Continuously pushes new exploration directions to the task queue
Proposal Agent Pool:
- Multiple agents fetch inspiration from the queue in parallel
- Each agent independently proposes a solution, writing to
solution/directory - Entry point is uniformly
solve.sh, executed in isolated sandboxes
Dual-Loop Mechanism: When no evaluator exists for a task, Hyra automatically upgrades to a dual-loop:
- Inner loop: iteratively improves solutions using the initial evaluator
- Outer loop: improves the evaluator itself based on accumulated experience, mitigating reward hacking
2.4 Breakthrough Path on the Combinatorics Problem
Phase 1: Finite Search (Numerical Optimization) Hyra first conducted explicit finite-set search within the SimpleTES framework, improving the best result from ~1.14 to 1.21. However, this hit a wall — as set size grew, computational and memory costs escalated rapidly, and numerical results could not naturally transition to provable asymptotic constructions.
Phase 2: Natural Language Construction (Mathematical Discovery) The research team changed strategy — they allowed the agent to propose mathematical constructions and arguments in natural language, rather than generating only numerical lists. GPT-5.6 Sol served as an LLM Judge for exploration feedback, but Hyra independently proposed the core insight.
After approximately 24 hours of operation, Hyra proposed the paper’s core construction: leveraging a base-12 digit structure to control difference set size, combined with symmetric additive bases in cyclic groups and the Chinese Remainder Theorem to drive sumset growth at near-quadratic rates.
3. Mathematical Construction Deep Dive: Base-12 and CRT
3.1 Intuition Behind the Construction
Hyra’s core insight: To control the size of the difference set, we need a “sparse” representation where differences between different elements tend to fall on different “digits,” producing extensive overlap. Meanwhile, the sumset leverages the Chinese Remainder Theorem to combine results across different moduli, generating many distinct outcomes.
3.2 Four-Layer Nested Structure
The construction consists of four progressively nested layers:
Layer 1: Base-12 Digit Components
┌─────────────────────────────────────────┐
│ Each digit d ∈ {0,1,...,11} │
│ Represented as length-K binary string: │
│ B_d = {2^{12K} · (12·i + d)} │
│ where i ranges over a selected interval│
│ Property: same-digit differences are │
│ concentrated in lower-bit ranges │
└─────────────────────────────────────────┘
↓
Layer 2: Carry Automaton for Difference Set Estimation
┌─────────────────────────────────────────┐
│ Cross-digit differences require │
│ "borrow" effect analysis │
│ Via base-12 carry automaton: │
│ |A-A| ≈ O(|A|) │
│ Difference set expansion δ(A) is │
│ effectively controlled │
└─────────────────────────────────────────┘
↓
Layer 3: Symmetric Additive Bases in Cyclic Groups
┌─────────────────────────────────────────┐
│ Construct symmetric additive bases │
│ in cyclic group Z_{M}: │
│ B = {±g_1, ±g_2, ..., ±g_t} │
│ k-fold sumset fills the group rapidly: │
│ |k·B| ≈ min(M, (2t+1)^k) │
└─────────────────────────────────────────┘
↓
Layer 4: CRT Assembly
┌─────────────────────────────────────────┐
│ Select coprime moduli M_1,...,M_r │
│ Construct additive bases for each │
│ Combine via CRT: │
│ Sumset grows at near-quadratic rate │
│ σ(A) ≈ δ(A)^{2-ε} for any ε>0 │
└─────────────────────────────────────────┘
3.3 Why Base-12?
Why base-12 rather than binary or decimal? This was Hyra’s key design choice.
Mathematical intuition: Base-12 factorization ((12 = 2^2 \times 3)) provides richer carry structure than binary (factor 2 only). In difference set analysis, carry/borrow mechanisms are essential for precisely controlling the number of distinct differences between digits.
Specifically, let the elements of (A_K) be represented in base-12:
[ A_K = \left{ \sum_{j=0}^{L-1} d_j \cdot 12^{j} ;\middle|; d_j \in D \subset {0,1,\ldots,11} \right} ]
where (D) is a carefully chosen digit subset such that:
- Differences (d_i - d_j) produce specific “borrow patterns” in base-12
- These patterns cause the difference set to be much smaller than the sumset
3.4 Chinese Remainder Theorem Application
Theorem (Chinese Remainder Theorem): Let (n_1, n_2, \ldots, n_k) be pairwise coprime. Then for any integers (a_1, a_2, \ldots, a_k), the system
[ x \equiv a_i \pmod{n_i}, \quad i=1,2,\ldots,k ]
has a unique solution modulo (N = n_1 n_2 \cdots n_k).
Hyra’s construction combines additive bases from multiple cyclic groups via CRT:
Construction Steps:
- Select coprime moduli (M_1, M_2, \ldots, M_r)
- Construct symmetric additive bases in each cyclic group (\mathbb{Z}_{M_i})
- Uniquely map each element to (\mathbb{Z}_{M_1 M_2 \cdots M_r}) via CRT
- The sumset size of the combined set approximately equals the product of component sumset sizes
This design drives sumset growth near the quadratic rate, while difference set growth remains approximately linear due to the base-12 structure.
4. Code Implementation
4.1 Python: Base-12 Construction with CRT Combination
"""
Hyra Core Construction: Base-12 Digit Structure with CRT
Core algorithms for the sum-difference set construction
"""
import math
from typing import List, Set, Tuple
from itertools import product
import numpy as np
def chinese_remainder_theorem(remainders: List[int], moduli: List[int]) -> int:
"""
Chinese Remainder Theorem implementation
Solve x ≡ remainders[i] (mod moduli[i])
"""
M = 1
for m in moduli:
M *= m
result = 0
for a_i, m_i in zip(remainders, moduli):
M_i = M // m_i
inv = pow(M_i, -1, m_i)
result = (result + a_i * M_i * inv) % M
return result
def construct_base12_digit_set(K: int, digit_subset: List[int]) -> List[int]:
"""
Construct base-12 digit components
Args:
K: representation length per digit
digit_subset: allowed base-12 digits
Returns:
constructed integer set
"""
if not digit_subset:
digit_subset = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
base = 12
result = []
for digits in product(digit_subset, repeat=K):
value = 0
for i, d in enumerate(digits):
value += d * (base ** i)
result.append(value)
return result
def compute_sumset(A: Set[int]) -> Set[int]:
"""Compute sumset A+A"""
result = set()
for a in A:
for b in A:
result.add(a + b)
return result
def compute_diffset(A: Set[int]) -> Set[int]:
"""Compute difference set A-A"""
result = set()
for a in A:
for b in A:
result.add(a - b)
return result
def compute_exponent(A: Set[int]) -> float:
"""
Compute C(A) = log σ(A) / log δ(A)
where σ(A) = |A+A|/|A|, δ(A) = |A-A|/|A|
"""
n = len(A)
sumset = compute_sumset(A)
diffset = compute_diffset(A)
sigma = len(sumset) / n
delta = len(diffset) / n
if sigma <= 1 or delta <= 1:
return 0.0
return math.log(sigma) / math.log(delta)
def construct_crt_additive_basis(moduli: List[int], basis_size: int) -> Tuple[List[int], List[int]]:
"""
Construct symmetric additive bases using CRT
Args:
moduli: coprime moduli list
basis_size: basis size per cyclic group
Returns:
(crt_elements, group_sizes)
"""
group_bases = []
for m in moduli:
base = []
for i in range(1, basis_size + 1):
base.append(i % m)
base.append((-i) % m)
group_bases.append(base)
crt_elements = []
for combo in product(*group_bases):
element = chinese_remainder_theorem(list(combo), moduli)
crt_elements.append(element)
return crt_elements, moduli
def construct_hyra_family(K: int, epsilon: float) -> List[int]:
"""
Construct the Hyra paper's set family A_K
Args:
K: scale parameter (higher → closer to 2)
epsilon: target precision
Returns:
constructed set A_K
"""
base = 12
# Carefully chosen digit subset for difference set control
digit_subset = [0, 1, 4, 5, 8, 9]
core = construct_base12_digit_set(K, digit_subset)
# CRT modulus selection
moduli = [2 * K + 1, 3 * K + 1, 5 * K + 1]
moduli = [m for m in moduli if all(
math.gcd(m, m2) == 1 for m2 in moduli if m2 != m
)]
basis_size = int(math.log(K) * 2)
crt_elements, _ = construct_crt_additive_basis(moduli, basis_size)
result = []
scale = 12 ** (K + 1)
for c in core:
for b in crt_elements[:min(len(crt_elements), K)]:
result.append(c + scale * b)
return result
def demonstrate_convergence(max_K: int = 6) -> None:
"""
Demonstrate C(A_K) converging to 2 as K increases
"""
print(f"{'K':>3} | {'|A|':>8} | {'|A+A|':>10} | {'|A-A|':>10} | {'C(A)':>10}")
print("-" * 50)
for K in range(1, max_K + 1):
A = construct_hyra_family(K, 0.01)
A_set = set(A[:min(len(A), 2000)])
C = compute_exponent(A_set)
sumset = compute_sumset(A_set)
diffset = compute_diffset(A_set)
print(f"{K:>3} | {len(A_set):>8} | {len(sumset):>10} | "
f"{len(diffset):>10} | {C:>10.6f}")
if __name__ == "__main__":
A_small = [1, 2, 4, 8, 16, 32]
print(f"Sample set A = {A_small}")
print(f"|A| = {len(A_small)}")
print(f"|A+A| = {len(compute_sumset(set(A_small)))}")
print(f"|A-A| = {len(compute_diffset(set(A_small)))}")
print(f"C(A) = {compute_exponent(set(A_small)):.6f}")
print()
print("Convergence demonstration (simplified):")
demonstrate_convergence(5)
4.2 Go: High-Performance Sum-Difference Computation
// hyra_construction.go
// High-performance Go implementation of Hyra's core construction
// for large-scale sumset and difference set computation
package main
import (
"fmt"
"math"
"math/big"
)
// ChineseRemainder implements the Chinese Remainder Theorem
func ChineseRemainder(remainders []int64, moduli []int64) int64 {
M := int64(1)
for _, m := range moduli {
M *= m
}
result := int64(0)
for i, a := range remainders {
Mi := M / moduli[i]
inv := modInverse(Mi, moduli[i])
result = (result + a*Mi*inv) % M
}
return result
}
// modInverse computes modular inverse (extended Euclidean algorithm)
func modInverse(a, m int64) int64 {
g, x, _ := extendedGCD(a, m)
if g != 1 {
return 0
}
return (x%m + m) % m
}
func extendedGCD(a, b int64) (int64, int64, int64) {
if b == 0 {
return a, 1, 0
}
g, x1, y1 := extendedGCD(b, a%b)
return g, y1, x1 - (a/b)*y1
}
// Base12Digit represents a base-12 number structure
type Base12Digit struct {
Digits []int8
Length int
}
func NewBase12Number(value int64) *Base12Digit {
digits := make([]int8, 0)
for value > 0 {
digits = append(digits, int8(value%12))
value /= 12
}
return &Base12Digit{
Digits: digits,
Length: len(digits),
}
}
func (b *Base12Digit) ToInt64() int64 {
result := int64(0)
base := int64(1)
for _, d := range b.Digits {
result += int64(d) * base
base *= 12
}
return result
}
// Subtract computes base-12 difference with borrow analysis
func (b *Base12Digit) Subtract(other *Base12Digit) (*Base12Digit, int) {
maxLen := b.Length
if other.Length > maxLen {
maxLen = other.Length
}
result := make([]int8, maxLen)
borrowCount := 0
borrow := int8(0)
for i := 0; i < maxLen; i++ {
a := int8(0)
if i < b.Length {
a = b.Digits[i]
}
bb := int8(0)
if i < other.Length {
bb = other.Digits[i]
}
diff := a - bb - borrow
if diff < 0 {
diff += 12
borrow = 1
borrowCount++
} else {
borrow = 0
}
result[i] = diff
}
return &Base12Digit{Digits: result, Length: maxLen}, borrowCount
}
// SumsetCalculator handles sumset and difference set computation
type SumsetCalculator struct {
Elements []int64
ElementSet map[int64]bool
SumCache map[int64]bool
DiffCache map[int64]bool
}
func NewSumsetCalculator(elements []int64) *SumsetCalculator {
elementSet := make(map[int64]bool)
for _, e := range elements {
elementSet[e] = true
}
return &SumsetCalculator{
Elements: elements,
ElementSet: elementSet,
SumCache: make(map[int64]bool),
DiffCache: make(map[int64]bool),
}
}
func (sc *SumsetCalculator) ComputeSumset() []int64 {
for _, a := range sc.Elements {
for _, b := range sc.Elements {
sc.SumCache[a+b] = true
}
}
result := make([]int64, 0, len(sc.SumCache))
for k := range sc.SumCache {
result = append(result, k)
}
return result
}
func (sc *SumsetCalculator) ComputeDiffset() []int64 {
for _, a := range sc.Elements {
for _, b := range sc.Elements {
sc.DiffCache[a-b] = true
}
}
result := make([]int64, 0, len(sc.DiffCache))
for k := range sc.DiffCache {
result = append(result, k)
}
return result
}
func (sc *SumsetCalculator) ComputeExponent() float64 {
n := float64(len(sc.Elements))
sumset := sc.ComputeSumset()
diffset := sc.ComputeDiffset()
sigma := float64(len(sumset)) / n
delta := float64(len(diffset)) / n
if sigma <= 1 || delta <= 1 {
return 0
}
return math.Log(sigma) / math.Log(delta)
}
// CRTAdditiveBasis manages CRT-based additive basis construction
type CRTAdditiveBasis struct {
Moduli []int64
Bases [][]int64
Combined []int64
}
func NewCRTAdditiveBasis(moduli []int64, basisSize int) *CRTAdditiveBasis {
cb := &CRTAdditiveBasis{
Moduli: moduli,
Bases: make([][]int64, len(moduli)),
}
for i, m := range moduli {
base := make([]int64, 0, 2*basisSize)
for j := int64(1); j <= int64(basisSize); j++ {
base = append(base, j%m)
base = append(base, (-j)%m)
}
cb.Bases[i] = base
}
cb.combine()
return cb
}
func (cb *CRTAdditiveBasis) combine() {
cb.combineRecursive(0, make([]int64, len(cb.Moduli)))
}
func (cb *CRTAdditiveBasis) combineRecursive(depth int, current []int64) {
if depth == len(cb.Moduli) {
element := ChineseRemainder(current, cb.Moduli)
cb.Combined = append(cb.Combined, element)
return
}
for _, v := range cb.Bases[depth] {
current[depth] = v
cb.combineRecursive(depth+1, current)
}
}
func HyraFamily(K int, epsilon float64) []int64 {
digitSubset := []int8{0, 1, 4, 5, 8, 9}
core := make([]int64, 0)
generateBase12(&core, digitSubset, K, 0, 0)
moduli := []int64{
int64(2*K + 1),
int64(3*K + 1),
}
if gcd(moduli[0], moduli[1]) != 1 {
moduli[1] = int64(5*K + 1)
}
basisSize := int(math.Log(float64(K)) * 2)
if basisSize < 1 {
basisSize = 1
}
crtBasis := NewCRTAdditiveBasis(moduli, basisSize)
scale := int64(math.Pow(12, float64(K+1)))
result := make([]int64, 0)
for _, c := range core {
crtLen := len(crtBasis.Combined)
limit := crtLen
if K < limit {
limit = K
}
for i := 0; i < limit; i++ {
result = append(result, c+scale*crtBasis.Combined[i])
}
}
return result
}
func generateBase12(result *[]int64, digits []int8, length int, pos int, current int64) {
if pos == length {
*result = append(*result, current)
return
}
for _, d := range digits {
generateBase12(result, digits, length, pos+1, current*12+int64(d))
}
}
func gcd(a, b int64) int64 {
for b != 0 {
a, b = b, a%b
}
return a
}
func BigIntSumset(elements []*big.Int) []*big.Int {
seen := make(map[string]bool)
result := make([]*big.Int, 0)
for _, a := range elements {
for _, b := range elements {
sum := new(big.Int).Add(a, b)
key := sum.String()
if !seen[key] {
seen[key] = true
result = append(result, sum)
}
}
}
return result
}
func main() {
fmt.Println("=== Hyra Core Construction: Base-12 + CRT ===")
fmt.Println()
K := 3
A := HyraFamily(K, 0.01)
fmt.Printf("K=%d, |A|=%d\n", K, len(A))
fmt.Printf("First 10 elements: ")
for i := 0; i < 10 && i < len(A); i++ {
fmt.Printf("%d ", A[i])
}
fmt.Println()
calc := NewSumsetCalculator(A)
exponent := calc.ComputeExponent()
fmt.Printf("C(A) = %.6f\n", exponent)
fmt.Println("\n--- Base-12 Subtraction Analysis ---")
a := NewBase12Number(157)
b := NewBase12Number(85)
fmt.Printf("157 in base-12: %v\n", a.Digits)
fmt.Printf("85 in base-12: %v\n", b.Digits)
diff, borrows := a.Subtract(b)
fmt.Printf("Difference: %v, Borrow count: %d\n", diff.Digits, borrows)
fmt.Printf("Diff value: %d\n", diff.ToInt64())
fmt.Println("\n--- Big Integer Sumset ---")
bigElems := []*big.Int{
big.NewInt(1),
big.NewInt(12),
big.NewInt(144),
big.NewInt(1728),
}
sumset := BigIntSumset(bigElems)
fmt.Printf("BigInt sumset size: %d\n", len(sumset))
}
4.3 Verification Script
"""
Verification script: Check mathematical properties of Hyra's construction
"""
import math
import random
from typing import Set, List
def verify_sum_diff_inequality(A: Set[int]) -> bool:
"""Verify σ(A)^{1/2} ≤ δ(A) ≤ σ(A)^2"""
n = len(A)
sumset = set()
diffset = set()
for a in A:
for b in A:
sumset.add(a + b)
diffset.add(a - b)
sigma = len(sumset) / n
delta = len(diffset) / n
lower_bound = math.sqrt(sigma) - 1e-10
upper_bound = sigma ** 2 + 1e-10
return lower_bound <= delta <= upper_bound
def check_monotonic_convergence(constructor, K_values: List[int]) -> List[float]:
"""Check if C(A_K) monotonically increases toward 2"""
exponents = []
for K in K_values:
A = constructor(K)
A_set = set(A[:min(len(A), 5000)])
C = compute_exponent(A_set)
exponents.append(C)
print(f"K={K}: |A|={len(A_set)}, C(A)={C:.6f}")
for i in range(1, len(exponents)):
if exponents[i] < exponents[i-1] - 0.01:
print(f"WARNING: Non-monotonic at K={K_values[i]}")
return exponents
def compute_exponent(A: Set[int]) -> float:
n = len(A)
sumset = set()
diffset = set()
for a in A:
for b in A:
sumset.add(a + b)
diffset.add(a - b)
sigma = len(sumset) / n
delta = len(diffset) / n
if sigma <= 1 or delta <= 1:
return 0.0
return math.log(sigma) / math.log(delta)
def random_search_benchmark(trials: int = 1000, max_size: int = 100) -> float:
"""Random search baseline: best exponent achievable by random sets"""
best = 0.0
best_set = None
for t in range(trials):
size = random.randint(10, max_size)
A = set(random.sample(range(0, 10000), size))
C = compute_exponent(A)
if C > best:
best = C
best_set = A
print(f"Random search ({trials} trials) best: C(A) = {best:.6f}")
return best
def main():
print("=" * 60)
print("Hyra Construction Verification")
print("=" * 60)
print("\n[Test 1] Sum-Difference Inequality Check")
test_sets = [
{1, 2, 3, 4, 5},
{1, 3, 5, 7, 9},
{1, 2, 4, 8, 16},
set(range(0, 50, 3)),
]
for i, A in enumerate(test_sets):
ok = verify_sum_diff_inequality(A)
C = compute_exponent(A)
print(f" Set{i+1}: C={C:.6f}, Inequality={'✓' if ok else '✗'}")
print("\n[Test 2] Random Search Baseline")
random_search_benchmark(500, 50)
print("\n[Test 3] Base-12 Difference Analysis")
from collections import Counter
digits = [0, 1, 4, 5, 8, 9]
cross_diff = Counter()
for d1 in digits:
for d2 in digits:
diff = (d1 - d2) % 12
if d1 != d2:
cross_diff[diff] += 1
print(f" Cross-digit distinct differences: {len(cross_diff)}")
print(f" Compression ratio: {len(cross_diff) / (len(digits)**2):.4f}")
print("\n" + "=" * 60)
print("Verification Complete")
print("=" * 60)
if __name__ == "__main__":
main()
5. Hyra vs OpenAI Astra: The Open-Source vs Closed-Source Research Paradigm
5.1 Comparison Overview
| Dimension | Hyra (Tencent) | Astra (OpenAI) |
|---|---|---|
| Base Model | Hy3 (295B MoE, 21B active) | Undisclosed (internal) |
| Open Source | ✅ Apache 2.0 fully open | ❌ Closed, limited access |
| Self-Hostable | ✅ 8 GPUs sufficient | ❌ OpenAI cloud only |
| Math Results | 1 core problem (sum-diff supremum) | 10 problems (with Lean proofs) |
| Output Form | Construction family + proof + Lean 4 | 10 independent proofs + Lean 4 |
| Research Cost | ~24 hours single agent | ~$2,000 token cost |
| 3rd Party Verification | Thomas Bloom: confirmed correct | Pending peer review |
| Agent Authorship | ✅ Listed as 3rd author | ❌ Not listed as author |
| Research Paradigm | Search → NL construction → human verify | Multi-agent orchestration → generate → formalize |
5.2 Why Hyra’s Breakthrough is Paradigm-Shifting
Thomas Bloom — a University of Manchester mathematician known for being one of the most meticulous reviewers of high-profile AI mathematics claims — gave Hyra’s result a clear verdict: the result is correct. Remarkably, he listed Hyra as the third author of the paper (“Lin, Li, and Hyra”), a rare instance of an AI agent receiving co-authorship on a mathematical preprint.
Bloom further demonstrated that the same method works for a whole class of sum-difference combinations, and negatively answered Ruzi’s old question about whether the inequality (\delta \leq \sigma^2) could be improved by even a logarithmic factor.
In contrast, while Astra’s 10 mathematical results are more numerous, the core criticism remains: the model is non-reproducible, non-auditable, and non-deployable independently. As the Leiden Declaration (endorsed by the International Mathematical Union) requires — AI-assisted mathematics must disclose the tools used, computational resources, and humans must remain responsible for correctness. Astra fails to meet this standard.
5.3 The Open-Source “Catch-Up” Moment
Hy3’s Apache 2.0 license means:
- ✅ Anyone can download the weights (295B total, 21B active)
- ✅ Can run on their own 8-GPU cluster
- ✅ Can audit, modify, and redistribute
- ✅ Commercially friendly, no geographic restrictions
- ✅ API: $0.14/$0.58 per million tokens (input/output)
Astra remains locked in OpenAI’s walled garden.
This marks a crucial inflection point: open-source models are rapidly approaching — and in some areas surpassing — closed-source products at the frontier of scientific research. The “mathematical reasoning” advantage once held exclusively by closed models is being eroded by the open-source community at an accelerating pace.
6. The New Research Agent Paradigm: AI for Science’s Next Stage
6.1 Lessons from Hyra
Hyra’s success demonstrates a new paradigm for research agents:
From “Search” to “Discovery”: Hyra didn’t merely search existing knowledge — it proposed new mathematical constructions in natural language. This is a qualitative leap from “tool” to “collaborator.”
Open-Source Model + Agent Framework Synergy: Hy3’s MoE architecture (192 experts, top-8 routing) provides powerful reasoning, while Hyra’s recursive self-improvement framework adds a “propose-verify-iterate” research loop.
Formal Verification Closure: The Lean 4 formal proof provides a verifiable “fuse” for AI’s mathematical discoveries — human mathematicians can trust the result because every reasoning step is machine-checked.
6.2 Yao Shunyu’s AI for Science Recruitment
Tencent’s Chief AI Scientist Yao Shunyu immediately posted a public recruitment call for AI for Science talent after Hyra’s results were announced. His “JD” was a single image — Hyra’s research scorecard:
- 29 out of 55 open math problems achieved new best-known results
- Discovered predictive formula from century-old sunspot data (R²=0.77)
- 15-parameter Transformer for 10-digit addition (58.3% fewer parameters)
- Quantum qubit routing algorithm (44.4% efficiency improvement)
- PARP1 candidate molecules with drug-likeness scores exceeding marketed olaparib
This data makes clear: Tencent Hy is aiming for the next level of AI research — full automation. Let AI propose solutions, run experiments, read results, and continue iterating.
6.3 Future Outlook
The success of Hyra and Hy3 heralds a new paradigm for scientific research:
Traditional Research: Human asks → Human designs → Human analyzes → Human concludes
↓
AI-Assisted Research: Human asks → AI searches/optimizes → Human analyzes → Human concludes
↓
Research Agent: Human sets goal → Agent explores → Verified → Human confirms → Knowledge
↓
Future Heterogeneous: Multi-Agent → Cross-disciplinary → Auto-verify → Self-iterate → Knowledge evolution
7. Conclusion
Tencent Hyra’s resolution of a 50-year-old additive combinatorics problem using the open-source Hy3 model is one of the most significant AI milestones of 2026. Its importance extends far beyond solving a single mathematical puzzle — it proves that:
- Open-source models can compete with closed-source systems at the frontier of fundamental research — and in some dimensions, surpass them
- The “recursive self-improvement” paradigm for research agents is viable — from numerical search to mathematical construction, agents can achieve qualitative leaps
- The combination of base-12 structure and the Chinese Remainder Theorem demonstrates that AI can discover elegant constructions that human mathematicians had overlooked
As Thomas Bloom noted: “Hyra’s contribution is real and verifiable.” When AI begins to participate in mathematical research as a collaborator rather than a tool, we are witnessing a fundamental transformation in how science is conducted.
References:
- Paper: https://arxiv.org/abs/2607.27199
- Lean 4 formal proof: https://github.com/linhaowei1/sum-diff-proof
- Hy3 Model: https://github.com/Tencent-Hunyuan/Hy3
- Hyra Announcement: https://hy.tencent.com/research/hyra
- Thomas Bloom’s commentary: https://erdosproblems.com