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

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

ChatGPT

超限自由モノイド(4)

「モノイド的論理プログラミング(1) - エレファント・ビジュアライザー調査記録」の議論を一般化するため、まず「超限自由冪等半環」の定義を ChatGPT でやってみます。 9 モノイドの冪集合は、モノイドの積から定義される積と和集合によって冪等半環となる…

超限自由モノイド(3)

「文脈自由文法」と「正規表現」の一般化を ChatGPT でやってみました。これをプログラミング言語の処理系と考えると、無限列のデータを扱う理論を提供するという観点で意味があります。これを発展させて 論理プログラミングの一般化 関数プログラミングの一…

超限自由モノイド(2)

IOモナドについても ChatGPT で調べてみました。IOモナドの定義はよくわからないのですが、これも有限のデータを扱うという前提で聞いてみました。 5 無限長の入出力を扱う「IOモナド」を「超限自由モノイド」を使って説明してください 以下の結果が返されま…

超限自由モノイド(1)

「自由モノイドのイテレーター(2) - エレファント・ビジュアライザー調査記録」で無限長の項の自由モノイドについて ChatGPT で調べましたが、今回はそれを拡張して任意の順序数の長さの項を持つものについて ChatGPT で調べてみます。これの一般的な用語は…

自動アップデート理論(3)

アップデートの前後のプログラムを組み合わせることをプログラミング言語の機能で表すとどうなるかということを ChatGPT で調べてみました。 7 アップデートされる前のプログラムはどうなりますか アップデートされる前のプログラムは、通常以下のような状態…

自動アップデート理論(2)

プログラミング言語について質問してみます。人間が書かないのであればプログラムは人間に理解できる必要はないし、アップデートに必要な機能をすべて持っていれば良いのではないかということなのですが、質問のしかたが難しいです。 4 アップデートの手法と…

自動アップデート理論(1)

「差分アップデート」ではプログラミング言語に基づいて調べる予定でしたが、方向を変えて自動的にアップデートする理論に焦点を当てて ChatGPT で質問してみることにします。 1 ビッグデータによって自動的にアップデートされているプログラムはありますか …

差分アップデート(1)

プログラムのアップデートについて問題がわかりやすくなるまで ChatGPT に質問する形で調べていきます。 ゲーム(1) この問題は何かというとユーザーの入力を処理する「関数プログラミング」のアップデートについて調べようというものです。アップデートの前…

人工知能的代数学(15)

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

人工知能的代数学(14)

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

人工知能的代数学(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でいろいろやりとりしながら、それを参考に記事の内容をまとめてみることにします。まず写像と同値類の関係についてまとめてみます。「群論の計算…