ロゴ
ユニオンペディア
コミュニケーション
Google Play で手に入れよう
新しい! あなたのAndroid™デバイスでユニオンペディアをダウンロードしてください!
インストール
ブラウザよりも高速アクセス!
 

抽象解釈

索引 抽象解釈

抽象解釈(ちゅうしょうかいしゃく、Abstract interpretation)は、コンピュータプログラムの意味論の健全な近似の理論であり、順序集合(特に束)における単調関数に基づいている。全ての計算を実施することなく、プログラムの部分的な実行(ある種の部分評価)をするものと見ることができ、それによりプログラムの意味に関する情報(例えば、制御構造、情報の流れなど)を獲得する。 主な応用として、形式的な静的コード解析があり、プログラム実行に関する情報を自動抽出するものである。このような解析には次の2つの利用法がある。.

29 関係: 健全性停止性問題単調写像多面体実数不動点乗法バグモデル検査ライスの定理レジスタ (コンピュータ)プログラム (コンピュータ)プログラム意味論デバッグ制御構造命令型プログラミングインタプリタコンパイラコンパイラ最適化社会保障番号静的コード解析順序集合計算計算可能性理論計算複雑性理論部分評価抽象化束 (束論)最小不動点

健全性

健全性(けんぜんせい、Soundness)は、論証が次の属性を持つことと同値である。.

新しい!!: 抽象解釈と健全性 · 続きを見る »

停止性問題

計算可能性理論において停止(性)問題(ていしせいもんだい・ていしもんだい、halting problem)は、あるチューリング機械(≒コンピュータプログラム・アルゴリズム)が、そのテープのある初期状態(≒入力)に対し、有限時間で停止するか、という問題。アラン・チューリングが1936年、停止性問題を解くチューリング機械が存在しない事をある種の対角線論法のようにして証明した。すなわち、そのようなチューリング機械の存在を仮定すると「自身が停止すると判定したならば無限ループを行い、停止しないと判定したならば停止する」ような別のチューリング機械が構成でき、矛盾となる。.

新しい!!: 抽象解釈と停止性問題 · 続きを見る »

単調写像

単調写像(たんちょうしゃぞう、monotonic function, monotone function)または単調関数は、単調性、すなわち順序集合の間の写像が順序を保つような性質を持つ写像のことである。具体的な例としては以下の単調増加関数および単調減少関数がある。 単調増加(たんちょうぞうか、monotonically increasing)とは、狭義には実数の値を持つ関数 が、 の増加につれて常に関数値 も増加することをいい、このような性質を持つ関数を単調増加関数(たんちょうぞうかかんすう、monotonically increasing function)と呼ぶ。同様に、引数 の増加につれて関数値 が常に減少することを単調減少(たんちょうげんしょう、monotonically decreasing)といい、そのような性質を持つ関数を単調減少関数(たんちょうげんしょうかんすう、monotonically decreasing function)と呼ぶ。従って、連続な単調増加関数 を縦軸、その引数 を横軸にとったグラフ上の曲線は常に右上りで、右下がりになっている部分がない。逆に単調減少関数の場合には、常に右下がりであり右上がりの部分がない。 ある関数が単調増加または単調減少する性質をまとめて単調性(たんちょうせい、monotonicity)と呼ぶ。.

新しい!!: 抽象解釈と単調写像 · 続きを見る »

多面体

多面体の一種、立方体 初等幾何学における多面体(ためんたい、polyhedron)は、複数(4つ以上)の平面に囲まれた立体のこと。複数の頂点を結ぶ直線の辺と、その辺に囲まれた面によって構成される。したがって、曲面をもつものは含まず、(円柱などは入らない)また、すべての面の境界が直線である場合に限られる。 3次元空間での多胞体であるとも定義できる。2次元空間での多胞体は多角形なので、多角形を3次元に拡張した概念であるとも言える。 英語ではポリヘドロン (polyhedron)、複数形はポリヘドラ (polyhedra) である。多角形のポリゴン (polygon) の複数形がポリゴンズ (polygons) であるのとは異なる。.

