タグ付けされた質問 「pl.programming-languages」

特にプログラミング言語は、そのセマンティクスに焦点を当てています。

1
建設的な計量空間の不動点定理?
バナッハの不動点定理によれば、空でない完全な計量空間があればAAA、一様に収縮する関数f:A→Af:A→Af : A \to Aには一意の不動点μ(f)μ(f)\mu(f)ます。しかし、この定理の証明は選択公理を必要とする-私たちは、任意の要素を選択する必要があり∈ Aを反復開始するfはコーシー列を取得するには、からAを、F ()、F 2()、F 3(a )、a∈Aa∈Aa \in Afffa,f(a),f2(a),f3(a),…a,f(a),f2(a),f3(a),…a, f(a), f^2(a), f^3(a), \ldots。 建設的分析では不動点定理はどのように述べられていますか? また、建設的な計量空間への簡潔な参照はありますか? 私が尋ねる理由は、タイプがさらにメトリック構造を(特に)運ぶ、システムFのモデルを構築したいからです。建設的なセット理論では、Uが積、指数関数、およびUインデックス付きファミリで閉じられ、システムFのモデルを簡単に作成できるように、セットファミリを作成できるので、かなり便利です。UUUUUUUうんU 建設的なウルトラメトリック空間の同様のファミリーを作り上げることができたら、とてもうれしいです。しかし、建設的な集合論に選択肢を追加することは古典的であるため、明らかに、不動点定理、およびおそらく他のものについてももっと注意する必要があります。

1
線形型を持つプログラミング言語のデータ構造
線形型をサポートするプログラミング言語を扱っていると仮定します(線形型の用語は、多くても1回しか使用できません)。これにより、いくつかの計算効果(突然変異、オペランドの型の変更など)を、言語にとって問題のある方法で処理できます。言語の型システムは「永遠の真理」のみで動作します。 多くのデータ構造は帰納的タイプで特徴付けることができます(リストとツリーは標準的な例です)。線形誘導型をミックスに追加すると、可変データ構造も処理できます。 ただし、線形型のプログラミング言語で共有および循環参照を示すデータ構造をどのように表現するかは明確ではありません(そのようなデータ構造の例は、隣接リストまたはその他の循環リストで表されるDAGおよび他のグラフです)。できますか?それが不可能な場合、そのようなデータ構造に対応するために、どのように言語を拡張する必要がありますか? 私がこれまでに見つけた最も複雑な例は、二重にリンクされたリストです。他の例はありますか?

4
独自のソースコードに関するプログラム推論
この質問のインスピレーションは、次の(あいまいな)質問です:独自のソースコードについて推論し、それを変更できるAIを持つためのプログラミング言語/論理的基盤は何ですか? これはまったく厳密ではないので、ここから具体的な質問を抽出するための私の試みです。私が興味を持っているのは次の2つです。 (A)独自のプログラムをデータ型プログラム(たとえば、AST)として表現および操作できるプログラミング言語P。(必要に応じて、タイプProgramのオブジェクトは、その言語の有効なプログラムのテキストであるStringに変換できます。これは、コンパイラーが行うことの反対です。) (B)言語Pのプログラムが何をするかを推論する方法。私が考えている2つのレベルは次のとおりです。 Pプログラムの動作をモデル化する別の言語Q(定理証明機能付き)。「プログラムpの実行結果はfooです」などのステートメントを表現および証明できるはずです。 プログラムp:Programが言語P自体で行うことについて推論する方法。(つまり、上記のP = Qを使用しています。) このようなものはどの程度実装されていますか、またはこの方向の進捗はどうですか?実用的な障害は何ですか?質問の当初の意図に照らして、問題を形式化する最良の方法は何ですか? * 答えが示すように(ありがとう!)、(A)と(B1)の両方を別々に行うことができますが、それらを一緒に行うことはより研究上の質問のようです。 ここに、この問題に関する私の最初の考えがいくつかあります(警告:かなりあいまいです)。Martin Bergerの答えに対する私のコメントも参照してください。 私は、より単純なプログラミング言語ではなく、同じプログラミング言語をモデル化するプログラミング言語に興味があります(上記のP = Q)。これは、「独自のソースコードに関する理由」が可能なプログラムの「概念実証」になります。依存型のプログラミング言語は、その関数の出力について保証することができますが、これは「Hello world!」以外の「独自のソースコードについての推論」としてはカウントされません。裸の文字列を自動的に出力する言語では、クインとしてカウントされます---ある種の引用/自己参照が必要です。ここでの類似物は、プログラムを表すデータ型を持っています。 それはかなり大きなプロジェクトのようです-言語が単純であるほど、その中のすべてを表現することは難しくなります。言語が複雑になるほど、言語をモデル化するためにより多くの作業が必要になります。 再帰定理の精神では、プログラムは独自のソースコードを「取得」し、それを変更することができます(つまり、それ自体の変更バージョンを出力します)。(B2)それから、プログラムは修正されたプログラムについて保証を表明できるべきであると私たちに伝えます(これは再帰できる、つまり将来のすべての修正について何かを表明できるべきですか?)。

