まとめ¶
Mathlib の線形代数では,ベクトル空間を Module K V として読みます.
線形写像 V →ₗ[K] W,部分空間 Submodule K V,行列 Matrix m n R は,いずれも数学的な構造とその公理を bundled structure として持ちます.
証明を書くときは,まず #check で補題の型を確認し,simp,module,rw,ext,linear_combination などを必要に応じて使います.
形式化の tips¶
線形代数の形式化では,紙の証明で省略している「どの空間の元か」を Lean に明示する必要があります.
- 体
Kとベクトル空間Vを分ける. - ベクトル空間は
[AddCommGroup V] [Module K V]として仮定する. - 線形写像は関数ではなく
V →ₗ[K] Wとして扱う. - 部分空間は
Submodule K Vであり,集合として使うときは coercion が働く. - span の証明では,生成元が span に入ることと,和・スカラー倍で閉じることを使う.