コンテンツにスキップ

Chapter 02: Lean の基本構文・型・データ構造

この章では,Lean のファイルを読むために必要な基本語彙を整理します. 前章では命題論理・述語論理の証明規則を見ました. ここでは,それらの証明を書くための「言語としての Lean」を見ます.

扱う内容は次の通りです.

  • コマンドと式
  • deffunexampletheoremlemma
  • variablesection,引数に現れる ( ){ }[ ]
  • notation
  • PropTypeSort と universe
  • 関数型・依存関数型
  • inductive 型,structureclass
  • Chapter 01 で使った論理記号の実体
  • namespaceopen
  • abbrev
  • 積,直和型(非交和),OptionList などのデータ構造
  • ifmatchletdo などの制御構文

Lean では「プログラム」と「証明」は同じ構文で書かれます. 自然数を返す関数も,命題の証明も,どちらも型をもつ項です. したがって,Lean のファイルを読むときは,まず「いま見ているものは環境に名前を追加するコマンドなのか,それとも型をもつ式なのか」を区別すると見通しがよくなります.

もう 1 つ重要なのは,「型」と呼ばれているものをいくつかの観点に分けて見ることです. PropType は型が住む階層です. α → β∀ x : α, P x は関数型・依存関数型です. NatList αOption αP ∨ Q∃ x, P xinductive 型です. α × βP ∧ QSubtypestructure として実装された積型です. LE αAdd α は型クラスで,+ の意味を型ごとに与えます.

この章では,Chapter 01 で使った AndOrEqLELTTrueFalseNotExists なども, 単なる論理記号ではなく,Lean の具体的な定義・構文・型クラスとして見直します.

namespace Chapter02