🙏
Lean4, lakeでのプロジェクト作成がうまく行かなかったのでChatGPTに聞く→解決
公式ドキュメント
に従ってelan,lakeを実行しても必要な*.leanファイルが作成されなかったのでChatGPT o3にきいた。
結果として
elan self update
elan update stable
の実行が必要だった。
lake init でBasic.leanしか生成されないことは何が原因でしょうか
lake initが正常に動くと、次の 3 ファイル(+lakefile.leanとlean-toolchain)が必ず出来上がるはずです。
Main.lean -- 実行用(std/exe テンプレートのとき)
«Foo».lean -- ライブラリのルート
Foo/Basic.lean -- 雛形モジュール
ここで Foo はディレクトリ名(= パッケージ名)を UpperCamelCase に直したものです。
公式ドキュメントにもこの構成が載っています。(docs.lean-lang.org)
Basic.lean だけになる典型的な理由
| 症状 | よくある原因 | 確認ポイント/対策 |
|---|---|---|
Main.lean がない |
- lake init … lib / もしくは環境変数 LAKE_TEMPLATE=lib を設定している- lake init する前に同名の Main.lean が既にあったので上書きされなかった |
① コマンド履歴や echo $LAKE_TEMPLATE を確認② lake init … std あるいは lake init … exe で作り直す |
ルートファイル(Foo.lean など)が見当たらない |
- 大文字小文字を変えたファイルを見落としている(Foo.lean と foo.lean は別)- パッケージ名にハイフンや数字が入り、ファイル名が «foo-bar».lean のようにフランス語引用符付きになったが、シェルのグロブで引っ掛けていない |
ls -a や VS Code で再チェック。特殊文字を含む場合は import «foo-bar».Basic の形になるので、ファイルも «foo-bar».lean で生成されます。 |
| そもそも最初から Basic.lean だけ | Lean/Lake が古く、生成テンプレートのバグに当たっている |
elan self update → elan update stable でツールチェーンを最新版 (>= 4.22) にしてから再実行 |
テンプレート指定の一覧はマニュアルにも明記されています(std がデフォルト): (lean-lang.org)
すぐ出来る確認手順
# 1. まずツールチェーンを最新化
elan self update
elan update stable # または elan default leanprover/lean4:stable
# 2. クリーンな場所で手を動かしてみる
mkdir Hello && cd Hello
lake init . # (= lake init Hello std)
# 3. 生成物を確認
tree -a -L 2
ここで
Main.lean
Hello.lean
Hello/Basic.lean
の 3 ファイルが揃えば OK です。欠けている場合は上記の表をヒントに原因を絞り込んでみてください。
補足 — テンプレートを意図的に変える場合
| 目的 | コマンド例 | 生成される Lean ファイル |
|---|---|---|
| ライブラリ + 実行ファイル(既定) | lake init Foo |
Main.lean, Foo.lean, Foo/Basic.lean
|
| ライブラリのみ | lake init Foo lib |
Foo.lean, Foo/Basic.lean
|
| 実行ファイルのみ | lake init Foo exe |
Main.lean |
| mathlib 依存プロジェクト | lake init Foo math |
Foo.lean, Foo/Basic.lean + mathlib 依存設定 |
それでも解決しないときは…
-
lake --versionとelan toolchain listの結果 - 実行した正確なコマンド
- 生成されたディレクトリ構成(
tree1 段)
を添えてもらえると、さらに絞り込みやすくなります。
Discussion