AlphaProofの簡易版でアインシュタインの三平方の定理証明を実装してみた

********

各種AIシミュレーション紹介・販売ページはこちら。
Product Shop

売上予測や需要変化、収支確認など、事業判断に役立つAIシミュレーションをわかりやすくまとめています。
数字をもとに検討したい方や、企画・業務改善の参考資料を探している方は、ぜひ一度ご覧ください。

AIシミュレーションについてのお問い合わせも下記で受付中
↓↓↓

***************

おつかれさんです。
いやー アンソロピックさんのFable5の突然BAN。
フロンティアモデルが一発でBANされるなんて。

もっと使っとけばなあ。
実力はすごかったですよね。
早く復活して欲しいですわな。

そんなこんなで今回は
アート系でも、ビジネス系でもなく、
AI for サイエンス(あえてカタカナで)
これ系でいってみます。

さて、下記の記事に興味があったので、簡易版のAlphaProofを実装してみました。
https://ledge.ai/articles/deepmind_alphaproof_nexus_erdos_problems

本家 Deepmindのブログ (英文)
https://deepmind.google/blog/ai-solves-imo-problems-at-silver-medal-level/

以下の記事は数式がちょこちょこ出てきます。
数式はちょっとなあという方は読み飛ばしてください。

簡易版AlphaProofで数学証明に挑戦

今回は、ローカルPC上に作った簡易版AlphaProofを使って、アインシュタイン型の三平方の定理証明をLeanで実装してみました。

といっても、ここで使ったのは本家のAlphaProofそのものではありません。
Leanの証明コードを自動修正するための簡易的な証明エージェントです。

Leanでは、数学の証明をコードとして書くことができます。

そして、そのコードが本当に正しいかどうかを、Leanが厳密にチェックしてくれます。

つまり、ただ「それっぽい説明」を書くのではなく、
コンピューターに検査される形で数学の証明を書くということです。

今回はその題材として、誰でも一度は聞いたことがある「三平方の定理」を選びました。

しかも、普通の三平方の定理ではなく、
「アインシュタインが若いころに考えた」と言われるタイプの証明をテーマにしています。

AlphaProofとは

AlphaProofは、Google DeepMindが発表した数学証明AIの仕組みです。自然言語で書かれた数学問題を、Leanのような形式言語で扱える形に変換し、コンピューター上で正しい証明を探索します。

2024年には、AlphaProofとAlphaGeometry 2を組み合わせたシステムが、国際数学オリンピックの問題で銀メダル相当の成績を出したことでも注目されました。

さらにその後、関連する研究としてAlphaProof Nexusという枠組みも報告されています。
これは大規模言語モデルによる証明案の生成と、Leanによる機械的な検証を組み合わせるもので、エルデシュ問題と呼ばれる未解決数学問題のうち、353件に挑戦して9件を解決したとされています。

ここで重要なのは、AIがただ文章で「それっぽい証明」を作るのではなく、Leanによって証明が本当に正しいか検査される点です。
今回使ったものは本家AlphaProofではなく、その考え方に着想を得てローカルで作った簡易版です。

アインシュタインの三平方の定理証明とは

三平方の定理は、直角三角形について成り立つ有名な定理です。

直角をはさむ2つの辺を ab、斜めの一番長い辺を c とすると、

a² + b² = c²
になります。

学校では、正方形を描いて面積で説明する証明を見た人も多いと思います。

一方、アインシュタイン型の証明は少し雰囲気が違います。

直角三角形の中に、もう一本線を引きます。

直角のところから、斜辺に向かって垂直に線を下ろすのです。

すると、もとの大きな直角三角形が、2つの小さな直角三角形に分かれます。

Screenshot

ここで面白いのは、
大きな三角形と、分かれた2つの小さな三角形が、全部同じ形になる
という点です。

大きさは違います。

でも形は同じです。

数学では、こういう関係を相似と呼びます。

この「相似」という考え方を使うことで、三平方の定理をとてもすっきり導くことができます。