新しい!!: 抽象解釈と多面体 · 続きを見る »

実数

数学における実数(じっすう、 nombre réel, reelle Zahl, real number)は、様々な量の連続的な変化を表す数の体系である。実数全体の空間は、途切れのなさにあたる完備性とよばれる位相的な性質を持ち、代数的には加減乗除ができるという体の構造を持っている。幾何学や解析学ではこれらのよい性質を利用して様々な対象が定義され、研究されている。一方でその構成方法に自明でない手続きが含まれるため、実数の空間は数学基礎論の観点からも興味深い性質を持っている。また、自然科学における連続的なものの計測値を表すのに十分な数の体系だとも考えられている。 実数の概念は、その形式的な定義が19世紀に達成される前から数の体系として使われていた。「実数」という名前は複素数の概念が導入された後に「普通の数」を表現する言葉として導入されたものである。.

新しい!!: 抽象解釈と実数 · 続きを見る »

不動点

不動点を三つ持つ関数 数学において写像の不動点(ふどうてん)あるいは固定点(こていてん、fixed point, fixpoint)とは、その写像によって自分自身に写される点のことである。.

新しい!!: 抽象解釈と不動点 · 続きを見る »

乗法

算術における乗法 (じょうほう、multiplication) は、算術の四則と呼ばれるものの一つで、整数では、一方の数 (被乗数、ひじょうすう、multiplicand) に対して他方の数 (乗数、じょうすう、multiplier) の回数だけ繰り返し和をとる(これを掛けるまたは乗じるという。)ことにより定義できる演算である。掛け算(かけざん)、乗算(じょうざん)とも呼ばれる。代数学においては、変数の前の乗数(例えば 3y の 3)は係数(けいすう、coefficient)と呼ばれる。 逆の演算として除法をもつ。乗法の結果を積 (せき、product) と呼ぶ。 乗法は、有理数、実数、複素数に対しても拡張定義される。また、抽象代数学においては、一般に可換とは限らない二項演算に対して、それを乗法、積などと呼称する(演算が可換である場合はしばしば加法、和などと呼ぶ)。.

新しい!!: 抽象解釈と乗法 · 続きを見る »

バグ

バグ (bug) とは、英語で「虫」の意であり、転じてコンピュータプログラムの誤りや欠陥を表す。 ソフトウェア・ハードウェア開発における契約文書など、法的な文書ではバグのことを「瑕疵」と記述する。原因や責任の所在などが不明なものを特定性の低い表現の「不具合」と呼ぶことがある。また、セキュリティ上に関わるバグや欠陥は「セキュリティホール」などと呼ばれることもある(正確には、バグはこれらの原因(のひとつ)である)。 多くのバグが含まれ、機能的に正常な役割を果たさないものを、バギー・プログラム (Buggy Program) と呼ぶことがある。 なお、発生したバグを探して取り除く作業はデバッグと呼ばれる。.

新しい!!: 抽象解釈とバグ · 続きを見る »

モデル検査

モデル検査(Model Checking)とは、形式システムをアルゴリズム的に検証する手法である。ハードウェアやソフトウェアの設計から導出されたモデルが形式仕様を満足するかどうか検証する。仕様は時相論理の論理式の形式で記述することが多い。.

新しい!!: 抽象解釈とモデル検査 · 続きを見る »

ライスの定理

