Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Lean言語は新世代の純粋関数型言語になれるか?
Search
井上亜星
June 15, 2025
Programming
180
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Lean言語は新世代の純粋関数型言語になれるか?
関数型まつり2025で発表したスライドです。
井上亜星
June 15, 2025
More Decks by 井上亜星
See All by 井上亜星
Lean は証明の正しさを確認するためだけのツールって思ってませんか?
inoueasei
1
110
Lean プロジェクトの依存関係を 自動更新する
inoueasei
1
63
Leanで本を執筆する
inoueasei
0
130
Other Decks in Programming
See All in Programming
【やさしく解説 設計編・中級 #1】一つの車に、運転手は一人 ~ある倉庫システムの事例から~
panda728
PRO
0
190
アルゴリズムは何を圧縮しているのか ─ Haskell から育った「圧縮代数」というメンタルモデル
naoya
16
3.6k
エンジニア向け会社紹介/Findy Company Profile
findyinc
6
360k
Android CLI
fornewid
0
150
1年で人数1.5倍、PR数5.5倍増。 品質とアウトカムはどうなったか、 何が効いたか
ike002jp
0
150
AI がコードを書く時代における新卒エンジニアの仕事風景 (2026) / New Graduate Engineers in the Era of AI Coding (2026)
sushichan044
0
230
地域 SRE コミュニティ最前線 - ホンマでっかSRE勉強会
tk3fftk
0
270
yield再入門 #phpcon
o0h
PRO
0
730
【やさしく解説 設計編・中級 #4】ルールの寿命と、システムの年輪
panda728
PRO
2
170
今さら聞けない .NET CLI
htkym
0
100
Prismを使った型安全な暗号化_関数型まつり2026
_fhhmm
0
150
5分で問診!Composer セキュリティ健康診断
codmoninc
0
590
Featured
See All Featured
How to Ace a Technical Interview
jacobian
281
24k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
640
[SF Ruby Conf 2025] Rails X
palkan
2
1.2k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.7k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
420
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.8k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
220
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
67
56k
Transcript
Lean言語は 新世代の純粋関数型言語になれるか? Proxima Technology 井上亜星
Lean 言語ってなに? 2013年ごろに当時 Microsoft Research に在籍し ていた Leonardo de Moura
氏により開発が始め られた定理証明支援系。 Rocq(旧Coq) や Agda と同様に、依存型という 強力な型システムのパワーによって命題を表現 し、証明することを可能にしている。 現在、Lean 4 がアクティブに開発中。
他の定理証明支援系とどう違うの? 大きく分けて2つの特徴があります 1.依存型に基づく定理証明支援系であると同時に、 純粋関数型言語でもある (プログラミングと証明を両立するための工夫もある) 2.強力なメタプログラミングフレームワークを備えている
純粋?Haskell みたいな言語ってこと? 確かに Haskell にかなり影響を受けている (モナドや do 構文もある) しかし、Haskell にはなかったおもしろい機能がある:
・notebook なしでもフィードバックが即座に得られる ・do 構文が強力で、for ループや while ループも書ける ・フィールド記法があって、関数適用をフィールドアクセスのように書ける ・効率的に計算ができるようにする Functional but in-place という仕様がある
フィードバックが即座に得られる エディタ上で編集するごとに実行結果を確認できる 画像では Error Lens 拡張機能を使用しています
強力な do 構文 ・for ループと while ループ ・let mut で可変なローカル変数
・continue と break 詳細は ‘do’ unchained という論文を参照
フィールド記法 T が e の型であるときに、関数適用 T.f e を e.f と書くことができる
Functional but in-place 他で参照されていない値を更新するとき、自動で破壊的な更新が行われる (参照カウントに基づく)
他の定理証明支援系とどう違うの? 大きく分けて2つの特徴があります 1.定理証明支援系であると同時に、純粋関数型言語でもある (プログラミングと証明を両立するための工夫もある) 2.強力なメタプログラミングフレームワークを備えている
プログラミングと証明を両立するために 実装と論理モデルを分離することができる ・自然数 Nat は、論理モデルはペアノの公理で与えられているが、 実際の計算は別の高速な方法で行われる ・文字列 String は Char
のリストとして定義されているが、 実際の計算は別の高速な方法で行われる などなど…。 正当性の証明付きで置換することもできるし、証明なしで置換することもできる
他の定理証明支援系とどう違うの? 大きく分けて2つの特徴があります 1.定理証明支援系であると同時に、純粋関数型言語でもある (プログラミングと証明を両立するための工夫もある) 2.強力なメタプログラミングフレームワークを備えている
強力なメタプログラミングフレームワークとは? syntax コマンドと declare_syntax_cat コマンドでパーサを書き換えて新しい構文を定義す ることができるほか、macro_rules コマンドでマクロも自由に書ける
実際にプログラムを書けるのか? 実際に Lean で書かれた(広く使われている)プログラムの例として、 ドキュメント生成ツール doc-gen4 や文書作成ツール verso がある。 実際、Lean
の公式マニュアルは verso を使って書かれている。
まとめ Lean 言語というプログラミング言語があって、 • Rocq (旧 Coq) のように定理証明支援系として使える • Haskell
のように純粋関数型言語としても使える 後発言語らしい工夫もあり • 定理証明とプログラミングを両立する工夫 • 純粋関数型言語のパフォーマンス面・UI面双方の欠点を改善
自己紹介 名前:井上亜星 所属:Proxima Technology GitHub 等ネットでは 北窓(きたまど) という名前でやってます
自己紹介 n 月刊ラムダノートに記事を寄稿したほか、 Lean by Example というオンラインリファレンスを書いてます
おわりに lean-ja という Lean の日本語コミュニティ (Discordサーバ)もあります。 ご興味があればぜひ。
ご清聴ありがとうございました