今回Leanで証明する範囲:幾何全体ではなく読み物としての核心へ

ただし、今回いきなり全部をLeanで証明したわけではありません。

ここはかなり大事です。

本当に厳密にやるなら、Leanの中で、

点A、点B、点Cを定義する
直角三角形であることを定義する
Cから斜辺に垂線を下ろす
3つの三角形が相似であることを証明する
相似なら面積比が辺の2乗比になることを証明する

というところまで全部やる必要があります。

これはかなり大きな作業になります。

そこで今回は、まず一番おいしい部分だけを切り出しました。

それが、
相似三角形の面積比から、三平方の式を導く部分
です。

アインシュタイン型の証明では、3つの三角形が相似になります。

相似な図形では、長さが2倍になれば面積は4倍になります。
長さが3倍になれば、面積は9倍になります。

つまり、面積は長さの2乗に比例します。

この考え方から、

大きい三角形の面積は c² に比例
小さい三角形の一方の面積は a² に比例
もう一方の面積は b² に比例

と考えられます。

そして、大きい三角形は、小さい三角形2つを合わせたものです。
だから、

c² に比例する面積
=
a² に比例する面積
+
b² に比例する面積
となります。

ここから、
c² = a² + b²
が出てくるわけです。

今回Leanで証明したのは、まさにこの部分です。

言い換えると、
図形そのものを完全に証明したのではなく、アインシュタイン型証明の代数コアを形式検証した
という位置づけです。

証明ターゲットを作成する

次に、簡易版AlphaProofに渡すためのLeanファイルを作りました。

Leanでは、まだ証明が完成していない部分に sorry と書くことができます。

これは、ざっくり言えば、
ここはあとで証明する
という印です。

今回の流れでは、まずsorry 入りの証明ターゲットを作りました。

そして、その未完成のLeanファイルを、簡易版AlphaProofに渡して、自動修正できるかを試しました。

最初に狙ったのは、次のような証明です。

c² × k = a² × k + b² × k
k は 0 ではない
だから
c² = a² + b²

ここで k は、面積が辺の2乗に比例するときの共通の係数です。

三角形の形が同じなら、面積は「斜辺の長さの2乗 × 共通係数」の形で表せます。

この共通係数 k が両辺にかかっているので、
k が0でなければ消すことができます。

人間が見れば当たり前に思える操作ですが、Leanではそれをきちんと証明として書く必要があります。

簡易版AlphaProofで証明を自動修正する

準備したLeanファイルを、ローカルの簡易版AlphaProofに渡して実行しました。
実行後、成功ファイルが出力されました。

その中では、未完成だった証明が、Leanで通る形に修正されています。

証明の流れを日本語で書くと、こうです。
まず、
c² × k = a² × k + b² × k
という前提があります。

右側の
a² × k + b² × k
は、まとめると、

(a² + b²) × k
になります。

だから、
c² × k = (a² + b²) × k
です。

そして、k ≠ 0 なので、両辺の k を消せます。

その結果、
c² = a² + b²
が得られます。

Leanのコードでは、この「共通因子を消す」操作がきちんと書かれていました。

これにより、アインシュタイン型三平方証明の中核である、
面積比から三平方の式を導く部分をLeanで証明できたとなります。

間違った証明コードとの比較と今回分かったこと

今回はさらに、比較実験も行いました。
ただ正しい証明が通っただけでは、記事として少し物足りません。
そこで、あえて間違った証明コードも用意しました。

最初に試したのは、命題自体は正しいけれど、証明コードだけが間違っているパターンです。

具体的には、証明部分に ring だけを書きました。

ring は代数式を整理するためのLeanの機能です。
しかし今回の証明では、単に式を整理するだけでは足りません。

前提として与えられた式を使い、さらに k ≠ 0 という条件を使って、共通因子 k を消す必要があります。
そのため、ring だけでは証明として不十分です。

ところが、簡易版AlphaProofを実行すると、この間違った証明コードは修正されました。
最終的には、ちゃんと前提を使い、k ≠ 0 によって共通因子を消す形に直されました。

