2024-01-01から1年間の記事一覧
クロージャーの一般的定義が知りたいので、他のプログラミング言語についても ChatGPT で質問してみました。 入力 5: これらの一連の主張はプログラミング言語 Miranda または Gofer でも成り立ちますか 結果: はい、これらの主張は Miranda や Gofer にも適…
「ラムダ計算と無限ラムダ多項式(13) - エレファント・ビジュアライザー調査記録」、「関数プログラミングのクロージャー(1) - エレファント・ビジュアライザー調査記録」でも調べていましたが、クロージャーの代数的構造を定義して、変数が変更可能の場合と…
今後の予定 前回の「クロージャーの調査」では 「クロージャーの調査(2) - エレファント・ビジュアライザー調査記録」では (言語1) クロージャーが使えるC#のコードで記述する言語 (言語2) クロージャーが使える通常の言語 (言語3) クロージャー調査用言語 …
プログラミング言語版不完全性定理(4) 以下は『不完全性定理とはなにか 完全版 ゲーデルとチューリング 天才はなにを証明したのか (ブルーバックス B 2277)』の190ページ(様相論理)にある「ブーロスによる第2不完全性定理の証明『LOGIC, LOGIC, AND, LOGIC」…
プログラミング言語版不完全性定理(3) 『不完全性定理とはなにか 完全版 ゲーデルとチューリング 天才はなにを証明したのか (ブルーバックス B 2277)』の様相論理の項の第二不完全性定理の証明の計算をラムダ計算のように書き直せないかということで ChatGPT…
繰り返しに対応するよう、さらに ChatGPT で書いてもらうことにします。 入力1: 項のリストなどの処理のために、「拡張 BNF」のようにパース関数を繰り返す機能を追加したいのですが、どのようにすれば良いでしょうか 結果: 「拡張 BNF」のようにパース関数…
もう少し BNF に対応させてほしいので、さらに ChatGPT で書いてもらうことにします。 入力1 以下のように入力しました。 以下のように変更してください: すべての代数的構造のクラスを表すインターフェースを追加してください パース情報クラスの内容は変更…
前回の結果は、BNF に構文解析の関数が対応しているのですが、もう少しちゃんと対応するようにできそうなので、さらに ChatGPT で調べてみます。 入力1 以下のように入力しました。 以下のように変更してください: パースのとき文字列を直接渡すかわりに次の…
Prolog のプログラムを C# 形式で書かれた構文を構文解析して C# のクラスに変換する ということをやりたいので、ChatGPT で調べました。前回の代数的構造の後、まず以下のように入力しました。 この代数的構造に従って Prolog の構文解析を行うプログラムを…
Prolog のプログラムを代数的に表す方法を ChatGPT で調べました。 入力: Prolog の項を代数的構造で表してください 結果: Prolog の項は、代数的構造として表現できます。その際、以下のような形式的な記述が適しています。 Prolog の項の代数的表現 Prolog…
「モノイド的論理プログラミング(1) - エレファント・ビジュアライザー調査記録」の「文脈自由文法」との比較で、実行順序という視点でも比較できそうなので、ChatGPT で調べてみます。 構文解析との比較 入力: 文脈自由文法の構文解析の処理と論理プログラ…
ChatGPT での調査は「人工知能的論理プログラミング(9) - エレファント・ビジュアライザー調査記録」と同じようになってきたので方向を変えます。「モノイド的構文解析」では C# 形式で記述するバージョンも作りましたが、論理プログラミングでそのようなこ…
目標 「モノイド的構文解析」では構文解析を冪等半環で表し、それを C# 形式で記述しました。ここでは論理プログラミングについて同様のことを試みます。この考察を発展させて論理プログラミングとクロージャーの関連についても調査する予定です。これがどの…
プログラミング言語版不完全性定理(2) 「自分自身が証明できない」という論理式を定義することができれば真であり証明できない論理式になるということで『不完全性定理とはなにか 完全版 ゲーデルとチューリング 天才はなにを証明したのか (ブルーバックス B…
前回の「Cω」に以下の機能を追加することにします。 「Cω」では任意の長さの自然数を扱うことができる プログラミング言語Cでも配列を使うことで実現できるので必要ない(メモリー不足にはならないとしているので任意の長さの配列を使うことができる)のですが…
『不完全性定理とはなにか』の新しい版(不完全性定理とはなにか 完全版 ゲーデルとチューリング 天才はなにを証明したのか (ブルーバックス B 2277))が出ていたので、旧版のわかりにくかったところが書き換えられているのかどうかを調べようと思ったのですが…
『数学基礎論 増補版』に「半群の語の問題」という用語を見つけたので ChatGPT で調べてみました。 「半群の語の問題」とは何ですか 「文脈自由文法」とは何ですか オートマトンとは何ですか 「文脈自由文法」を半群の語で説明してください ある決まった文字…
現在の状況 自由モノイドのイテレーター 「人工知能的代数学」では「モノイドの左逆元・右逆元」の問題をモノイドまたは半環を使って説明しようとしていました。この動作は Prolog の動作と同様のものとなっています。そのため「単一化アルゴリズム」では単…
モノイド的構文解析言語 MonParser (C# 形式 バージョン 0.3) MonParser バージョン 0.3 BNF 形式の演算子を C# 形式に合わせて変更します。「^」は BNF 形式では「->」とします。演算子の優先順位は C# に合わせます。 「str(文字列)」は構文木で使われない…
モノイド的構文解析言語 MonParser (C# 形式 バージョン 0.2) MonParser (BNF 形式)の構文解析 「par」はパーサーを表すクラス、「syn」は構文木を表すクラスです。 par str(string s) => par.StringRegExp(s); par st(string s) => par.String(s); par opr(…
モノイド的構文解析言語 MonParser - MonParser の構文解析(C# 形式) MonParser (C# 形式) バージョン 0.2 演算子を使うように仕様を変更します。演算子を多用すると何が書いてあるかわかりにくくなりますが、簡潔に書くことができるので全体の構成が把握し…
モノイド的構文解析言語 MonParser - MonParser の構文解析(C# 形式) MonParser (C# 形式) バージョン 0.1 最初に定義した MonParser は BNF を Python 版 MonIter の形式で書くものです。これは BNF 形式ということにします。MonParser (C# 形式)を MonPars…
モノイド的構文解析言語 MonParser - MonParser の構文解析(C# 形式) MonParser の構文を MonParser (C# 形式)で書きます。 「str(文字列)」は構文木で使われない文字列を表します。正規表現を使うことができます。 「op(文字列)」は構文木で使う文字列を表…
モノイド的構文解析言語 MonParser - MonParser の構文解析 MonParser の構文を MonParser で書きます。 def string = /".*"/; def operator = /'.*'/; def identifier = /[A-Za-z_][A-Za-z0-9_]*/; def constructor = /[A-Za-z_][A-Za-z0-9_]*/; def term =…
モノイド的構文解析言語 MonParser - 構文木の構成 文字列から構文木を作ることができるようにします。この言語を MonParser と呼ぶことにします。文字の集合 で生成された自由モノイド の冪集合 (これを表す一般的な記法は知らないのでここではこう書きます…
繰り返しの記法を追加します。また、C# 版では数値の演算が追加されていたのでそれも追加します。 かっこを使うことができるとします。 「式 *」は式の繰り返し(一回もない場合も含む)を表します。 「式 +」は式の繰り返し(一回は必要)を表します。 「式1 &*…
構文解析をモノイドで表す方法について調べます。さらに和集合を和とすると冪等半環(dioid)となるので冪等半環で表す方法について調べます。自由モノイドのイテレーター(6) - エレファント・ビジュアライザー調査記録の Python の lark モジュールの例は自由…
自由モノイドプログラミング言語の作成(MonIter バージョン1.2 仕様(23)) C# 構文木の調査 「自由モノイドのイテレーター(16) - エレファント・ビジュアライザー調査記録」に書いた構文木を調べる方法についてまとめます。 C# 構文木の調査用のクラス /// <summary> /</summary>…
自由モノイドプログラミング言語の作成(MonIter バージョン1.2 仕様(22)) C# 形式のコードから構文オブジェクトに変換して実行 「Roslyn」の「Syntax API」で C# の構文解析を行います。「 自由モノイドのイテレーター(14) - エレファント・ビジュアライザー…
自由モノイドプログラミング言語の作成(MonIter バージョン1.2 仕様(21)) MonIter コードから C# コードに変換して実行 「Roslyn for Scripting」で C# のコードを実行します。「自由モノイドのイテレーター(13) - エレファント・ビジュアライザー調査記録」…