coredot.today
기술 탐색으로 돌아가기
과학 AI연구

Lean 형식 증명 — 페르마의 마지막 정리

Claude 에이전트들이 11일 동안 2만 9천여 개 정리를 쌓아 올린, 컴퓨터가 검증한 최초의 페르마 증명 — 새로운 것은 수학이 아니라 검증이다

직접 해보기 3
종류
오픈소스
라이선스
Apache-2.0
언어
Lean
사실 확인
2026.10.24

TRY IT

직접 해보기

OVERVIEW

개요

무엇인가

2026년 9월 Anthropic이 공개한 페르마의 마지막 정리(FLT)의 완전한 Lean 4 형식 증명 저장소입니다. Claude 에이전트 수십 개가 8월 7일부터 17일까지 11일 동안 대체로 자율적으로 작업해, 최종 정리가 의존하는 29,511개 정리를 Mathlib 위에서 증명했습니다. 코드는 약 1,300만 줄로 Mathlib 전체의 5배가 넘습니다.

FLT는 1995년 와일스(와 테일러–와일스)가 이미 증명했습니다. 이번에 새로운 것은 그 증명을 커널이 한 단계도 빠짐없이 확인할 수 있는 형태로 옮긴 일입니다. 사람의 증명은 "자명하다"며 계단을 건너뛰고, 129쪽짜리 와일스 논문도 검증에 몇 달이 걸리고 그 과정에서 구멍이 발견됐습니다. Lean은 모든 계단을 직접 밟아 봅니다. 증명 경로는 다르몽–다이아몬드–테일러 해설을 따라 프레이 곡선 → 마주르(기약성) → 와일스(모듈러성, R = T) → 리벳(레벨 낮추기) → 레벨 2에서 모순으로 갑니다.

어떻게 동작하나

성공의 열쇠는 모델보다 하네스였습니다. 첫 시도는 에이전트들이 프로젝트 상태를 놓치고 협업을 멈춰 실패했고, 두 번째는 컬럼비아대의 오픈 플랫폼 Prove2Me(arXiv:2608.28433) 위에서 진행됐습니다.

1. 불변 카드
정리 문장 하나가 카드 하나다. 문장은 게시되면 바뀌지 않고, 증명은 별개 파일로 여러 개 붙을 수 있다. 증명을 고쳐도 위쪽 재컴파일이 없다.
2. 증명 스케치
아직 증명되지 않은 정리도 import할 수 있다. 스케치가 수락되면 "자식이 모두 검증되면 부모도 검증된다". 자식 하나하나가 독립된 새 문제가 된다.
3. 외부 그래프
29,511개 카드의 의존 DAG를 서버가 들고 있어 에이전트는 기억 대신 그래프를 읽고 다음 일을 고른다. 오케스트레이터는 없다.
4. 감사된 핵심
사람은 목표 문장·정의·이정표만 검토한다. 그 아래 중간 렘마는 에이전트가 자유롭게 만들고, 서로의 문장을 반증하며 바로잡는다.

8월 17일 밤 마지막 잎이 닫히자 연쇄가 루트까지 올라갔습니다. 그래도 에이전트는 "재검사가 끝나기 전까지 정직한 문장은 'FLT가 형식화되었다'가 아니라 'prove2me에서 증명됨, 독립 재검사 대기 중'이다"라고 보고했고, 이후 플랫폼 밖 재컴파일과 두 개의 독립 검사기를 거쳤습니다.

빠른 시작

저장소의 목표 문장은 Lean 내장 자연수와 연산만으로 쓰여 있습니다.

lean
theorem fermat_last_theorem (n : ℕ) (hn : 3 ≤ n) (a b c : ℕ)
    (ha : 0 < a) (hb : 0 < b) (hc : 0 < c) :
    a ^ n + b ^ n ≠ c ^ n

기본 빌드 목표 FinalCheck.lean은 #print axioms 출력이 정확히 표준 공리 셋(propext, Classical.choice, Quot.sound)이 아니면 실패하므로 sorry·새 axiom·native_decide가 끼어들 수 없습니다. 직접 확인하려면 README의 명령을 씁니다(Linux 또는 macOS, elan 필요).

bash
git clone https://github.com/anthropics/fermats-last-theorem flt && cd flt
LEAN_NUM_THREADS=96 lake build      # 병렬 작업 하나당 메모리 약 5 GB
verification/comparator/run.sh      # Lean FRO의 comparator로 문장·공리·전체 재생 검사
verification/nanoda/run.sh          # 러스트로 독립 구현한 커널 nanoda로 재검사

빌드는 96 병렬에서 5시간 32분, 최대 메모리 153 GB였고, comparator는 약 15시간(최대 230 GB, README는 300 GB 확보 권장)이 걸립니다. 증명을 읽기만 하려면 html/index.html을 브라우저로 열거나 공개 문서 사이트를 보면 됩니다. 29,511개 정리마다 Lean 문장, 인용 관계, 의존 그래프가 있고, PROOF-PATH.md가 각 단계의 Lean 정리 이름과 "여기서 증명된 고전 결과가 정확히 얼마나 강한지"를 적어 둡니다.

언제 쓰고, 언제 피하나

  • 잘 맞는다: 대규모 형식화를 에이전트로 쪼개는 구조(불변 문장, 스케치, 감사 표면 고정)를 연구하거나 따라 할 때. AI가 낸 증명을 "커널을 통과시켜라"로 검증하는 파이프라인을 설계할 때. 같은 구조는 소프트웨어(인터페이스를 먼저 고정하고 모듈별 검증)에도 옮겨진다.
  • 다른 방법을 먼저 본다: 사람이 읽고 재사용할 라이브러리가 필요하면 임페리얼 칼리지 FLT 프로젝트(2024~2029)와 Mathlib이 기준이다. 이 저장소는 README 스스로 "읽기보다 검사를 위해 쓰였다"고 밝힌 연구 산출물이고 유지보수·기여를 받지 않는다.

한계와 주의

  • 수학으로 읽을 수 없다. 이름은 기계가 지었고 주석은 지워졌으며, 1,500줄을 넘는 파일이 900개 이상이다(Mathlib 전체엔 2개). 이름과 문장이 어긋나면 증명된 것은 문장이다.
  • 일반 정리가 아니다. '마주르', '리벳', '와일스', '랭글랜즈–터널'이 모두 이 논증에 필요한 제한 버전이다. 일반 고전 정리의 형식화로 인용하면 안 된다.
  • 중복과 취약성. 정리 문장 약 5개 중 2개가 다른 파일과 글자까지 같고, 툴체인 한 번 업데이트(Lean 4.30→4.33)에 파일 19%가 개별 수리를 요구했다.
  • 기계가 못 보는 것. 커널은 "증명이 문장에 맞는가"를 보증하지만 중간 정리가 이름대로의 뜻인지는 사람의 몫이다. 최종 문장은 초등적이고 comparator가 Mathlib 표준 문장과의 동일성을 확인했으므로 결론은 약해지지 않는다.
  • "사람은 목표 문장 한 줄만 썼다"의 정확한 뜻. 실행 중 사람이 쓴 수학·Lean은 그것뿐이지만, 저장소 ATTRIBUTION.md는 106개 파일이 임페리얼 FLT 프로젝트와 flt-regular의 사람이 쓴 오픈소스 코드에서 왔다고 밝힌다.
  • 줄 수는 공개 글 기준 1,300만, Claude의 자체 평가 기준 1,350만으로 출처마다 조금 다르다.

DEEP DIVE

더 깊이 읽기