つまり、
正しい命題に対して、証明コードが不十分だった場合は、簡易版AlphaProofで修正できた
ということです。

偽の命題も試してみる

次に、もっと重要な実験として、数学的に偽の命題も試しました。

本来の証明では、k ≠ 0 が必要です。
そこで、あえてこの条件を外してみました。
するとどうなるか。

もし k = 0 なら、
c² × 0 = a² × 0 + b² × 0
はいつでも成り立ちます。

左も右も0になるからです。

でも、そこから
c² = a² + b²
が成り立つとは限りません。

つまり、k ≠ 0 を外した命題は、数学的には正しくありません。

この偽の命題は、簡易版AlphaProofでも証明できませんでした。

これはかなり大事な結果です。
AIが何でもかんでも「それっぽい証明」を作って通してしまうわけではありません。

最終的にはLeanが、
その証明が本当に正しいかどうか
を厳密にチェックしているということです。

今回の実験で見えたこと

今回の実験で分かったことは、大きく3つあります。

1つ目は、簡易版AlphaProofでも、正しい命題に対してはLean証明を自動修正できる場合があることです。

2つ目は、証明コードが多少間違っていても、適切な形に直せる可能性があることです。

3つ目は、数学的に偽の命題は、最終的にはLeanで通らないということです。

今回実装できたのは、三平方の定理の完全な幾何証明ではありません。

しかし、アインシュタイン型証明の中核である、
相似三角形の面積比

c²k = a²k + b²k

c² = a² + b²
という流れは、Leanで形式証明できました。

読み物として見れば、これはかなり面白い結果です。

数学の証明をAIに任せるのではなく、
AIが証明案を作り、Leanがそれを厳密に検査する。

この役割分担が見える実験になりました。

今後は、さらに一歩進めて、垂線や相似そのものをLeanで扱う方向に進めると、より本格的な幾何証明に近づいていけそうです。

今回使ったleanコードの一例

あくまでもほんの一例です。
そのうちに、本体をGitにアップしようかと。

下記は表示バグで、インデントいまいちです。
お気に入りのAIに修正してもらってください。


import Mathlib

theorem pythagoras_from_area_ratio
{a b c k : ℝ}
(hk : k ≠ 0)
(h : c^2 * k = a^2 * k + b^2 * k) :
c^2 = a^2 + b^2 := by
apply mul_right_cancel₀ hk
calc
c^2 * k = a^2 * k + b^2 * k := h
_ = (a^2 + b^2) * k := by ring


****************

最近のデジタルアート作品を掲載!

X 旧ツイッターもやってます。
https://x.com/ison1232

インスタグラムはこちら
https://www.instagram.com/nanahati555/

**************

各種AIシミュレーション紹介・販売ページの開設

********

各種AIシミュレーション紹介・販売ページはこちら。
Product Shop

売上予測や需要変化、収支確認など、事業判断に役立つAIシミュレーションをわかりやすくまとめています。
数字をもとに検討したい方や、企画・業務改善の参考資料を探している方は、ぜひ一度ご覧ください。

AIシミュレーションについてのお問い合わせも下記で受付中
↓↓↓

***************

旧「LINEチャットボット屋」のページは終了しました。
興味のある方はお問い合わせください。

***************

各種AIシミュレーション販売専用ページを公開しました

このたび、各種AIシミュレーションを紹介・販売するための専用ページを公開しました。

Product Shop

これまで個別にご案内していたシミュレーション商品を、より見やすく、わかりやすく確認できるようにするため、専用ページとしてまとめています。

どんなAIシミュレーションを扱っているのか

AIシミュレーションは、数字や条件をもとにして、将来の動きや結果を事前に確認するためのツールです。

たとえば、売上予測、需要の変化、収支の確認、事業計画の検討など、さまざまな場面で活用できます。

「実際にやってみないとわからないこと」を、事前にある程度イメージできるのがシミュレーションの大きなメリットです。

