TuBrief
구독 채널
비디오
커뮤니티

수학 연구를 위한 로컬 Lean 4 증명 자동화 환경 세팅 가이드

TuBrief 편집팀
2026년 8월 10일
0
컴퓨터/소프트웨어

원본 영상을 바탕으로 AI의 도움을 받아 작성했습니다. 원본 영상이 기준입니다.

한국어EnglishEspañol中文العربيةहिन्दीDeutschFrançaisPortuguêsРусскийBahasa Indonesia日本語

관련 영상

OpenAI 아스트라, 수학 능력이 단숨에 10배 향상되었습니다...6:03

OpenAI 아스트라, 수학 능력이 단숨에 10배 향상되었습니다...

Better Stack

커뮤니티의 다른 글

사내 시스템에 llm api 붙일 때 마주하는 현실적인 한계와 대응법

2026년 9월 13일

레거시 백엔드에 GPT-6 Astra 붙일 때 예산 승인과 보안 통과를 먼저 끝내는 법이 있습니다

2026년 9월 13일

에이전트끼리 대화하다 6천만 원 청구서가 나오는 이유

2026년 9월 13일

사내 RAG 벡터 검색에 Okta 권한 필터를 직접 거는 방법

2026년 9월 13일

브라우저 에이전트에게 내 구글 계정을 통째로 넘기면 안 되는 이유

2026년 9월 12일

Apple Won the AI Race

2026년 9월 12일

댓글 (0)

Log in to leave a comment

아직 작성된 글이 없습니다

© 2026 . All rights reserved.

TuBrief
구독 채널
비디오
커뮤니티
로그인

수학 연구를 위한 로컬 Lean 4 증명 자동화 환경 세팅 가이드

대규모 수학 문제 해결 시스템을 연구실 데스크톱에 올릴 때 거대 아키텍처 개요는 아무런 도움이 되지 않습니다. 로컬 환경에서 Lean 4 파이프라인을 직접 세팅하고 장기 실행형 멀티 에이전트를 연동해 수학 탐색 작업을 완전히 자동화하는 실무 단계를 정리합니다.

로컬 Lean 증명 검증 환경 구축

개발 환경에서 Lean 4를 수동으로 설치하고 VS Code 언어 서버 프로토콜에 의존하면 대규모 AI 검증 시 심각한 병목을 유발합니다. Mathlib4 사전 컴파일 바이너리가 캐싱되지 않으면 로컬 CPU가 수십만 개의 정리를 직접 재컴파일하므로 환경 구축에만 180분이 넘게 소요됩니다. 초당 수십 회 이상 코드 검증 요청을 처리하려면 FastAPI 기반의 Kimina Lean Server 파이프라인으로 전환해야 합니다.

장기 실행형 수학 문제 검증 작업 세팅 시간을 180분에서 20분 이내로 단축하는 구체적인 구축 절차는 다음과 같습니다.

  1. 프로젝트 루트 디렉토리의 lean-toolchain 파일에 툴체인을 고정합니다. 파일 내부에 leanprover/lean4:v4.15.0 텍스트를 입력합니다.
  2. lakefile.lean 설정 파일을 열고 Mathlib4 패키지 및 stdio 기반 JSON 입출력을 처리하는 repl 저장소를 지정합니다.
import Lake
open Lake DSL

package «proof_automation» {
}

require mathlib from git
  "https://github.com/leanprover-community/mathlib4.git" @ "v4.15.0"

require repl from git
  "https://github.com/leanprover-community/repl.git" @ "main"

@[default_target]
lean_lib «ProofAutomation» {
}
  1. 터미널을 열고 다음 명령어를 순차적으로 실행하여 사전 컴파일된 바이너리 아티팩트를 다운로드하고 빌드합니다.
lake update
lake exe cache get
lake build

이 작업을 완료하면 사전 컴파일 캐시를 즉시 수신하여 20분 내에 완전한 로컬 REPL 실행 환경이 준비되며, 초당 최대 50개의 증명 단락을 동시에 검증할 수 있습니다.

루트 및 서브 에이전트 역할 분담 설계

단일 대형 언어 모델 프롬프트 호출로 복잡한 정리 증명을 시도하면 컨텍스트가 길어짐에 따라 하위 목표를 상실하거나 무한 루프에 진입합니다. 문제 분할을 담당하는 루트 에이전트와 격리된 하위 전술을 실행하는 서브 에이전트로 역할을 분리한 계층적 방향성 비순환 그래프 아키텍처를 적용해야 합니다.

에이전트 통신 규격으로 JSON 포맷을 채택하고 스코프를 격리하여 프롬프트를 전달하면 API 토큰 소비량을 40퍼센트 이상 절감할 수 있습니다. 서브 에이전트 호출 시 사용하는 JSON 스키마는 다음과 같습니다.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "SubAgentProofTask",
  "type": "object",
  "properties": {
    "task_id": { "type": "string" },
    "target_hypothesis": { "type": "string" },
    "current_goal_state": { "type": "string" },
    "previous_failure_logs": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "attempted_tactic": { "type": "string" },
          "error_message": { "type": "string" }
        }
      }
    },
    "sub_goal_target": { "type": "string" }
  },
  "required": ["task_id", "target_hypothesis", "current_goal_state", "sub_goal_target"]
}

