Skip to main content
QUICK REVIEW

[論文レビュー] A short introduction to program algebra with instructions for Boolean registers

J. A. Bergstra, C.A. Middelburg|arXiv (Cornell University)|Aug 13, 2018
Formal Methods in Verification参考文献 19被引用数 11
ひとこと要約

本稿では、計算をモデル化するための簡略化されたパラメータ化された代数的枠組みを提示する。この枠組みは、ブールレジスタ命令を用いてプログラム代数およびスレッド代数を具体化し、命令列がビットストリング上の部分関数を計算する方法を形式化する。補助的なブールレジスタを用いることでプログラムサイズを削減できることを示し、形式的・代数的枠組みにおいてアルゴリズムの効率性および同値性を分析する基盤を提供する。

ABSTRACT

A parameterized algebraic theory of instruction sequences, objects that represent the behaviours produced by instruction sequences under execution, and objects that represent the behaviours exhibited by the components of the execution environment of instruction sequences is the basis of a line of research in which issues relating to a wide variety of subjects from computer science have been rigorously investigated thinking in terms of instruction sequences. In various papers that belong to this line of research, use is made of an instantiation of this theory in which the basic instructions are instructions to read out and alter the content of Boolean registers and the components of the execution environment are Boolean registers. In this paper, we give a simplified presentation of the most general such instantiated theory.

研究の動機と目的

  • ブールレジスタ命令を具体化したプログラム代数およびスレッド代数の簡略化され、焦点を絞った提示を提供すること。
  • 命令列がブールレジスタ上で作用することによる計算の概念を形式化し、アルゴリズム的挙動の正確な分析を可能にすること。
  • 補助レジスタを用いたプログラムサイズの削減および命令列の計算的同値性を研究する基盤を確立すること。
  • 形式的代数的枠組みにおいて、アルゴリズム的複雑性および正しさを厳密に調査することを支援すること。
  • 命令列が与えられたビットストリングからビットストリングへの部分関数を計算する条件を正確に形式化すること。

提案手法

  • プログラム代数(PGA)を用いて、一度だけ実行され、その後破棄される基本命令の列として命令列をモデル化する。
  • 基本的スレッド代数を用いて、命令列の実行中に生じる振る舞いをモデル化する。
  • PGAとスレッド代数の組み合わせを拡張し、命令列とブールレジスタの間の相互作用をモデル化する。
  • 複数のレジスタおよびそれらの相互作用の挙動を形式化するため、ブールレジスタ族の代数的理論を導入する。
  • 固定されたレジスタ役割を用いて、定義域内のすべての入力に対して正しい出力を生成する命令列として、部分関数の計算を定義する。
  • アルゴリズム的および計算的同値関係を用いて、命令列を比較し、その構造的および行動的性質を分析する。

実験結果

リサーチクエスチョン

  • RQ1プログラム代数およびスレッド代数を用いて、ブールレジスタの文脈において、命令列を形式的に定義・分析する方法は何か?
  • RQ2命令列がビットストリング上の与えられた部分関数を正しく計算するためには、どのような条件を満たす必要があるか?
  • RQ3補助的なブールレジスタを用いることで、特定の計算において、命令列のサイズをどの程度まで削減できるか?
  • RQ4アルゴリズム的同値関係と計算的同値関係は、2つの命令列が同じアルゴリズムを表現しているという概念をどのように異なって捉えているか?
  • RQ5長さnのビットストリング上でパリティ関数、加法mod 2^n、非ゼロ性を計算するのに必要な最小の命令列長は何か?

主な発見

  • 補助的なブールレジスタにアクセス可能な命令列は、それらが存在しない場合よりも、長さnのビットストリング上のパリティ関数をより短い列で計算できる。
  • カラツバ乗算アルゴリズムにおいて、長さ256を超えるビットストリング長の場合に限り、長時間乗算の命令列よりも短くなる。
  • 後方ジャンプ命令が存在する場合、ビットストリング長が2を超えると、標準版およびカラツバ版よりも、長時間乗算アルゴリズムをより短い命令列で表現できる。
  • nビットストリング上で非ゼロ性関数を計算するかどうかを判断する問題は、命令列長が最小の可能な長さに近い場合にのみ、効率的に解ける。
  • 計算的同値関係はアルゴリズム的同値関係よりも粗い。これは、2つの命令列が同じ関数を計算しても、異なるアルゴリズムを表現している可能性があることを意味する。
  • 形式的枠組みにより、プログラムサイズおよび正しさの正確な分析が可能となり、補助的なデータ保存が命令列モデルにおいてプログラムサイズを顕著に削減できることを裏付ける。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。