ビジネスの判断材料として使ったり、社内説明の資料づくりに活用したり、サービス内容によっては教育・研修用としても利用できます。

専用ページから確認・お問い合わせできます

専用ページでは、各シミュレーション商品の内容を確認できるようにしています。

気になる商品がありましたら、ページ内のお問い合わせボタンからご連絡ください。

「こういう用途で使えるか知りたい」
「自社向けに少し内容を変えられるか相談したい」
といったお問い合わせも歓迎です。

今後も、用途に合わせたシミュレーション商品を追加していく予定です。

数字をもとに判断したい方、事業や企画の検討材料がほしい方は、ぜひ一度、専用ページをご覧ください。
Product Shop

****************

最近のデジタルアート作品を掲載!

X 旧ツイッターもやってます。
https://x.com/ison1232

インスタグラムはこちら
https://www.instagram.com/nanahati555/

**************

契約書を読むのが面倒。NotebookLMで内容確認をラクにする方法

********

各種AIシミュレーション紹介・販売ページはこちら。
Product Shop

売上予測や需要変化、収支確認など、事業判断に役立つAIシミュレーションをわかりやすくまとめています。
数字をもとに検討したい方や、企画・業務改善の参考資料を探している方は、ぜひ一度ご覧ください。

AIシミュレーションについてのお問い合わせも下記で受付中
↓↓↓

***************

契約書を読むのが面倒

契約書は大事だけど、読むのがとにかく面倒

契約書や利用規約、申込書、覚書などの書類は、仕事でも日常生活でも意外とよく出てきます。

たとえば、業務委託契約書、賃貸契約書、サービス利用契約、外注先との取り決め、秘密保持契約などです。

ウチでも契約時にはこういった書類を作ったりするのですが、いかんせん読むのが面倒。
なんとかならないかなとは常に思っていました。

文字が細かい。
文章がかたい。
似たような表現が何度も出てくる。

しかも、どこが重要なのかが一目ではわかりにくい。

そのため、つい「だいたい大丈夫だろう」と思って、流し読みしてしまうことがあります。

でも契約書には、あとから大きく影響する内容が書かれていることがあります。

契約期間はいつまでか。
途中で解約できるのか。
支払いはいつ発生するのか。
違約金はあるのか。
禁止されている行為は何か。

こうした点を見落とすと、あとで困る可能性があります。

そこで役立つのが、GoogleのAIノートツールである「NotebookLM」です。

スマホアプリ、PCアプリといろいろあるので、ダウンロードして使ってみてください。

このアプリは何をするのかと言うと、GoogleのAIがアップロードされた書類のみについて質問に答えてくれると言うものです。

通常のchatGPTとかGemmniなんかだと、一般的な知識で答えますよね。

そのAIが学習したその知識を加味して答えるんですが、このnotebookLMはアップロードされた書類のみについて答えるので、余計な事は 回答しないように設計されています

ただし、注意点があって、アップロードした書類は、Googleのサーバーにアップされるので、社内の超機密情報などはアップしないほうがよろしいかと思います。

まぁ多少見られても問題ない。そんな書類ならいくらでもアップロードして使ってみたらと思います。

超重要な社内機密情報なんかは、こういった汎用されたアプリを使わずに、独自のAI対応のRAGシステムなんかを作って、社内専門でいろいろ使ったほうがよろしいかと思います。

さて、そんなNotebookLMを使うと、契約書の内容を読み込ませて、それについて、いろいろ質問することができます。

つまり、契約書を最初から最後まで自力で読む前に、気になるポイントをAIに質問しながら確認できるのです。

 

NotebookLMを使えば、契約書の内容を質問できる

NotebookLMは、読み込ませた資料をもとに、内容を整理したり、質問に答えたりしてくれるツールです。

通常のAIチャットと違う点は、こちらがアップロードした資料を中心に回答してくれるところです。

たとえば、契約書を読み込ませたあとに、次のような質問ができます。

