コンテンツにスキップ

import Mathlibopen scoped

このプロジェクトでは各章の冒頭で import Mathlib を使っています.これは Mathlib 全体を読み込みます. 実際の開発では,ビルド時間を抑えるために必要なファイルだけを import することもあります. たとえば import Mathlib.Data.Real.Basicimport Mathlib.Topology.Basic のように,必要な分野のファイルだけを import する書き方です. import Mathlib は「Mathlib に含まれる主要な定義・定理・tactic をまとめて使えるようにする」指定であり,Lean の言語機能そのものとは区別します.

一部の notation は,スコープを開かないと使えません. 有限和 には BigOperators,拡張非負実数の には ENNReal のスコープを使います. open scoped は名前空間の中の定義名を短くするというより,特定の notation やスコープ付き notation を有効にするために使います.

Mathlib では,定義そのものと notation が分かれていることがよくあります. たとえば Real という型には という notation があり,NNReal には ℝ≥0ENNReal には ℝ≥0∞ という notation があります. また ∑ i ∈ s, f i は有限和を表す notation で,背後には Finset.sum があります. 証明中で notation の意味が分からなくなったら,#check で型を確認し,必要なら対応する定義名を探します.

open scoped BigOperators
open scoped ENNReal
open scoped NNReal

#check は,Mathlib の名前がどのような型をもつかを確認する基本コマンドです. #synth は,指定した型クラスインスタンスを Lean が見つけられるかを確認します.

#check Finset
#check Set
#check Real
#check NNReal
#check EReal
#check ENNReal
#check 
#check 0
#check 0
#check ( : 0)

#synth Field 
#synth LinearOrder 
#synth TopologicalSpace 
#synth Add ENNReal
#synth CompleteLinearOrder ENNReal

演習

#synth で,実数が体・線形順序・狭義順序環の構造を持つことを確認してください.

#synth Field 
#synth LinearOrder 
#synth IsStrictOrderedRing