QUICK REVIEW
[論文レビュー] Pure Prolog Execution in 21 Rules
Marija Kulaš|ArXiv.org|Oct 10, 2003
Logic, programming, and type systems参考文献 8被引用数 3
ひとこと要約
本稿では、制御フローを4ポートモデル(コール、エグジット、フェイル、リドゥ)を用いて純粋Prolog実行を形式的に記述する21規則の計算体系S:PPを提示する。実行状態は2つのスタック(先祖スタック(Aスタック)とベットスタック(Bスタック))でモデル化され、前向きおよび後向きの導出を可能にし、正しさや変換の適切性といったプログラムの性質についての形式的推論を可能にするモジュラリティを有する。
ABSTRACT
A simple mathematical definition of the 4-port model for pure Prolog is given. The model combines the intuition of ports with a compact representation of execution state. Forward and backward derivation steps are possible. The model satisfies a modularity claim, making it suitable for formal reasoning.
研究の動機と目的
- Prologの4ポート制御フロー(コール、エグジット、フェイル、リドゥ)を、形式的かつ数学的に厳密に定義し、形式的推論に適したものとする。
- Prologにおけるポートの理論的曖昧性を解消するため、それらを実行イベント間の遷移として定義し、状態変化に基づくものとする。
- 前向きおよび後向きの導出ステップをサポートするモジュラな実行モデルを確立し、プログラム解析およびデバッグに不可欠である。
- プログラム変換における適切性および干渉のない性質といった、非自明なプログラムの性質の形式的検証を可能にする。
- 本稿では純粋Prologに焦点を当てつつ、すでにプロトタイプが実装済みのフルProlog制御フローへの拡張を含む。
提案手法
- 論理プログラムの標準形を定義する。各述語を、標準ヘッドおよび標準本体を持つ単一の節として表現し、論理和は一貫した形で表現する。
- 実行状態を2つのスタックでモデル化する。Aスタック(先祖スタック)はコンテキスト(親ゴール)を追跡し、Bスタック(ベットスタック)は実行中の使用済み定義および論理和をメモ化する。
- 21の形式的導出規則を定義する。これらは、例えばコール→エグジット、フェイル→リドゥのようなポート遷移を、状態変化を明示的に含む、決定的状態遷移として記述する。Aスタックによる明示的コンテキストを備える。
- 記号的表記を用いる。オブジェクトレベルの項にはサンセリフ(例:true)、メタレベルの構成要素にはイタリックまたはブレックイットフォント(例:call、Σ、U)を用いる。
- 部分ゴールの実行を抽象化可能であるようにモジュラリティを確保する。例えば、ゴールAが成功した場合、その実行は計算された答え置換項に置き換え可能である。
- 前向き導出(コールからエグジット/フェイルへ)および後向き導出(エグジット/フェイルからコール/リドゥへ)を両方サポートし、証明再構築およびデバッグを可能にする。
実験結果
リサーチクエスチョン
- RQ1Prologにおける4つの制御フロー・ポート(コール、エグジット、フェイル、リドゥ)を、実行状態間の遷移として形式的に定義することは可能か?
- RQ2AスタックおよびBスタックを用いたスタックベースのモデルが、純粋Prolog実行の完全な制御フローを捉えつつモジュラリティを保っているか?
- RQ3提案されたモデルが前向きおよび後向きの導出ステップを両方サポートし、プログラム動作に関する形式的推論を可能にしているか?
- RQ4モデルをカットおよび動的述語を含むフルPrologに拡張可能であり、形式的取り扱いの簡便性を保っているか?
- RQ5モデルを用いて、適切性やプログラム変換における干渉のない性質といった非自明なプログラムの性質を形式的に検証可能か?
主な発見
- S:PP計算体系は、2つのスタック(AスタックおよびBスタック)を用いた完全で形式的かつモジュラな21規則の純粋Prolog実行モデルを提供し、正確な状態表現を可能にする。
- モデルは前向きおよび後向きの導出ステップを両方サポートする。これは、レムマ5の合法的導出規則(2)および(3)によって示され、エグジット/フェイルイベントからその原因へ逆方向に推論可能である。
- モジュラリティが達成されている。部分ゴールの実行は、その計算された答え置換項を用いて抽象化可能である。例4では、Aの成功または失敗がA,Bの振る舞いの導出に用いられている。
- 厳密な規則の重複回避および明示的コンテキスト追跡により、遷移の正しさが保証され、不正な導出(例:Bのフェイル、BのフェイルがBのエグジットの後に続くことは不可)を防ぐ。
- Bスタックは使用済み述語定義および使用済み論理和を効果的に捉えており、状態の再入およびリドゥ中の述語定義の動的変更という問題を解決する。
- モデルはフルPrologへ拡張可能であり、すでに動作するプロトタイプが実装済みであるため、純粋論理プログラミングを越えた実用的応用性を示唆している。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。