Lean 4와 PB 증명 인증: PBLean의 혁신적인 통합

Lean 4와 PB 증명 인증: PBLean의 혁신적인 통합
안내: 본 포스트의 한글 요약 및 분석 리포트는 AI 기술을 통해 자동 생성되었습니다. 정보의 정확성을 위해 하단의 [원본 논문 뷰어] 또는 ArXiv 원문을 반드시 참조하시기 바랍니다.

초록

PBLean은 VeriPB 형식의 의사불린(pseudo‑Boolean) 증명서를 Lean 4에 직접 가져와 검증하는 시스템이다. 핵심은 증명 단계마다 Lean 내부에 증명 용어를 만들지 않고, Boolean 체크러 함수를 반사(reflection) 기법으로 정의하고 그 안전성을 Lean에서 한 번만 증명한 뒤, 네이티브 코드로 실행한다. 이를 통해 수만 단계에 달하는 대형 증명도 메모리 부족 없이 검증할 수 있다. 모든 VeriPB 커널 규칙(컷팅‑플레인, 증명‑대‑모순 서브프루프 등)을 지원하며, 문제 인코딩 자체도 Lean에서 형식화·증명함으로써 솔버 출력과 원문 문제 사이의 신뢰 격차를 메우는다. 독립 집합, Langford 페어링, Schur 수 등 다양한 조합론 문제에 적용해 완전 검증된 정리를 얻었다.

상세 분석

PBLean은 기존 SAT/SMT 증명 검증 방식이 갖는 두 가지 한계를 동시에 해결한다. 첫째, VeriPB와 같은 의사불린 증명 포맷은 컷팅‑플레인 연산을 포함하는 복잡한 규칙을 사용한다. 이러한 규칙을 그대로 Lean의 증명 객체로 변환하면, 각 단계마다 새로운 Expr를 생성해야 하므로 증명 길이가 수천·수만 단계에 달할 경우 메모리 사용량이 급증한다. 둘째, 외부 검증기(예: CakePB)는 검증 결과를 단순 ‘SAT/UNSAT’ 판정으로만 제공하므로, 그 결과를 다른 정리와 조합하거나 문제 자체에 대한 의미론적 해석을 연결하기 어렵다. PBLean은 이러한 문제를 ‘반사(reflection)’라는 메커니즘으로 극복한다. 구체적으로, Boolean 체크러 check : F → π → Bool를 정의하고, 이 함수가 VeriPB 증명 문자열 π를 순차적으로 해석해 모순이 발생하면 true를 반환하도록 구현한다. 체크러의 동작은 순수 함수형 코드이지만, Lean의 native_decide를 통해 네이티브 코드로 컴파일되어 실행된다. 따라서 실행 시간은 Lean 커널 내부에서 증명 객체를 생성·검증하는 비용이 아니라, 순수 계산 비용에 국한된다.

안전성은 두 단계로 증명된다. (1) 각 VeriPB 커널 규칙에 대응하는 13개의 기본 레마를 Lean 내부에 정의하고, 이 레마들이 Boolean 평가와 정확히 일치함을 정리한다. (2) 체크러가 반환한 true에 대해 “F는 만족 불가능하다”는 정리를 check_sound라는 하나의 정리로 증명한다. 이 정리는 Lean 표준 공리(propext, Classical.choice, Quot.sound)와 Lean.trustCompiler만을 신뢰 기반으로 한다. 따라서 전체 시스템의 신뢰 기반은 기존 bv_decide 전술과 동일하게 최소화된다.

구현 측면에서 PBLean은 두 개의 주요 모듈로 구성된다. PseudoBoolean.lean은 의사불린 제약을 표현하는 타입과 13개의 레마를 제공하며, 약 700줄 정도의 코드로 구현된다. Reflect.lean은 VeriPB 커널 파일을 토큰화하고 AST로 변환한 뒤, 해시맵 기반 제약 데이터베이스를 유지하면서 각 규칙을 적용한다. 특히 `@


댓글 및 학술 토론

Loading comments...

의견 남기기