コンテンツにスキップ

bundled structure,morphism,subobject

Mathlib では,数学的対象を structure として束ねることがよくあります. たとえば準同型は,単なる関数ではなく「関数本体」と「演算を保つ証明」を持つ structure です. これを bundled structure と呼ぶことがあります. bundled にすると,写像そのものと構造保存の証明を 1 つの対象として渡せるため,定理の仮定や合成の記述が整理されます.

#check MonoidHom
#check RingHom
#check MonoidHom.map_one
#check map_add

example : (RingHom.id ) 3 = 3 := by
  rfl

example (f :  →+* ) (x y : ) : f (x + y) = f x + f y := by
  exact map_add f x y

ℤ →+* ℤ は,整数環から整数環への環準同型です. map_add は,加法を保つことを表す典型的な補題名です. Mathlib では,map_zeromap_onemap_mulmap_add のように,写像が構造を保つ定理が統一的な名前で用意されています. 準同型 f : ℤ →+* ℤ は関数のように f x と適用できますが,内部的には関数だけでなく保存性の証明も持っています.

部分構造も bundled な対象として扱われます. たとえば線形代数では Submodule R M,代数では Subgroup GSubsemiring R,位相では部分空間に関する構造が現れます. 各論は次章以降で扱いますが,ここでは名前だけ確認しておきます.

#check Submodule
#check Subgroup
#check Subsemiring