← 최신 논문
🤖 AI

ConVer: Using Contracts and Loop Invariant Synthesis for Scalable Formal Software Verification

본 논문은 대규모 C 프로그램과 변환된 LF 모델의 검증에서 발생하는 상태 공간 폭발 문제를 극복하기 위해 대규모 언어 모델을 활용하여 함수 계약을 생성하고 CEGAR-CEGIS 루프를 통해 이를 반복적으로 정제하는 상향식 구성 검증 도구인 ConVer를 소개한다.

원저자: Muhammad A. A. Pirzada, Weiqi Wang, Yiannis Charalambous, Konstantin Korovin, Lucas C. Cordeiro

게시일 2026-05-27
📖 4 분 읽기☕ 가벼운 읽기

원저자: Muhammad A. A. Pirzada, Weiqi Wang, Yiannis Charalambous, Konstantin Korovin, Lucas C. Cordeiro

원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기

거대하고 복잡한 공장이 완벽하게 작동하고 있다고 증명하려고 한다고 상상해 보세요. 이 공장에는 수천 개의 기계, 컨베이어 벨트, 그리고 작업자들이 거대한 웹으로 연결되어 있습니다. 만약 실수를 찾기 위해 모든 기계, 모든 기어, 모든 작업자를 동시에 지켜보려 한다면 압도당할 것입니다. 정보의 양이 너무 방대하여 오류를 찾기 전에 뇌가 "폭발"해 버릴 것입니다. 이것이 바로 소프트웨어 엔지니어들이 대규모 컴퓨터 프로그램을 검증하려 할 때 직면하는 문제입니다: 컴퓨터가 한 번에 확인하기에는 가능한 상태가 너무 많습니다.

이 논문은 코드를 검증하는 방식을 변경함으로써 이러한 "압도" 문제를 해결하도록 설계된 새로운 도구인 CONVER를 소개합니다. 공장 전체를 한 번에 응시하는 대신, CONVER 는 문제를 작고 관리 가능한 조각으로 분해하는 똑똑한 상향식 관리자와 같은 역할을 합니다.

다음은 CONVER 가 작동하는 방식을 간단한 비유로 설명한 것입니다:

1. "상향식" 전략: 설계도 대 벽돌

일반적으로 프로그램을 검증하려면 전체 시스템을 검사하기 전에 각 함수 (작은 기계 하나하나) 에 대해 상세한 규칙집 (계약) 을 작성해야 합니다. 이는 자동차가 안전하다고 말하기 전에 나사 하나하나에 대한 매뉴얼을 작성하려는 것과 같습니다. 이는 시간이 무한히 걸리고 전문가를 필요로 합니다.

CONVER 는 이 시나리오를 뒤집습니다.

  • 비유: 목표가 "공장은 절대 빨간색 위지트를 생산해서는 안 된다"라고 가정해 봅시다.
  • 옛 방식: 모든 작업자에게 "규칙은 무엇입니까?"라고 묻고 하향식으로 시스템을 구축하려 합니다.
  • CONVER 방식: 큰 목표 ("빨간색 위지트 금지") 로 시작합니다. 그런 다음 AI 어시스턴트 (대규모 언어 모델, LLM) 에게 큰 목표가 달성되도록 보장할 각 작업자의 규칙을 추측하도록 요청합니다. 마치 "조립 라인 작업자가 이 간단한 규칙을 따른다면 최종 제품이 안전할 것이다"라고 말하는 것과 같습니다. 작업자의 뇌가 어떻게 작동하는지 알 필요는 없으며, 규칙을 따르기만 하면 됩니다.

2. "스마트 루프": 탐정과 AI

AI 가 규칙 (계약) 을 추측하면, CONVER 는 "규칙 추측하기" 게임을 하는 탐정과 용의자처럼 두 단계 루프로 이를 테스트합니다.

  • 단계 A: 시스템 검사 (관리자): CONVER 는 모든 사람이 추측된 규칙을 따를 때 공장 전체가 작동하는지 확인합니다. 기계 내부까지 들여다보지 않고 규칙만 신뢰합니다.
  • 단계 B: 함수 검사 (검사관): CONVER 는 실제 기계가 그 규칙들을 실제로 따를 수 있는지 확인합니다.
  • "CEGAR" 루프: 만약 기계가 규칙을 따르지 못하면, CONVER 는 포기하지 않습니다. 대신 구체적인 오류 ("반례") 를 추출하여 AI 에게 보여줍니다.
    • 비유: AI 가 "작업자가 50 파운드를 들 수 있다고 생각했다"고 말합니다. 검사관이 "아니요, 작업자가 50 파운드 상자를 떨어뜨렸습니다"라고 말합니다. AI 는 이 구체적인 실패에서 배우고 더 나은 새로운 규칙을 작성합니다: "작업자는 최대 40 파운드까지 들 수 있습니다."
    • 이 과정은 규칙이 완벽해질 때까지 반복됩니다.