에이전트의 환각으로 인한 무한 루프를 차단하고 안정적인 계층 구조를 가동하는 단계별 제어 순서는 다음과 같습니다.

  1. 서브 에이전트에 입력 프롬프트 바인딩 시 전체 대화 이력을 제거하고 가설, Goal State, 이전 실패 로그 3가지 핵심 요소만 전송하도록 프롬프트를 구성합니다.
  2. Lean REPL에서 반환되는 proofState 문자열을 SHA-256 알고리즘으로 해싱하여 메모리에 저장합니다. 동일한 상태 해시가 3회 이상 중복 탐지되면 해당 탐색 가지를 프루닝합니다.
  3. 단일 Tactic 연산에 5초, 서브 에이전트 전체 탐색에 120초 타임아웃을 설정하고, 초과 시 SIGKILL 시그널을 발송하여 REPL 프로세스를 즉시 재정비합니다.

API 토큰 비용 통제를 위한 컨텍스트 관리 전략

수시간 동안 지속되는 증명 탐색 작업에서 매 요청마다 전체 대화 이력을 백엔드 API로 전송하면 토큰 사용량이 폭증합니다. LeanExplore 및 Vector DB 기반의 캐싱 레이어를 구축하고, 이미 검증된 중간 Tactic 결과를 보조 정리 형태로 메모리 그래프에 요약 반영함으로써 입력 토큰 오버헤드를 제어해야 합니다.

백엔드 서버에는 REPL 세션의 환경 식별자를 등록하여 프롬프트 상단에서 반복되는 import Mathlib 구문을 제거합니다. 이것만으로 입력 토큰을 50퍼센트에서 70퍼센트까지 즉시 축소할 수 있습니다. 예산 한도 초과로 인한 API 비용 폭증을 방지하기 위한 제어 파이프라인 구현 절차는 다음과 같습니다.

  1. 로컬 환경 디렉토리에 .leanflow/cache/ 및 .leanflow/workflow-state/ 경로를 생성합니다.
  2. 파이썬 기반의 CostMonitor 모듈을 작성하여 API 호출 시 소비되는 토큰과 비용을 실시간으로 가산 추적합니다.
  3. 임계 금액에 도달하면 체크포인트 스냅샷 파일을 저장하고 프로세스를 안전하게 정지하는 스크립트를 가동합니다.
import sys
import json
import logging

class CostMonitor:
    def __init__(self, max_budget_usd: float, token_cost_per_1k: float):
        self.max_budget = max_budget_usd
        self.cost_per_1k = token_cost_per_1k
        self.total_tokens_used = 0
        self.current_cost = 0.0

    def track_usage(self, prompt_tokens: int, completion_tokens: int):
        tokens_in_call = prompt_tokens + completion_tokens
        self.total_tokens_used += tokens_in_call
        self.current_cost += (tokens_in_call / 1000.0) * self.cost_per_1k
        
        logging.info(f"[TELEMETRY] Used Tokens: {tokens_in_call} | Total Cost: ${self.current_cost:.4f}")
        
        if self.current_cost >= self.max_budget:
            self.trigger_safe_pause()

    def trigger_safe_pause(self):
        logging.warning("[WARNING] Target budget threshold reached. Pausing workflow...")
        with open(".leanflow/workflow-state/checkpoint.json", "w") as f:
            json.dump({"status": "PAUSED_BUDGET_EXCEEDED", "tokens": self.total_tokens_used}, f)
        sys.exit(0)

증명 코드 오류 자동 수정 루프 구현

AI 에이전트가 코드를 생성한 후 수동으로 오류를 검토하는 방식은 연구 전체의 치명적인 병목입니다. Lean REPL 컴파일러가 출력하는 구문 오류, 타입 불일치, 미해결 목표 등의 JSON 파싱 데이터를 에이전트의 피드백 입력으로 직접 연결해야 합니다.

수동 검토를 대체하고 연구 속도를 2배 이상 향상시키는 자동 수정 제어 루프의 작동 방식은 다음과 같습니다.

  1. Lean REPL에서 반환된 JSON 응답을 수신하여 오류 위치와 타입 에러 메시지, 남은 목표를 아래 파이썬 파서를 통해 구조화된 데이터로 추출합니다.
def parse_lean_repl_output(repl_response_json: str):
    data = json.loads(repl_response_json)
    parsed_diagnostics = {
        "has_error": False,
        "errors": [],
        "open_sorries": []
    }
    
    if "messages" in data:
        for msg in data["messages"]:
            if msg.get("severity") == "error":
                parsed_diagnostics["has_error"] = True
                parsed_diagnostics["errors"].append({
                    "line": msg["pos"]["line"],
                    "column": msg["pos"]["column"],
                    "data": msg["data"]
                })
                
    if "sorries" in data:
        for sorry in data["sorries"]:
            parsed_diagnostics["open_sorries"].append({
                "goal": sorry["goal"],
                "proof_state": sorry["proofState"],
                "line": sorry["pos"]["line"]
            })
            
    return parsed_diagnostics
  1. 초기 1~4회 시도 동안은 파싱된 오류 메시지 데이터를 서브 에이전트 프롬프트에 바인딩하여 해당 위치의 Tactic 매개변수를 국소적으로 정밀 수정합니다.
  2. 동일 지점에서 5회 이상 연속으로 검증이 실패할 경우, 해당 증명 전략을 백트래킹하여 파기하고 보조 정리를 더 작은 단위로 자르는 스케치 재분할 모드로 자동 전환합니다.

완전히 검증된 Clean 코드는 doc-gen4 및 paperproof 변환 도구를 통과하여 연구 논문에 즉시 삽입 가능한 논리 그래프 시각화 및 LaTeX 문맥으로 자동으로 생성됩니다.

lake build LeanAutomation:docs
lean-graph extract --input Main.lean --output proof_dependency.json