エレファント・ビジュアライザー調査記録

ビジュアルプログラミングで数式の変形を表すことを考えていくブロクです。

人工知能的代数学(15)

モノイドの左逆元・右逆元(4) いったんプログラムの説明を書いて、その説明を元に説明を書いてもらうことにします。変数の全体 と定数の全体 で自由生成された半群を とおきます(変数は大文字から始まる文字列、定数は小文字から始まる文字列、演算子は とし…

人工知能的代数学(14)

モノイドの左逆元・右逆元(3) 前回のプログラムの動作を確認するため 「以下の Python のコードは、「モノイドの左逆元と右逆元が一致する」ことを示す式の変形を表示するものです。proof_transformation で path を指定して調べる範囲を限定すると停止する…

中間報告(18)

ブログに書く意味があるものは何かを ChatGPT で調べようと思ったのですが、なかなかうまくいきません。最近では Python の機能を調べるために使っています。Python の情報は詳しく教えてくれます。ウェブで検索すると古いバージョンの情報が出てくることが…

人工知能的代数学(13)

モノイドの左逆元・右逆元(2) 「モノイドの左逆元・右逆元」の問題について ChatGPT でやってみた記事の続きです。動くように書き直したところ、もとのプログラムはほぼなくなってしまいました。この処理をモノイドを使って表し、Prolog の処理を記述するた…

人工知能的代数学(12)

モノイドの左逆元・右逆元 「モノイドの左逆元・右逆元」の問題について ChatGPT でやってみました。以下のように入力しました。 以下のような半群の式の変形をするプログラムを書いてください: 変数の全体 と定数の全体 で自由生成された半群を とおきます…

人工知能的論理プログラミング(9)

論理プログラミング調査 Prolog の動作を説明しようとしたとき、正しく説明できているかどうかわかりにくいという問題があります。また、自分が考えている説明が正しいのかどうかもよくわかりません。この問題を解決するために、モノイドを使って説明するこ…

人工知能的サーバー対ブラウザー(5)

今回は ChatGPT で Python から F# に書き換えたのですが、これはそのままでは動かなくて、かなり書き直しました。このプログラムの mutable な変数を mutable ではないものに変更するとどうなるか、ということを考えたいのですが、これはなかなか難しそうで…

人工知能的サーバー対ブラウザー(4)

前回のサンプルは、「ユーザーの入力をサーバーのプログラムに反映させるにはどうするか」というものでした。以前のこのブログで、これを変数が変更可能なプログラミング言語で書いたものを、変数が変更不可能なものに書き換えるということをやっていました…

人工知能的サーバー対ブラウザー(3)

もう一つの問題として、このプログラムを Haskell で書くとどうなるかということを考えます。Numbers クラスでは情報を保持するようになっていますが、Haskell では変数の値を変更することができないので、同じようにはできません。この問題をどうするかとい…

人工知能的サーバー対ブラウザー(2)

ChatGPT で調べながら 3 の平方根を求めるプログラムを decimal モジュールを使うように書き直しました。 import decimal # Decimalコンテキストの設定 decimal.getcontext().prec = 21 # 精度を21桁に設定 def UnfoldL(next, init): src = init while True:…

人工知能的サーバー対ブラウザー(1)

ChatGPT で以下のように入力してみました。 「以下のようなプログラムを書いてください: ユーザーはブラウザーを通してサーバーと通信しています。 ユーザーはサーバーから、ある自然数と、その数の平方根をある桁数まで計算したものを受け取ることができま…

人工知能的代数学(11)

ビジュアルプログラミング 「ビジュアルプログラミング」の項目では、数式の変形で記述すると複雑になるものをビジュアルプログラミングの手法でわかりやすくできないかということを調べていました。ここで扱った「置換の分類」、「交換子の計算」、「マグマ…

人工知能的代数学(10)

マグマの計算(4) 「エレファントな群とリー代数(2) - エレファント・ビジュアライザー調査記録」でやった「モノイドの左逆元・右逆元」の問題をやります。これも基本的には Python に書き換えただけになっています。前回のプログラムでは表示される式が多す…

人工知能的代数学(9)

マグマの計算(3) 前回の「マグマの左単位元と右単位元」では、等式の集合から推移律によって新しい等式の集合を作っていましたが、等式の数が多くなりすぎるので、「エレファントな群とリー代数(1) - エレファント・ビジュアライザー調査記録」と同様に一つ…

人工知能的代数学(8)

マグマの計算(2) 「マグマの左単位元と右単位元」の続きです。「推移閉包を求めるプログラム」は使えそうにないので、推移律を一回だけ適用するように変更しました。 class Exp: pass # Multiplication クラス class Multiplication(Exp): def __init__(self…

人工知能的代数学(7)

マグマの計算 「マグマの左単位元と右単位元」の問題の構文解析を ChatGPT でやってみるため以下のように入力しました。 「マグマ(二項演算をもつ代数的構造)の構文解析をするプログラムを書いてください: 演算子は * とします。 かっこを使えるとします。 …

人工知能的代数学(6)

交換子の計算(2) 「マグマの左単位元と右単位元」の問題の構文解析を ChatGPT でやってみようと入力したところ、「Lark ライブラリ」を使ったプログラムが返ってきました。そこでいったんこのプログラムを自分で改造して交換子の計算の構文解析をやってみる…

人工知能的代数学(5)

交換子の計算 以前引用した交換子の計算をするプログラムを作成しました。これは ChatGPT で「文字列を逆順にして、大文字を小文字に、小文字を大文字に変換したものを取得するプログラムを書いてください」と「文字列の中に「大文字とその文字の小文字」か…

人工知能的代数学(4)

プログラムの改造(2) 前回のプログラムに、互換に適用した場合のコメントを入れます。assert を入れようと思ったのですが、うまくできなかったのでコメントだけです。ChatGPT で assert とコメントを入れることができれば良いのですが、やり方がわからないの…

人工知能的代数学(3)

置換の分類(2) ChatGPT で以下のように入力しました。 置換を隣接互換の積に分解するプログラムを書いてください これは正しいプログラムを得ることができました。 def adjacent_transpositions(perm): """ 指定された置換を隣接互換の積に分解します。 :par…

人工知能的代数学(2)

置換の分類 Visual Studio でデザイナーが開けなくなったので、C# を使うのをやめて、Google Colab というのを使ってみました。これは Python を使うことになります。これにはプログラムを書いてくれる機能があって、「 を指定して、 次の対称群のすべての元…

人工知能的論理プログラミング(8)

理想的な並行論理プログラミング言語 「論理プログラミング」、「論理計算と随伴関手」、「半環上のフラクタル代数」、「フラクタル代数言語 Fractal」、「一階述語論理」などの内容です。以下のようなことを考察します。 Prolog のプログラムを「プログラム…

人工知能的写像の理論(1)

写像と同値類 ChatGPTでブログの記事を分析したものを書いてもらうというのはなかなか難しそうなので、ChatGPTでいろいろやりとりしながら、それを参考に記事の内容をまとめてみることにします。まず写像と同値類の関係についてまとめてみます。「群論の計算…

人工知能的代数学(1)

目標 ここでは「群論の計算」などで扱っている問題をChatGPTを使って書いていきます。まず、これは何のためにやっているのかを書きます。これはChatGPTではなかなかちゃんとした答えが返ってくるように書くのは難しいようなので、大まかなことは自分で書きま…

人工知能的論理プログラミング(7)

並行論理プログラミングと半環 「論理プログラミング」では PLP と PLP+ というプログラミング言語を考えています。PLP は「Prolog について」のところで書いたような理想的な並行 Prolog です。PLP+ はこれの無限に実行できるバージョンなのですが、PLP が…

人工知能的論理プログラミング(6)

半環について Prolog のプログラムは論理式と解釈できます。論理式の全体は分配束となります。分配束は(単位元の存在などを無視すると)半環となります。このブログでは Prolog のプログラムを半環を使って調べています。分配束を使って調べても良いのですが…

人工知能的論理プログラミング(5)

Prolog について Prolog について調査します。以下はChatGPTでいろいろ聞いてみたことの答えです。Prolog の本はあまり見つからないのでこの情報は役立ちます。 プログラミング言語 Prolog の詳しい仕様を教えてください Prolog(Programming in Logic)は、…

人工知能的論理プログラミング(4)

F# と Haskell のサンプル F# と Haskell でもサンプルを書いてもらいます。この理由は、このようなプログラムは F# では書くことができるが Prolog ではできないという予想で、Prolog にどのような機能を追加すればできるかをこのブログでは調べていたため…

人工知能的論理プログラミング(3)

Prolog のサンプル いったん Prolog で書いてもらうことにします。以下のように入力しました。 このプログラムを Prolog で書いてください 以下は回答です。 以下は、Prologで素数登録システムを実装するためのコード例です。このコードは、Prologの論理プロ…

人工知能的論理プログラミング(2)

すべて言葉で説明しようとするとうまくいかないということがわかってきたので、いったんサンプルプログラムを作ってもらうことにします。しかしプログラムを作ってもらうことは、今のところあまりうまくいっていません。以下のように入力しました。 サーバー…