ライスの定理(ライスのていり、Rice's theorem)は、計算機科学における計算可能関数の理論に関する定理で、 定められた性質Fを満たすかどうかを任意の部分計算可能関数について判定する方法は(Fが自明な場合を除いて)存在しない、というもの。 名称の由来は Henry Gordon Rice から。.

新しい!!: 抽象解釈とライスの定理 · 続きを見る »

レジスタ (コンピュータ)

レジスタ(register)はコンピュータのプロセッサなどが内蔵する記憶回路で、制御装置や演算装置や実行ユニットに直結した、操作に要する速度が最速の、比較的少量のものを指す。.

新しい!!: 抽象解釈とレジスタ (コンピュータ) · 続きを見る »

プログラム (コンピュータ)

ンピュータプログラム(英:computer programs)とは、コンピュータに対する命令(処理)を記述したものである。コンピュータが機能を実現するためには、CPUで実行するプログラムの命令が必要である。 コンピュータが、高度な処理を人間の手によらず遂行できているように見える場合でも、コンピュータは設計者の意図であるプログラムに従い、忠実に処理を行っている。実際には、外部からの割り込み、ノイズなどにより、設計者の意図しない動作をすることがある。また設計者が、外部からの割り込みの種類を網羅的に確認していない場合もある。.

新しい!!: 抽象解釈とプログラム (コンピュータ) · 続きを見る »

プログラム意味論

プログラム意味論(program semantics)とは、計算機科学(特に理論計算機科学と分類されることもある)の一分野で、プログラミング言語の意味と計算モデルに関する分野である。形式的なものは、プログラミング言語の形式意味論とも呼ばれる。標準規格等では形式的でなく意味論を与えているものも多い。.

新しい!!: 抽象解釈とプログラム意味論 · 続きを見る »

デバッグ

デバッグ(debug)とは、コンピュータプログラムや電気機器中のバグ・欠陥を発見および修正し、動作を仕様通りのものとするための作業である。サブシステムが密結合であると、1箇所の変更が別の箇所でのバグを作り出すので、バグの修正がより困難となる。.

新しい!!: 抽象解釈とデバッグ · 続きを見る »

制御構造

制御構造(せいぎょこうぞう)は、コンピュータ・プログラミング言語、特に手続き型プログラミングや命令型プログラミングにおいて、ループや飛び越しなどといった、手続き(プロシージャ)中の実行順を順次実行から変化させたり、サブルーチン呼出しやその戻り、などといった制御を行う「文 (プログラミング) 」などの構造(言語の構成要素)である。 制御構造の種類は言語によって様々だが、典型的には以下のようなものがある(用語「ブロック」については、ブロック (プログラミング) の記事を参照)。.

新しい!!: 抽象解釈と制御構造 · 続きを見る »

命令型プログラミング

命令型プログラミング(めいれいがたプログラミング、Imperative Programming)とは、計算機科学において宣言型プログラミングの対となる概念であり、計算をプログラム状態を変化させる文の列で記述するプログラミングパラダイムの一種。自然言語の命令法がなすべき行動への指令を表現するのとよく似た方法で、命令型プログラムはコンピュータが実行すべき命令列で構成される。命令型プログラミングに従ったプログラミング言語を命令型(プログラミング)言語と呼ぶ。一般に命令型プログラミングは、手続き型プログラミングと同義として扱われる。 命令型プログラミングは、宣言型プログラミング(関数型や論理型言語など)と対照的である。Haskellなどの関数型プログラミング言語では、プログラムは文の並びではないし、命令型言語が持つような広域状態を持たない。Prologのような論理プログラミング言語では、命令型言語のように計算の「方法」をプログラムとして記述するのではなく、計算すべき「事物」を定義する。.

新しい!!: 抽象解釈と命令型プログラミング · 続きを見る »

インタプリタ

インタプリタ(interpreter)とは、プログラミング言語で書かれたソースコードないし中間表現を逐次解釈しながらするプログラムのこと。.

新しい!!: 抽象解釈とインタプリタ · 続きを見る »

コンパイラ

ンパイラ(英:compiler)とは、コンピュータ・プログラミング言語の処理系(言語処理系)の一種で、高水準言語によるソースコードから、機械語に(あるいは、元のプログラムよりも低い水準のコードに)変換するプログラムである。.

新しい!!: 抽象解釈とコンパイラ · 続きを見る »

コンパイラ最適化

ンパイラ最適化(こんぱいらさいてきか、Compiler optimization)の記事では、コンピュータ・プログラムの最適化に関する話題のうち、もっぱらコンパイラに関係するものに関して説明する。最も一般的な要求はプログラムの実行時間を最小化することであり、その次に使用するメモリ量を最小化することである。また、携帯可能なコンピュータが増えるにつれて、消費電力を最小化するという最適化も生まれてきた。 一部のコード最適化問題はNP完全問題であることが示されている。実際には、プログラマがコンパイラによる最適化の完了を待てる時間の上限なども考慮してコンパイラ最適化を実装する(最適化はCPU時間とメモリを多大に使用する)。かつては、コンピュータのメモリ実装量も実行できる最適化を制限する要因だった。 コンパイラメーカによっては、「コンパイラの最適化の能力が売り上げや評判に大きく影響する」と信じている場合があり、そういう信念に従って「最適化コンパイラ」と銘打つことがある。少なくとも、同程度にバグが無いコンパイラ同士であれば、という前提の範囲内なら、最適化の能力が高いほうが魅力的と言えるであろう。.

新しい!!: 抽象解釈とコンパイラ最適化 · 続きを見る »

社会保障番号

アメリカ合衆国における社会保障番号(しゃかいほしょうばんごう、Social Security number, SSN)は、社会保障法()205条C2に記載された市民・永住者・外国人就労者に対して発行される9桁の番号。アメリカ合衆国連邦政府の社会保障局()によって、個人からの申請に基づき発行される。 元々は徴税用の個人特定が目的であったが、近年は事実上の国民総背番号制となっている。SS-5申請を適用することによって取得することもできる。連邦規則集20章422条103項bを参照。.

新しい!!: 抽象解釈と社会保障番号 · 続きを見る »

静的コード解析

静的コード解析 (static code analysis) または静的プログラム解析 (static program analysis)とは、コンピュータのソフトウェアの解析手法の一種であり、実行ファイルを実行することなく解析を行うこと。逆にソフトウェアを実行して行う解析を動的プログラム解析と呼ぶ。静的コード解析はソースコードに対して行われることが多く、少数ながらオブジェクトコードに対して行う場合もある。また、この用語は以下に列挙するツールを使用した解析を意味することが多い。人間が行う作業はインスペクション、コードレビューなどと呼ぶ。.

新しい!!: 抽象解釈と静的コード解析 · 続きを見る »

順序集合

数学において順序集合(じゅんじょしゅうごう、ordered set)とは「順序」の概念が定義された集合の事で、「順序」とは大小、高低、長短等の序列に関わる概念を抽象化したものである。ただし、順序集合内の2つの元, に順序関係が定まっている(「比較可能」である)必要はなく、両者が「比較不能」であってもよい。 比較不能のケースを許容していることを強調して順序集合の事を半順序集合(はんじゅんじょしゅうごう、partially ordered set, poset)ともいう。一方、半順序集合の中で比較不能のケースがないものを特に全順序集合 という。(「半順序」という言葉が「全順序」の対義語ではない事に注意。全順序集合も半順序集合の一種である。) 全順序集合の簡単な例は整数の集合や実数の集合で、通常の大小比較を順序とみなしたものがある。 一方、全順序ではない半順序集合の例としては、正の整数全体の集合に整除関係で順序を入れたものや、(2つ以上元を含む)集合の冪集合において、包含関係を順序とみなしたものがある。例えば2元集合 において と はいずれも他方を包含していないので S の冪集合は全順序ではない。 実生活に近い例では、「AさんはBさんの子孫である」という事を「A<B」という大小関係とみなす事で人間全体の集合を半順序集合とみなせる。AさんとBさんはどちらも他方の子孫でない事もありうる(兄弟同士、叔父と甥、赤の他人等)ので、この順序集合は全順序ではない。.

新しい!!: 抽象解釈と順序集合 · 続きを見る »

計算

計算(けいさん)とは、与えられた情報をもとに、命題に従って演繹することである。 これは人間が無意識のレベルで行っている判断(→判断力)や、動物一般が行っている思考を、計算という形で意識化する手法ともいえ、その意味では「ものを考えること」一般が「計算」の一種だとみなすことも可能である。計算に使用される手続きはアルゴリズムと呼ばれる。対人関係において、戦略をアルゴリズムとして状況を有利に運ぶことも時に「計算」と表現される。 もっとも一般的かつ義務教育の範疇で最初に習うものは、算術(算数)における四則演算を、演算記号に示されたアルゴリズム通りに処理するものである。こういった「計算」は日常生活から専門的分野まで幅広く行われており、これを専門に処理する装置や機械も、人類の歴史において数多く開発され利用されている。.

新しい!!: 抽象解釈と計算 · 続きを見る »

計算可能性理論

計算可能性理論(けいさんかのうせいりろん、computability theory)では、チューリングマシンなどの計算模型でいかなる計算問題が解けるか、またより抽象的に、計算可能な問題のクラスがいかなる構造をもっているかを調べる、計算理論や数学の一分野である。 計算可能性は計算複雑性の特殊なものともいえるが、ふつう複雑性理論といえば計算可能関数のうち計算資源を制限して解ける問題を対象とするのに対し、計算可能性理論は、計算可能関数またはより大きな問題クラスを主に扱う。.

新しい!!: 抽象解釈と計算可能性理論 · 続きを見る »

計算複雑性理論

計算複雑性理論(けいさんふくざつせいりろん、computational complexity theory)とは、計算機科学における計算理論の一分野であり、アルゴリズムのスケーラビリティや、特定の計算問題の解法の複雑性(計算問題の困難さ)などを数学的に扱う。計算量理論、計算の複雑さの理論、計算複雑度の理論ともいう。.

新しい!!: 抽象解釈と計算複雑性理論 · 続きを見る »

部分評価

部分評価(ぶぶんひょうか、partial evaluation)は、計算理論における特殊化(特化)による最適化の技法の1つ。.

新しい!!: 抽象解釈と部分評価 · 続きを見る »

抽象化

抽象化(ちゅうしょうか、Abstraction、Abstraktion)とは、思考における手法のひとつで、対象から注目すべき要素を重点的に抜き出して他は無視する方法である。反対に、ある要素を特に抜き出して、これを無視したり、切り捨てる意味もあり、この用法については捨象(しゃしょう)するという。従って、抽象と捨象は盾の両面といえる。.

新しい!!: 抽象解釈と抽象化 · 続きを見る »

束 (束論)

数学における束(そく、lattice)は、任意の二元集合が一意的な上限(最小上界、二元の結びとも呼ばれる)および下限(最大下界、二元の交わりとも呼ばれる)を持つ半順序集合である。それと同時に、ある種の公理的恒等式を満足する代数的構造としても定義できる。二つの定義が同値であることにより、束論は順序集合論と普遍代数学の双方の領域に属することとなる。さらに、半束 (semilattice) の概念は束の概念を含み、さらにハイティング代数やブール代数の概念も含む。これら束に関連する構造は全て順序集合としても代数系としても記述することができるという特徴を持つ。.

新しい!!: 抽象解釈と束 (束論) · 続きを見る »

最小不動点

最小不動点(さいしょうふどうてん、Least fixed point, LFP)は、関数の不動点の中でも、何らかの半順序関係において最も小さい不動点をいう。 例えば、次の実関数 の最小不動点は、実数の一般的な順序関係において x.

新しい!!: 抽象解釈と最小不動点 · 続きを見る »

ここにリダイレクトされます:

抽象インタプリタ抽象実行

出ていきます入ってきます
ヘイ!私たちは今、Facebook上です! »