「この契約の期間はいつまでですか?」
「途中解約はできますか?」
「支払い条件をわかりやすく説明してください」
「こちら側が注意すべき条文はありますか?」
「違約金に関する記載はありますか?」

このように、契約書の中から知りたいことを質問できるのが大きなメリットです。

契約書を読むときに大変なのは、文章量そのものだけではありません。

本当に大変なのは、
「結局、何が重要なのか」
「自分はどこを見ればいいのか」
「この表現はどういう意味なのか」
という部分です。

NotebookLMを使うと、この部分を会話形式で確認できます。

たとえば、自分で契約書を読んでいて「解約」という言葉が出てきたとします。

そのときに、
「解約について書かれている部分をまとめてください」
と質問すれば、関連する内容を整理してくれます。

さらに、「この契約では、どんな場合に解約できますか?」
と聞けば、より具体的に確認できます。

つまり、契約書を読む作業が、読むだけの作業から、質問しながら理解する作業に変わるのです。

これはかなり大きな違いです。

簡単な契約書を用意してNotebookLMに読み込ませる

今回は、ブログ記事用の例として、簡単な契約書を用意します。

たとえば、次のような業務委託契約書を想定します。
内容はシンプルで、ある人が、ブログ記事の作成を外部ライターに依頼する契約です。

主な内容は次のようなものです。

*********

契約期間は、2026年6月1日から2026年8月31日まで。

業務内容は、ブログ記事の作成。

報酬は1記事あたり5,000円。

納品後、依頼者が内容を確認し、問題がなければ翌月末に支払う。

契約を途中で解約する場合は、原則として14日前までに相手へ通知する。

納品物の著作権は、報酬の支払い完了後に依頼者へ移る。

秘密情報を第三者に漏らしてはいけない。

************

このような簡単な契約書でも、読む側からすると確認するポイントはいくつもあります。

特に重要なのは、契約期間、報酬、支払い時期、解約条件、著作権、秘密保持などです。

これらをすべて自分で探すのは、少し面倒です。
そこで、この契約書をNotebookLMに読み込ませます。

使い方としては、まずNotebookLMで新しいノートブックを作成します。
次に、契約書のテキストやPDFを資料として追加します。
読み込みが完了したら、あとはその契約書について質問できます。

ここで大事なのは、いきなり難しい質問をする必要はないということです。

最初はシンプルに、
「この契約書の内容をわかりやすく要約してください」と聞くだけでも十分です。

すると、契約書全体の概要をつかみやすくなります。
そのあとで、気になる点を一つずつ質問していきます。

「契約期間は?」「解約条件は?」と質問してみる

契約書をNotebookLMに読み込ませたら、実際に質問してみます。
まずは、基本的な質問です。

「この契約の期間はいつからいつまでですか?」
この質問により、契約期間をすぐに確認できます。

契約書の中では、契約期間が第何条かに書かれていることが多いですが、自分で探すと少し手間です。

NotebookLMに聞けば、該当する内容をもとに答えてくれます。

次に、解約条件を聞いてみます。
「この契約は途中で解約できますか?」

すると、契約書の中にある解約に関する条文をもとに、途中解約の条件を確認できます。

たとえば、
「14日前までに通知すれば解約できる」
という内容が書かれていれば、その点を説明してくれます。

さらに、支払い条件についても質問できます。
「報酬はいつ支払われますか?」
「支払いが発生する条件は何ですか?」

こう聞くことで、報酬の発生タイミングや支払い時期を確認できます。

特に業務委託契約では、ここはとても重要です。
納品した時点で報酬が発生するのか。
検収が終わってからなのか。
翌月末払いなのか。

こうした違いは、実務ではかなり大きいです。

また、著作権についても確認できます。
「納品した記事の著作権は誰のものになりますか?」

この質問によって、作成した文章の権利がどちらに帰属するのかを確認できます。

たとえば、
「報酬の支払い完了後に依頼者へ移転する」
という内容であれば、支払い前と支払い後で扱いが変わる可能性があります。

