"The Goldbach conjecture holds for every even integer greater than 2."

mathematics · generated 2026-03-28 · v0.10.0
UNDETERMINED pure computation — no citations
Verified by computation — no external sources required.
Verified by Proof Engine — an open-source tool that verifies claims using cited sources and executable code. Reasoning transparent and auditable.
methodology · github · re-run this proof · submit your own

One of mathematics' oldest unsolved problems remains exactly that — unsolved. Computation can build evidence, but it cannot close an infinite question.

What Was Claimed?

The Goldbach conjecture, first proposed in 1742, asserts that every even number greater than 2 can be written as the sum of two prime numbers. For example, 4 = 2 + 2, 6 = 3 + 3, 28 = 5 + 23. It sounds simple enough to state in a single sentence, yet no one has ever proved — or disproved — that it holds for every even number without exception. People encounter this claim in popular mathematics, puzzle books, and viral posts, often presented as if it were either obvious or secretly settled.

What Did We Find?

We checked every even integer from 4 up to one million — that's 499,999 numbers — and found zero counterexamples. Every single one could be expressed as the sum of two primes. This was done using two completely independent computational methods: one that tests primality on demand for each candidate pair, and one that pre-generates all primes up to a million and uses fast set lookups. Both methods produced identical results, which rules out a bug in either approach causing a false confirmation.

This is not a small feat of computation. A counterexample would be genuinely newsworthy, and none has ever been found. The broader mathematical community has pushed verification far beyond our one-million bound: as of 2013, Oliveira e Silva had confirmed the conjecture holds up to 4 × 10¹⁸ — four quintillion — and the Gridbach project has extended this further still.

We also searched for any reported counterexample or accepted proof, and found neither. Several non-peer-reviewed papers have claimed proofs in recent years, but none has been accepted by mainstream mathematics. As of early 2026, the conjecture is listed as an open problem by every major mathematical reference.

The fundamental issue is not the quality of computation but the nature of the claim. No finite check, however large, can verify a statement about infinitely many numbers. Even if someone verified every even integer up to a googol, there could still be a counterexample beyond that point. That gap between "verified for all cases checked" and "true for all cases that exist" is precisely what makes this UNDETERMINED rather than SUPPORTED or PROVED.

What Should You Keep In Mind?

The UNDETERMINED verdict reflects the structure of the problem, not a weakness in the evidence. In fact, the computational evidence is unusually strong — hundreds of years of searching, billions of cases checked, no counterexample ever found. But mathematical proof requires certainty over an infinite domain, and computation alone cannot provide that.

It is also worth noting that the absence of a counterexample is not the same as the conjecture being "almost certainly true" in a way that should satisfy a skeptic. History contains examples of conjectures that held for enormous ranges before finally failing. Mathematicians take this possibility seriously, even for Goldbach.

Finally, the claimed proofs circulating in non-peer-reviewed venues should not be taken as evidence that the problem is close to being settled. The mathematical community has clear standards for what counts as a proof, and none of these have met them.

How Was This Verified?

This investigation ran two independent computational checks across all 499,999 even integers in the range [4, 1,000,000], and conducted adversarial searches for counterexamples and accepted proofs in the mathematical literature. Full details of the evidence and logic are in the structured proof report, the complete step-by-step methodology is documented in the full verification audit, and you can re-run the proof yourself.

What could challenge this verdict?

  1. Has any counterexample ever been found? Searched for "Goldbach conjecture counterexample found disproved." Reviewed Wikipedia, Physics Forums, Medium, and LessWrong. No counterexample has ever been reported in the literature or computational records.

  2. Has the conjecture been formally proved or disproved? Searched for "Goldbach conjecture proof solved 2024 2025 2026." Found several claimed proofs in non-peer-reviewed venues (SSRN, SCIRP, preprints.org, ScienceOpen) but none accepted by mainstream mathematics. The conjecture remains open.

  3. What is the current verification bound? Oliveira e Silva verified the conjecture up to 4 x 10^18 (2013). The Gridbach project (2025) extended this further. Our 10^6 bound is far below the literature record but uses two independent methods for internal consistency.

Source: proof.py JSON summary

detailed evidence

Detailed Evidence

Evidence Summary

ID Fact Verified
A1 Primary check: counterexamples in [4, 10^6] via trial division Computed: 0 counterexamples found (conjecture holds for all 499,999 even integers tested)
A2 Cross-check: counterexamples in [4, 10^6] via prime-pair sieve Computed: 0 counterexamples found (independent confirmation)

Source: proof.py JSON summary

Proof Logic