2
プログラム翻訳の完全な完全性と完全な抽象化
コンパイラー検証の努力は、多くの場合、コンパイラーが完全に抽象的であることを証明することに帰着します。つまり、(コンテキストの)同等性を保持および反映します。 代わり長谷川[により、いくつかの最近(カテゴリベース)コンパイラ検証作業を完全抽象プルーフを提供する1、2 ]とエッガーら。等 [ 3 ]さまざまなCPS翻訳の完全性を証明します。 質問: 完全な完全性と完全な抽象化の違いは何ですか? 私にとって、完全性は翻訳の等価性の反映のように見え、完全性は等価性の保存の結果であるように見えます。 注:Curien [ 7 ]とAbramsky [ 8 ]はともに、定義可能性、完全な抽象化、およびある程度完全な完全性の間の関係を調査します。これらのリソースには私の質問に対する答えがあるかもしれませんが、表面を読んだ後、私はまだそれを確認していません。 背景:「完全な完全性」という用語は、乗算線形論理のゲームセマンティックモデルの正確さを特徴付けるために、アブラムスキーとジャガディーサン[ 4 ] によって作られました。 Blute [ 5 ]は以下の定義を提供します: してみましょうFF\mathcal{F}無料カテゴリなります。私たちは、カテゴリモデルと言う MM\mathcal{M}あるため、完全に完全に FF\mathcal{F}または我々が持っていること の完全な完成度FF\mathcal{F}に関してMM\mathcal{M}の発電機のいくつかの解釈に関して、場合、ユニークな無料ファンクタ[[−]]:F→M[[−]]:F→M[\![ - ]\!] : \mathcal{F} \rightarrow \mathcal{M}がいっぱいです。 私の知る限り、[ 6 ]の長谷川は、完全な完全性を適用して、カテゴリーの意味モデルではなくプログラムの翻訳を記述する最初の人物です。この場合、ギラード変換は、単純に型指定されたラムダ計算から線形ラムダ計算になります。後に、[ 1 ]で、彼はCPS翻訳の完全性 definesを次のように定義しています(⋅)∘(⋅)∘(\cdot)^\circ。 もしで誘導線形ラムダ計算は、存在Γ ⊢ Mは:σように計算ラムダ計算におけるΓ ○は。∅ ⊢ M ∘ = N :(σ …

1
MALL +無制限の再帰型はチューリング完全ですか?
Yコンビやオメガコンビれていないラムダ計算の再帰コンビを見ると、 これらのコンビネーターはすべて、定義のどこかで変数を複製することになることは明らかです。ωY==(λx.xx)(λx.xx)λf.(λx.f(xx))(λx.f(xx))ω=(λx.xx)(λx.xx)Y=λf.(λx.f(xx))(λx.f(xx)) \begin{array}{lcl} \omega & = & (\lambda x.\,x\;x)\;(\lambda x.\,x\;x)\\ Y & = & \lambda f.\,(\lambda x.\,f\;(x\;x))\; (\lambda x.\,f\;(x\;x)) \\ \end{array} さらに、これらのコンビネーターはすべて、再帰型で拡張すると、単純型付きラムダ計算で型指定可能になりますここで、は再帰型で否定的に発生できます。μα.A(α)μα.A(α)\mu\alpha.\,A(\alpha)αα\alpha ただし、線形ロジックの指数のないフラグメント(つまり、MALL)に完全な(負の発生)再帰型を追加するとどうなりますか? 次に、収縮を与える指数関数はありません。ようなものを使用して、指数のタイプを エンコードでき しかし、導入ルールを定義する方法はわかりません。定義するには固定小数点コンビネータが必要だからです。そして、指数を定義し、収縮を取得し、固定小数点コンビネーターを取得しようとしました!!A!A!A!A≜μα.I&A&(α⊗α)!A≜μα.I&A&(α⊗α) !A \triangleq \mu\alpha.\;I \;\&\; A \;\&\; (\alpha \otimes \alpha) MALLと無制限の再帰型がまだ正規化されている場合ですか?

1
述語メタ理論における命令システムの論理関係
System FのようなImpredicative言語の論理関係は、アンビエントロジックのimpredicativityに大きく依存しているようです。特に、forall-typeの解釈は、すべての型付き関係に関して定義されます。命令型システム(CiC / Coqなど)では問題ありませんが、予測型システム(Agdaなど)では不可能なようです。 これをどのように行うことができますか?たとえば、AgdaのSystem Fの正規化をどのように証明しますか?独自の不可解な宇宙を構築する必要がありますか?

1
プログラミング言語で構文と意味のメソッドを厳密に区別できますか?
強力な正規化の証明について説明しますが、このコメントでは「通常のフォームモデル」と「純粋に構文的な方法」を比較しています。 これにより、より基本的な質問に戻ります。構文ベースのモデルに直面して、構文と意味の構造を厳密に区別できますか?代数の項モデル、一次論理のヘンキンモデルはどうですか?構造的な操作上のセマンティクスはどうですか?用語モデルは構文と同型である可能性があるため、明確な区別をするのは難しいようです。 論理の証明理論とモデル理論の違いを研究するまで、「静的型システムは構文的方法である」という考えに困惑さえしました。結局、型システムは型について推論します。これは、プログラムの動作を抽象化したものです(依存型の場合、任意に正確な型です)。

1
ラムダ計算の拡張におけるη変換対拡張性
私はしばしば、η変換と拡張性の関係に混乱しています。 編集:コメントによると、外延的等価性と観察的等価性の関係についても混乱しているようです。しかし、少なくとも、関数の拡張等式(仮定として)、および単純に型付けされたラムダ計算(完全に抽象的なセマンティクスを持っていますが、私が間違っていない場合)のAgdaでは、表示的等価は観測的等価と同じです。コメントや回答を自由に修正してください。これらの問題について体系的な教育を受けたことはありません。 型付けされていないラムダ計算では、eta-ruleは、Barendregtによって証明されているように、拡張性ルールと同じ証明システムを提供します(この質問への回答で引用)。私は、イータルールを備えた証明システムが観測的同等性のために完全であることを理解しています(他の回答から、ξルールルール、つまりバインダーIIUCの下での削減が必要です;そのルールを追加しても問題ありません) 。 ただし、型付き計算に切り替えて、この計算を追加の基本型と対応する導入および消去形式で拡張すると、どうなりますか?観測的等価性の完全な証明システムをまだ書くことはできますか?証明システムについては、ミッチェルのプログラミング言語の基礎(FPL)に従って公理セマンティクスの形式で説明します。証明システム/公理的意味論は、プログラムの等価性を定義します。 質問1:バレンドレグの定理はSTLCに拡張されますか?η等価性は、その文脈での拡張性と同等ですか? 私はFPLのPCFに関する議論を閲覧しています(しかし、まだセクションは終了していません)。ペアを追加すると、拡張性には追加のルール、つまり全射ペアリングが必要になるようですpair (Proj1 P, Proj2 P) = P。興味深いことに、このルールは、ηルールが関数の導入と削除に関連するのとまったく同じように、ペアの導入と削除に関連しています。 質問2:ペアをもつ単純型付きλ計算の拡張性を証明するために、全射ペアリング公理を追加するだけで十分ですか?編集:質問2b:この論文で言及されたη法則のように、私が言及した構造的類似性のために、全射対はη法則ですか? さあ、PCFに行きましょう。私が見た外延的平等の説明は、外延性が帰納法による証明の規則を暗示していることを証明しているが、それで十分かどうかは述べていない。PCFはチューリング完全であるため、拡張等式は決定不能です。ただし、プルーフの長さには制限がないため、完全なプルーフシステムがないことを意味するものではありません。さらに関連して、そのような証明システムは、ゲーデルの不完全性定理と矛盾する可能性があります。そして、その議論はfix、なしのPCF と、ゲーデルのシステムTにも当てはまるかもしれません。 質問3:PCFの観測的同等性の完全な証明システムはありますか?なしのPCFはfixどうですか? 更新:完全な抽象化 ここでは、完全な抽象化に関するコメントについて回答します。PCFには2種類の問題があると思います。非修正(修正による)があり、完全な抽象化が失われますが、自然数もあります。両方の問題により、観察の等価性を扱いにくくしていますが、私は互いに独立していると考えています。 一方では、PCFは並列またはセマンティックドメインに住んでいるため完全な抽象化を失い(Plotkin 1977)、それは非終了に関係しているようです。Ralph Loader(2000、「初期PCFは決定不能」)は、最終PCF(ナチュラルなし、ただし終端なし)が既に決定不能であることを示しています。したがって、(私が正しく要約すれば)完全に抽象的なセマンティックは、計算可能な操作を持つドメインに制限できません。 一方、終端なしのゲーデルのシステムTを使用します。(完全に抽象的なセマンティクスを持っているかどうかはわかりませんが、問題はPCFについてのみ言及されているため、はい推測しています。ドメインには高次のプリミティブな再帰関数が含まれている必要があります)。Harperの「プログラミング言語の実践的基礎」では、この言語の観察的同等性について説明しています。秒 47.4は「いくつかの平等の法則」と題されており、観測的等価性に関するいくつかの許容可能な証明規則を示しています。証明システムが完全であるかどうかはどこにも書かれていないので、そうではないと思いますが、それが完了できるかどうかについても議論されていません。私の最良の推測は、ゲーデルの不完全性の定理にリンクしています。

2
natsまたは他の帰納的データ型を用いた結石のカット除去?
自然数などの帰納的データ型を含む命題の直観主義的論理のカットエリミネーション定理を詳述する論文に誰かを誘導しますか(リストや木も問題ありません)?私が興味を持っている種類のシステムの例は、GodelのTです。これは、文法。私は、自然数または自然数でインデックス付けされた述語の量指定子にはあまり興味がありません。A ::= N|A → A′A::=N|A→A′A ::= \mathbb{N} \;\;|\;\; A \to A' 私は、論理関係の引数(またはNbEなどの関連技術)を使用して、これらのシステムの自然演versionバージョンのベータ正規化を証明する方法を知っていますが、これらの方法を逐次計算に適応させる方法に関する標準的な参照があるかどうかを知りたいです。 私が尋ねる理由は、言語への保護された再帰のための固定小数点演算子の追加を勉強しているからです。表示のアイデアはかなり古いものです-バナッハの定理を介して型をウルトラメトリック空間および固定小数点として解釈します-しかし、カット除去を証明するために私が知っている純粋に構文的なテクニックはうまく適応していないようです。

1
型付けされていないλ計算で最も内側の縮小は永続的ですか?
(私はすでにMathOverflowでこれを尋ねましたが、そこには答えがありませんでした。) バックグラウンド 型なしラムダ計算では、この用語は一つ(例えば、乱暴に異なる結果を生成することが低減するかについて多くのredexes、異なる選択肢を含んでいてもよいここで1ステップ(β-)はyまたはそれ自体に減少します)。削減する場所の異なる(一連の)選択は、削減戦略と呼ばれます。用語Tがあると言われている正規もたらす削減戦略が存在する場合、Tは(λ X 。Y)((λ X 。X X )λ X 。X 、X )(λバツ。y)((λバツ。バツバツ)λバツ。バツバツ)(\lambda x.y)((\lambda x.xx)\lambda x.xx)ββ\betayyytttttt通常の形に。すべての縮小戦略がtを標準形に持ってくる場合、用語は強く正規化されていると言われます。(私はどちらを心配していませんが、合流性は複数の可能性があることを保証します。)tttttt 縮小戦略は、tが正規形を持っている場合はいつでも、それが最終的なものになる場合、正規化すると言われています(ある意味では可能な限り最良です)。最左端の戦略は正規化です。ttt スペクトルのもう一方の端では、項tから無限のリダクションシーケンスが存在する場合は常に、ストラテジがそのようなシーケンスを見つける場合、リダクションストラテジは永続的である(ある意味では最悪の可能性がある)と言われます。正規化に失敗する可能性があります。ttt 私は永久削減戦略を知っているとFのBのkはによってそれぞれ与えられる: F B K(C [ (λ X 。S )T ] )= Cを[ S [ T / X ] ] 場合 tは 強く正規化されFのBのK(C [ (λ X 。S )T ] )= C [F∞F∞F_\inftyFb kFbkF_{bk} …

1
コンフルエントな書き換えルールによる不可視の等価性の特徴づけ
別の質問、ラムダ計算のベータ理論の拡張に応えて、Evgenijは答えを提供しました: ベータ+ルール{s = t | sとtは閉じられた解決不可能な用語です} 長期どこMが解けるである私たちは、そのようなことを用語のシーケンスを見つけることができればMそれらへの応用がに等しいI。 Evgenijの答えは、ラムダ計算に関する等式理論を提供しますが、縮約システム、つまりコンフルエントで再帰的な書き換えルールのセットによって特徴付けられるものではありません。 ラムダ計算の理論上の不可視の等価性を呼び出しましょう。これは、閉じられた解けないラムダ項の自明でないセットを同等にするが、解ける項を含む新しい方程式を追加しない縮約システムです。 ラムダ計算のベータ理論に対して目に見えない等価性はありますか? Postscript目に見えない同等性を特徴付ける例ですが、コンフルエントではありません。LET M =(λx.xx)及びN =(λx.xxx)二解けない用語。NNを書き換えるルールをMMに追加すると、MM = NNを含む不可視の等価性が誘導されますが、NNがMMとMMNの両方に減少する悪いクリティカルペアがあり、それぞれに1つの書き換えがあり、それ自体に書き換えます。

1
「quote」-「eval」と言語の文脈上の同等性は取るに足らないものですか?
[1]で、Mitchell Wandは、純粋なラムダ計算にfexprs を追加すると、コンテキスト等価性の理論が単純化されることを実証しました。つまり、2つの用語は、合同であればコンテキスト的に等価です。関連する作業を探索すると、彼は「私達の結果はアルバート・マイヤー[2]の古い観測を延びる行きと文脈の同値は些細なレンダリング」。しかし、[2]を参照すると、見つけられるのは、Meyerによる次の声明だけです。αα\alphaevalquote I FiのRSTと言語と考えquote- evalそのようなLISP [3]として機能構文と実行オブジェクト間の型の区別がなかったです。実際にはquote- evalが、ので、LISPで安全に十分だquoteボナFiのデオペレータのような構文上のルックスは、言うようにcond、それは本当に1のように動作しません(それが唯一の解析時に行動を持って、実行していない時間、例えば、1は渡すことはできませんquoteプロシージャへのパラメータとして)。それでも、私は例説得見るためには至っていないquote- eval機能は、価値のあるだったが。 これらのコメントの1つの軽微な欠陥に関係なくcond、手順のパラメーターとして渡される可能性のある推論を読者に誤解させる可能性があります。私が正しく理解していれば、どのようなマイヤーは言ったこと「quote- evalことを意味し、安全に十分だ」quote- eval彼は証拠を提供していませんでしたが、等式理論を矮小化しないことがあります。 編集: Martinが示唆したように、3つの論文すべてがLISPファミリー言語の取り扱いを引用しているので、同じ設定の下で質問をしましょう。 言語の文脈同値であるquote- eval、特にLISPで、地球上の些細なかではありませんか? [1]ミッチェル・ワンド、Fexprsの理論は簡単です。Lisp and Symbolic Computation 10(3):189-199(1998)。 [2] Albert Meyer、 公式ソフトウェア開発に関するプログラミングロジックワークショップのパズル。1984 [3]ジョン・マッカーシー、シンボリック式の再帰関数とマシンによるそれらの計算、パートI。1960年4月のACMの通信。

3
機械的にプログラムを実装できますか?
たとえばMicrosoft Wordの単一の目的(チューリング以外の完全な)機械的実装を構築することは可能ですか?反復子、一次関数、プログラミング技術の全範囲などを実装することは可能ですか?歯車やその他の機械部品は、データ構造やプログラムオブジェクトを表すことができますか?ある時点で、これは汎用のチューリングと同等のマシンを構築することを必要としますか、または各機能、変数などは、フライホイールおよび/またはギア、ラチェットの形で独自の機械的構造を持つことができますか?要約すると、標準的なコンピューター上の特定のソフトウェアを機械的な設計図にコンパイルできるかどうか疑問に思います。

1
shift-reduce解析と区切られた継続の関係?
シフト削減構文解析手法と区切られた継続との間の関係を公式化した人はいますか? ボトムアップパーサー(たとえば、LRパーサー)を構築するとき、文法を取り、解析状態をアイテムのセットとして表します:形式の拡張された生成。ここで、αとβは終端と非終端のシーケンスです。マーカー∙は、パーサーが文字列に到達した距離を表し、αはこれまでに見たものを表し、βはまだ解析される可能性があるものの予測を表します。A → α ∙ βA→α∙βA \to \alpha \bullet \betaαα\alphaββ\beta∙∙\bulletαα\alphaββ\beta LR解析オートマトンの遷移におけるシフトアクションは、スタックのプレフィックスをに一致させ、それをAに置き換えます。このようなスタックの深い操作は、制御演算子の効果に似ていますが、これは定性的な観察にすぎません。αα\alphaAAA シフトリデュース解析とシフト/リセットなどの区切られた制御演算子との関係を研究した人はいますか?

4
依存型理論におけるモデリングオブジェクト(OOP)
私は、オブジェクト指向プログラミングから、依存型理論におけるオブジェクトのモデリングに興味があります。可能なアプリケーションとして、命令型プログラミング言語のさまざまな機能を説明できるモデルが必要です。 依存型理論におけるオブジェクトのモデリングに関する論文は1つしか見つかりませんでした 。A。Setzerによる依存型理論におけるオブジェクト指向プログラミング(2006) 私が見逃したトピックに関するさらなる参照はありますか、おそらく最近のものがありますか? CoqやAgdaのような定理証明者に利用可能な実装(すなわち証明)はおそらくありますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.