3. "스마트 ICE" 학습: 노이즈 필터링

때때로 AI 는 규칙이 잘못되어서가 아니라 질문을 오해하여 실수를 합니다. 이를 해결하기 위해 CONVER 는 SMART ICE 학습이라는 기법을 사용합니다.

  • 비유: 개에게 트릭을 가르친다고 상상해 보세요. "머무르라"고 했을 때 개가 앉으면 그것은 좋은 트릭임을 알 수 있습니다. 하지만 개가 다람쥐를 보고 앉았다면 그것은 오보입니다.
  • 작동 방식: CONVER 는 "오보" (노이즈) 를 필터링하고 "실제 실수" (신호) 만 유지합니다. 오류를 "긍정" (성공), "부정" (명확한 실패), "함의" (이것이 발생하면 저것이 반드시 발생함) 로 분류합니다. 이는 AI 가 훨씬 빠르게 학습하고 자신의 실수로 혼란을 겪지 않도록 도와줍니다.

4. "사전 추상화" 트릭: 만화 버전

무한 루프가 있는 공장처럼 일부 코드 부분은 너무 복잡하여 규칙을 확인하는 것조차 어렵습니다.

  • 비유: 기계가 너무 복잡하여 세부적으로 그리기 어렵다면, CONVER 는 먼저 간단한 만화 버전을 그립니다. 만화가 작동하는지 확인합니다. 작동하면 만화를 실제 기계로 교체하고 다시 확인합니다.
  • 이를 통해 CONVER 는 일반적으로 컴퓨터 메모리를 충돌시키는 프로그램을 처리할 수 있습니다.

그들은 무엇을 발견했는가?

연구진은 CONVER 를 간단한 수학 퍼즐부터 복잡한 실제 파일 파서 및 재귀 루프에 이르기까지 네 가지 다른 "코드 체육관"에서 테스트했습니다.

  • 간단한 프로그램: 45 개의 표준 프로그램 세트에서 CONVER 는 놀라울 정도로 성공적이었으며, **82% 에서 96%**를 검증했습니다. 이러한 중 대부분은 단 한 번의 검사로 해결되었으며, 이는 AI 가 거의 첫 번째 시도에서 규칙을 거의 완벽하게 추측했음을 의미합니다.
  • 더 어려운 프로그램: 보안 인증서 파싱이나 복잡한 재귀 루프와 같이 더 어려운 세트에서는 성공률이 **33% 에서 64%**로 떨어졌습니다. 이는 이러한 프로그램이 훨씬 더 이해하기 어렵기 때문에 예상되는 결과입니다.
  • "AI" 요인: 세 가지 다른 AI 모델 (Qwen, Claude, GPT) 을 테스트했습니다. AI 모델이 더 똑똑할수록 CONVER 의 성능이 더 좋았습니다. 가장 똑똑한 AI(GPT-OSS 120b) 가 가장 많은 문제를 해결하여 AI 의 "추측"의 질이 성공의 열쇠임을 입증했습니다.

결론

CONVER 는 AI 를 사용하여 소프트웨어의 "규칙집"을 작성한 다음, 완벽해질 때까지 해당 규칙집을 수정하는 똑똑한 반복 과정을 사용하는 도구입니다. 이는 거대하고 해결 불가능한 퍼즐을 일련의 작고 해결 가능한 단계로 변환합니다.

  • 검증의 필요성을 대체하지는 않습니다; 가장 어려운 부분 (규칙 작성) 을 자동화합니다.
  • 모든 복잡한 프로그램에서 100% 성공을 보장하지는 않지만, 이전에는 자동으로 검사할 수 없었던 많은 문제들을 해결합니다.
  • 실패를 경청함으로써 작동합니다: 소프트웨어가 실패할 때마다 도구는 정확히 실패했는지 학습하고 AI 에게 더 나은 추측으로 다시 시도하도록 요청합니다.

요약하자면, CONVER 는 거대한 문제를 작은 작업으로 분해하고, 모든 실수에서 배우며, 작업이 완료될 때까지 계획을 계속 개선하는 지칠 줄 모르는 초지능 관리자와 같습니다.

연구 분야의 논문에 파묻히고 계신가요?

연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.

Digest 사용해 보기 →