このように、NotebookLMを使うと、契約書の気になる部分をピンポイントで確認できます。

ただ読むだけでは見落としそうな部分も、質問することで気づきやすくなります。

さらに便利なのは、質問を深掘りできるところです。
たとえば、
「この契約書で受託者が注意すべき点を3つ挙げてください」
と聞けば、自分が気をつけるべきポイントを整理できます。

逆に、
「依頼者側にとって重要な点を教えてください」
と聞けば、相手側の視点でも確認できます。

契約書は、どちらの立場で読むかによって重要なポイントが変わります。

NotebookLMを使えば、その視点の切り替えもしやすくなります。

まとめ:NotebookLMで契約書確認のハードルを下げる

契約書は大事です。
しかし、読むのは面倒です。

文章が難しく、どこを確認すればいいのかわかりにくいことも多いです。
そんなときにNotebookLMを使うと、契約書の内容を質問しながら確認できます。

契約期間、支払い条件、解約条件、著作権、秘密保持など、重要なポイントを一つずつ聞いていけるのが便利です。

特に、契約書に慣れていない人にとっては、最初の理解を助けてくれるツールになります。

もちろん、NotebookLMの回答が常に完全に正しいとは限りません。

重要な契約や金額の大きい契約では、弁護士や専門家に確認することも大切です。

ただし、専門家に相談する前の準備として、
「どこがわからないのか」
「どこが不安なのか」
「何を質問すべきなのか」
を整理するには、とても役立ちます。

契約書をいきなり全部読もうとすると、どうしても気が重くなります。
でも、NotebookLMに読み込ませて質問する形にすれば、確認作業のハードルはかなり下がります。

これからは、契約書を読むときに、
「まずAIに聞いて、全体像をつかむ」
という使い方が広がっていくでしょう。

追記 : 社内の資料も読み込ませることができる

NotebookLMが便利なのは、契約書だけではありません。
社内で使っている重要な資料を読み込ませて、内容を確認する使い方もできます。

たとえば、社内マニュアル、業務手順書、研修資料、会議資料、商品説明資料、顧客対応マニュアルなどです。

こうした資料は、必要なときに限って「どこに書いてあったかな」と探すのが大変です。

フォルダの中にPDFやWordファイルがたくさんあり、ファイル名を見ても中身がすぐにわからないこともあります。

そんなとき、NotebookLMに資料を読み込ませておけば、資料の内容について質問できます。

※冒頭にも書きましたが、超重要機密書類なんかはアップしない方がよろしいです。そういった超機密書類は社内専用サーバでRAGシステムとかで利用しましょう。

さて話は戻って、
NotebookLMには、たとえば、
「この資料の重要ポイントをまとめてください」
「新人が最初に覚えるべき内容は何ですか?」
「顧客対応で注意すべき点を教えてください」
「このマニュアルの手順を簡単に説明してください」
といった聞き方ができます。

これにより、資料を最初から最後まで読み直さなくても、必要な情報にたどり着きやすくなります。

特に社内資料は、一度作ったあとに何度も参照されることが多いです。

しかし、ページ数が多かったり、専門用語が多かったりすると、読むだけで時間がかかります。

NotebookLMを使えば、資料を「読むもの」から「質問できるもの」に変えられます。

これはかなり大きな変化です。

また、複数の資料を読み込ませておけば、関連する内容をまとめて確認することもできます。

たとえば、営業マニュアルと商品説明資料を読み込ませて、
「この商品の説明で営業担当が特に注意すべき点は?」
と質問すれば、資料を横断して内容を整理しやすくなります。

NotebookLMは、資料を読む負担を減らし、必要な情報を見つけやすくする強力な補助ツールです。

契約書だけでなく、社内資料の確認や業務理解にも活用できれば、日々の作業効率を大きく上げることができるでしょう。

 

****************

最近のデジタルアート作品を掲載!

X 旧ツイッターもやってます。
https://x.com/ison1232

インスタグラムはこちら
https://www.instagram.com/nanahati555/

**************

PAGE TOP