The proof applies two independent computational methods to every even integer in [4, 1,000,000]:

Method 1 — Trial Division (A1): For each even n, iterate candidate primes p from 2 to n/2. For each p, test whether both p and (n - p) are prime using sympy.isprime(). If any such pair exists, n satisfies the conjecture. This method tests primality on demand for each candidate.

Method 2 — Prime Sieve (A2): Pre-generate all primes up to 10^6 using sympy.primerange() (Sieve of Eratosthenes). Store them in a sorted list (for ordered iteration) and a set (for O(1) membership lookup). For each even n, iterate the sorted prime list up to n/2 and check whether (n - p) is in the prime set.

The two methods are structurally independent: Method 1 uses per-number primality testing; Method 2 uses a pre-computed sieve with set membership. A bug in one algorithm would not propagate to the other.

Both methods found 0 counterexamples across all 499,999 even integers, and their results agree exactly.

However, there are infinitely many even integers greater than 2, and no finite computation can verify them all. The conjecture remains unproven.

Conclusion

Verdict: UNDETERMINED

The Goldbach conjecture has been computationally verified for all 499,999 even integers in [4, 1,000,000] by two independent methods (A1, A2), with 0 counterexamples found. The literature confirms verification up to 4 x 10^18 with no counterexample ever discovered.

Nevertheless, this is a universal conjecture over infinitely many integers, and no finite computation can constitute a proof. No accepted mathematical proof exists as of March 2026. To resolve this claim, a formal mathematical proof (or a counterexample) would be required.

audit trail

Claim Specification
Field Value
Subject Goldbach conjecture
Property counterexamples in range [4, 10^6]
Operator ==
Threshold 0
Claim type open_problem
Operator note The Goldbach conjecture asserts that every even integer > 2 is the sum of two primes. This is an unresolved conjecture — no proof or disproof exists as of 2026. Computational verification up to a finite bound provides evidence but cannot prove the claim for all even integers. The literature records verification up to 4 x 10^18 (Oliveira e Silva, 2013). Our script verifies up to 10^6 with two independent methods. Verdict is always UNDETERMINED regardless of computational outcome.

Source: proof.py JSON summary

Claim Interpretation

Natural language: "The Goldbach conjecture holds for every even integer greater than 2."

Formal interpretation: The Goldbach conjecture asserts that every even integer greater than 2 can be expressed as the sum of two prime numbers. This is a universal claim over an infinite domain. The formal check counts the number of counterexamples in [4, 10^6] and compares to 0 (operator: ==, threshold: 0).

Operator note: This is an unresolved conjecture. Computational verification up to a finite bound provides evidence but cannot prove the claim for all even integers. The verdict is always UNDETERMINED regardless of computational outcome.

Claim type: Open problem.

Computation Traces
even integers checked: (VERIFICATION_BOUND - 4) // 2 + 1 = (1000000 - 4) // 2 + 1 = 499999
trial division vs prime sieve counterexample count: 0 == 0 = True
no counterexamples in [4, 1000000]: 0 == 0 = True

Source: proof.py inline output (execution trace)

Adversarial Checks

Check 1: Has any counterexample to Goldbach's conjecture ever been found?

  • Verification performed: Searched: 'Goldbach conjecture counterexample found disproved'. Reviewed Wikipedia, Physics Forums, Medium articles, and LessWrong. No counterexample has ever been reported.
  • Finding: No counterexample exists in the literature or computational records.
  • Breaks proof: No

Check 2: Has the Goldbach conjecture been formally proved or disproved?

  • Verification performed: Searched: 'Goldbach conjecture proof solved 2024 2025 2026'. Found several claimed proofs in non-peer-reviewed venues (SSRN, SCIRP, preprints.org, ScienceOpen) but none accepted by the mainstream mathematical community. The conjecture remains open as of March 2026.
  • Finding: No universally accepted proof or disproof exists. The conjecture is listed as an open problem by all major references.
  • Breaks proof: No

Check 3: What is the current computational verification bound?

  • Verification performed: Searched: 'Goldbach conjecture verified computational bound 2026'. Oliveira e Silva verified up to 4 x 10^18 (2013). The Gridbach project (2025) extended this further. A March 2025 preprint reports empirical verification beyond 4 quintillion.
  • Finding: Verified computationally up to at least 4 x 10^18. Our 10^6 bound is far below the literature record but uses two independent methods.
  • Breaks proof: No

Source: proof.py JSON summary

