Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Lean에서 자명한 정리 증명하기

Lean 4와 같은 증명 보조기를 처음 시작할 때는 가능한 한 가장 기초적인 증명부터 시작하는 것이 좋습니다. 이러한 증명은 수학자에게는 너무나 자명해 보일 수 있지만, 이를 형식 체계에서 구현해 보면 증명 보조기가 어떻게 동작하는지에 대한 직관을 기르는 데 도움이 됩니다. 참임을 이미 알고 있는 기본적인 논리 명제부터 시작하면, 복잡한 수학에 빠져 헤매지 않고 형식 검증의 문법과 작동 방식을 익히는 데 집중할 수 있습니다. Lean의 증명 체계에 익숙해지기 위해 이러한 기초적인 증명 몇 가지를 살펴봅시다.

예제 1: 항등

첫 번째 정리는 모든 명제가 자기 자신을 함의함을 보여 줍니다:

theorem self_implies_self (p : Prop) :
    p → p := fun h => h

이는 λ 표기법을 사용하거나 명시적인 증명으로도 작성할 수 있습니다:

theorem self_implies_self' (p : Prop) :
    p → p :=
    λ h => h

theorem self_implies_self'' (p : Prop) :
    p → p := by
  intro h
  exact h

예제 2: 논리곱 제거

p ∧ q가 있으면 p가 있음을 증명할 수 있습니다:

theorem and_elim_left (p q : Prop) : p ∧ q → p := by
  intro h
  exact h.left

예제 3: 논리합 도입

p가 있으면 p ∨ q가 있음을 증명할 수 있습니다:

theorem or_intro_left (p q : Prop) : p → p ∨ q := by
  intro h
  exact Or.inl h

예제 4: 이중 부정 도입

p가 참이면 ¬¬p도 참임을 증명할 수 있습니다:

theorem double_neg_intro (p : Prop) : p → ¬¬p := by
  intro h
  intro hn
  exact hn h

예제 5: 배중률

고전 논리에서는 임의의 명제 p에 대해 p가 참이거나 ¬p가 참입니다. 이는 Lean의 고전 논리에서 공리입니다:

theorem excluded_middle (p : Prop) : p ∨ ¬p := by
  exact Classical.em p

이것은 앞의 예제들과 다르다는 점에 유의하십시오. 다른 정리들은 구성적으로 증명할 수 있었지만, 배중률에는 Classical 공리가 필요합니다. 직관주의 논리에서는 이 원리를 가정하지 않습니다. Lean에서는 Classical.em을 사용하여 이 공리에 접근합니다.

이는 패턴 매칭을 사용하여 작성할 수도 있습니다:

theorem excluded_middle' (p : Prop) : p ∨ ¬p :=
  match Classical.em p with
  | Or.inl h  => Or.inl h    -- if p is true, return p
  | Or.inr h  => Or.inr h    -- if ¬p is true, return ¬p

원문 © Stephen Diehl, stephendiehl.com · 글 CC BY-SA 4.0, 코드 MIT · Stephen Diehl은 런던의 소프트웨어 엔지니어이자 작가입니다(저자가 정한 소개 문구). 이 글은 저자가 개인 자격으로 쓴 것이며 어떤 조직과의 연관도 밝히거나 암시해서는 안 됩니다 (라이선스와 고지).
이 페이지는 원문을 한국어로 옮기며 변경한 비공식 번역이며 같은 CC BY-SA 4.0으로 제공합니다 · yeokja 한국어 번역 · Anthropic 사의 claude-opus-5-5 모델을 활용하여 번역되었으며 학습을 모두 비허용한 상태로 작업하였습니다.