Quality Checks
  • Rule 1: N/A — pure computation, no empirical facts.
  • Rule 2: N/A — pure computation, no empirical facts.
  • Rule 3: N/A — no time-dependent logic in this proof.
  • Rule 4: CLAIM_FORMAL with operator_note explicitly documents that this is an open problem, the operator choice (== 0 counterexamples), and that the verdict is always UNDETERMINED.
  • Rule 5: Three adversarial checks performed: searched for counterexamples, proof claims, and current verification bounds. None break the proof.
  • Rule 6: N/A — pure computation, no empirical facts. Cross-check uses a mathematically independent algorithm (trial division vs. prime sieve).
  • Rule 7: Computations use compare() and explain_calc() from scripts/computations.py. No hard-coded constants or inline formulas.
  • validate_proof.py result: PASS (13/13 checks passed, 0 issues, 0 warnings)
Cite this proof
Proof Engine. (2026). Claim Verification: “The Goldbach conjecture holds for every even integer greater than 2.” — Undetermined. https://proofengine.info/proofs/the-goldbach-conjecture-holds-for-every-even-integ/
Proof Engine. "Claim Verification: “The Goldbach conjecture holds for every even integer greater than 2.” — Undetermined." 2026. https://proofengine.info/proofs/the-goldbach-conjecture-holds-for-every-even-integ/.
@misc{proofengine_the_goldbach_conjecture_holds_for_every_even_integ,
  title   = {Claim Verification: “The Goldbach conjecture holds for every even integer greater than 2.” — Undetermined},
  author  = {{Proof Engine}},
  year    = {2026},
  url     = {https://proofengine.info/proofs/the-goldbach-conjecture-holds-for-every-even-integ/},
  note    = {Verdict: UNDETERMINED. Generated by proof-engine v0.10.0},
}
TY  - DATA
TI  - Claim Verification: “The Goldbach conjecture holds for every even integer greater than 2.” — Undetermined
AU  - Proof Engine
PY  - 2026
UR  - https://proofengine.info/proofs/the-goldbach-conjecture-holds-for-every-even-integ/
N1  - Verdict: UNDETERMINED. Generated by proof-engine v0.10.0
ER  -
View proof source 290 lines · 11.1 KB

This is the proof.py that produced the verdict above. Every fact traces to code below. (This proof has not yet been minted to Zenodo; the source here is the working copy from this repository.)

#!/usr/bin/env python3
"""
Proof Engine — Open Problem: Goldbach Conjecture
Claim: The Goldbach conjecture holds for every even integer greater than 2.

This is an OPEN PROBLEM. Computational verification up to a finite bound
provides evidence but cannot prove the universal claim.
Verdict is always UNDETERMINED.
"""

import os
import sys
import json
from datetime import date
from sympy import isprime, primerange

PROOF_ENGINE_ROOT = os.environ.get("PROOF_ENGINE_ROOT")
if not PROOF_ENGINE_ROOT:
    _d = os.path.dirname(os.path.abspath(__file__))
    while _d != os.path.dirname(_d):
        if os.path.isdir(os.path.join(_d, "proof-engine", "skills", "proof-engine", "scripts")):
            PROOF_ENGINE_ROOT = os.path.join(_d, "proof-engine", "skills", "proof-engine")
            break
        _d = os.path.dirname(_d)
    if not PROOF_ENGINE_ROOT:
        raise RuntimeError("PROOF_ENGINE_ROOT not set and skill dir not found via walk-up from proof.py")
sys.path.insert(0, PROOF_ENGINE_ROOT)

from scripts.computations import compare, explain_calc

# ============================================================
# 1. CLAIM
# ============================================================

CLAIM_NATURAL = "The Goldbach conjecture holds for every even integer greater than 2."

CLAIM_FORMAL = {
    "subject": "Goldbach conjecture",
    "property": "counterexamples in range [4, 10^6]",
    "operator": "==",
    "threshold": 0,
    "claim_type": "open_problem",
    "operator_note": (
        "The Goldbach conjecture asserts that every even integer > 2 is the sum "
        "of two primes. This is an unresolved conjecture — no proof or disproof "
        "exists as of 2026. Computational verification up to a finite bound "
        "provides evidence but cannot prove the claim for all even integers. "
        "The literature records verification up to 4 x 10^18 (Oliveira e Silva, 2013). "
        "Our script verifies up to 10^6 with two independent methods. "
        "Verdict is always UNDETERMINED regardless of computational outcome."
    ),
}

VERIFICATION_BOUND = 10**6

# ============================================================
# 2. FACT REGISTRY
# ============================================================

FACT_REGISTRY = {
    "A1": {
        "label": "Primary check: counterexamples in [4, 10^6] via trial division",
        "type": "A",
        "key": "primary_check",
        "method": "",
        "result": "",
    },
    "A2": {
        "label": "Cross-check: counterexamples in [4, 10^6] via prime-pair sieve",
        "type": "A",
        "key": "cross_check",
        "method": "",
        "result": "",
    },
}

# ============================================================
# 3. PRIMARY COMPUTATION (Method 1: Trial Division)
# ============================================================

def goldbach_trial_division(bound):
    """For each even n in [4, bound], check if n = p + (n-p) where both are prime.
    Uses sympy.isprime for primality testing on each candidate."""
    counterexamples = []
    for n in range(4, bound + 1, 2):
        found_pair = False
        for p in range(2, n // 2 + 1):
            if isprime(p) and isprime(n - p):
                found_pair = True
                break
        if not found_pair:
            counterexamples.append(n)
    return counterexamples

# ============================================================
# 4. CROSS-CHECK (Method 2: Prime Sieve + Pair Check)
# ============================================================

def goldbach_prime_sieve(bound):
    """Generate all primes up to bound via sympy.primerange (sieve of Eratosthenes),
    then for each even n check if any prime p <= n/2 has (n-p) also in the prime set.
    Structurally independent: uses a pre-built set instead of per-candidate isprime()."""
    prime_list = sorted(primerange(2, bound))  # sorted list for ordered iteration
    prime_set = set(prime_list)                 # set for O(1) membership lookup
    counterexamples = []
    for n in range(4, bound + 1, 2):
        found_pair = False
        for p in prime_list:
            if p > n // 2:
                break
            if (n - p) in prime_set:
                found_pair = True
                break
        if not found_pair:
            counterexamples.append(n)
    return counterexamples

# ============================================================
# 5. ADVERSARIAL CHECKS (Rule 5)
# ============================================================

adversarial_checks = [
    {
        "question": "Has any counterexample to Goldbach's conjecture ever been found?",
        "verification_performed": (
            "Searched: 'Goldbach conjecture counterexample found disproved'. "
            "Reviewed Wikipedia, Physics Forums, Medium articles, and LessWrong. "
            "No counterexample has ever been reported."
        ),
        "finding": "No counterexample exists in the literature or computational records.",
        "breaks_proof": False,
    },
    {
        "question": "Has the Goldbach conjecture been formally proved or disproved?",
        "verification_performed": (
            "Searched: 'Goldbach conjecture proof solved 2024 2025 2026'. "
            "Found several claimed proofs in non-peer-reviewed venues (SSRN, SCIRP, "
            "preprints.org, ScienceOpen) but none accepted by the mainstream "
            "mathematical community. The conjecture remains open as of March 2026."
        ),
        "finding": (
            "No universally accepted proof or disproof exists. "
            "The conjecture is listed as an open problem by all major references."
        ),
        "breaks_proof": False,
    },
    {
        "question": "What is the current computational verification bound?",
        "verification_performed": (
            "Searched: 'Goldbach conjecture verified computational bound 2026'. "
            "Oliveira e Silva verified up to 4 x 10^18 (2013). "
            "The Gridbach project (2025) extended this further. "
            "A March 2025 preprint reports empirical verification beyond 4 quintillion."
        ),
        "finding": (
            "Verified computationally up to at least 4 x 10^18. Our 10^6 bound is "
            "far below the literature record but uses two independent methods."
        ),
        "breaks_proof": False,
    },
]

# ============================================================
# 6. MAIN
# ============================================================

if __name__ == "__main__":
    print(f"Claim (natural): {CLAIM_NATURAL}")
    print(f"Claim (formal): counterexamples in [4, {VERIFICATION_BOUND}] == 0")
    print(f"Claim type: open_problem")
    print()

    # --- Primary computation ---
    print("=" * 60)
    print("PRIMARY CHECK: Trial division method")
    print("=" * 60)
    counterexamples_primary = goldbach_trial_division(VERIFICATION_BOUND)
    n_primary = len(counterexamples_primary)
    print(f"Checked all even integers in [4, {VERIFICATION_BOUND}]")
    n_even = explain_calc(
        "(VERIFICATION_BOUND - 4) // 2 + 1",
        {"VERIFICATION_BOUND": VERIFICATION_BOUND},
        label="even integers checked",
    )
    print(f"Counterexamples found (trial division): {n_primary}")
    print()

    # --- Cross-check computation ---
    print("=" * 60)
    print("CROSS-CHECK: Prime sieve method")
    print("=" * 60)
    counterexamples_sieve = goldbach_prime_sieve(VERIFICATION_BOUND)
    n_sieve = len(counterexamples_sieve)
    print(f"Checked all even integers in [4, {VERIFICATION_BOUND}]")
    print(f"Counterexamples found (prime sieve): {n_sieve}")
    print()

    # --- Cross-check agreement ---
    print("=" * 60)
    print("CROSS-CHECK AGREEMENT")
    print("=" * 60)
    methods_agree = compare(n_primary, "==", n_sieve,
                            label="trial division vs prime sieve counterexample count")
    print()

    # --- Adversarial checks ---
    print("=" * 60)
    print("ADVERSARIAL CHECKS")
    print("=" * 60)
    for i, ac in enumerate(adversarial_checks, 1):
        print(f"\nAdversarial check {i}: {ac['question']}")
        print(f"  Verification: {ac['verification_performed']}")
        print(f"  Finding: {ac['finding']}")
        print(f"  Breaks proof: {ac['breaks_proof']}")
    print()

    # --- Verdict ---
    print("=" * 60)
    print("VERDICT")
    print("=" * 60)
    n_counterexamples = n_primary
    no_counterexamples = compare(n_counterexamples, "==", 0,
                                  label=f"no counterexamples in [4, {VERIFICATION_BOUND}]")

    # Both branches produce UNDETERMINED — open problems cannot be resolved
    # by finite computation. The conditional documents *why*.
    if no_counterexamples:
        verdict = "UNDETERMINED"  # verified up to bound, but finite check != proof
        verdict_reason = (
            f"No counterexamples found up to {VERIFICATION_BOUND} by two independent "
            "methods. However, this is a universal conjecture over infinitely many "
            "even integers. Computational verification of a finite range cannot "
            "constitute a proof. The Goldbach conjecture remains an open problem."
        )
    else:
        verdict = "DISPROVED"  # a genuine counterexample would disprove the conjecture
        verdict_reason = (
            f"Counterexample(s) found: {counterexamples_primary}. "
            "The Goldbach conjecture is disproved."
        )

    print(f"\nVerdict: {verdict}")
    print(f"Reason: {verdict_reason}")

    # --- Update FACT_REGISTRY ---
    FACT_REGISTRY["A1"]["method"] = "goldbach_trial_division() — isprime() per candidate"
    FACT_REGISTRY["A1"]["result"] = f"{n_primary} counterexamples in [4, {VERIFICATION_BOUND}]"
    FACT_REGISTRY["A2"]["method"] = "goldbach_prime_sieve() — primerange sieve + set lookup"
    FACT_REGISTRY["A2"]["result"] = f"{n_sieve} counterexamples in [4, {VERIFICATION_BOUND}]"

    # --- JSON Summary ---
    summary = {
        "claim_natural": CLAIM_NATURAL,
        "claim_formal": CLAIM_FORMAL,
        "fact_registry": FACT_REGISTRY,
        "citations": {},
        "extractions": {},
        "cross_checks": [
            {
                "description": "Trial division vs prime sieve methods",
                "value_a": n_primary,
                "value_b": n_sieve,
                "agree": methods_agree,
                "independence": (
                    "Mathematically independent: Method 1 uses per-number isprime() calls; "
                    "Method 2 pre-generates a prime set via sieve and uses set membership. "
                    "Different algorithms, different data structures."
                ),
            }
        ],
        "adversarial_checks": adversarial_checks,
        "verdict": verdict,
        "verdict_reason": verdict_reason,
        "key_results": {
            "verified_up_to": VERIFICATION_BOUND,
            "counterexamples_found": n_counterexamples,
            "methods_agree": methods_agree,
            "literature_bound": "4 x 10^18 (Oliveira e Silva, 2013)",
        },
        "generator": {
            "name": "proof-engine",
            "version": "0.10.0",
            "repo": "https://github.com/yaniv-golan/proof-engine",
            "generated_at": str(date.today()),
        },
    }

    print("\n=== PROOF SUMMARY (JSON) ===")
    print(json.dumps(summary, indent=2, default=str))

↓ download proof.py

Re-execute this proof

The verdict above is cached from when this proof was minted. To re-run the exact proof.py shown in "View proof source" and see the verdict recomputed live, launch it in your browser — no install required.

Re-execute from GitHub commit 1ba3732 — same bytes shown above.

Re-execute in Binder runs in your browser · ~60s · no install

First run takes longer while Binder builds the container image; subsequent runs are cached.

machine-readable formats

Jupyter Notebook interactive re-verification W3C PROV-JSON provenance trace RO-Crate 1.1 research object package
Downloads & raw data

found this useful? ★ star on github