知識マップ: 画像処理の境界外アクセスをSPARKで証明する ── 2値化・平滑化・ラベリングとCとの速度比較

記事「画像処理の境界外アクセスをSPARKで証明する ── 2値化・平滑化・ラベリングとCとの速度比較」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。

画像処理のコードが画像の外を読み書きしないことを、SPARKのGNATproveで証明する。2値化は画像の型と、入力と出力の範囲が等しいという事前条件で、3×3の平滑化はそれに加えて画像が空でないという事前条件で、実行時エラーがないこと(Silver)を証明できる。2値化の事後条件にはループ不変条件が要る。連結成分のラベリングは、対応表の添字と要素を同じ型にすると実行時エラーがないことを証明できるが、結果の正しさはテストで確かめた。証明できたユニットだけpragma Suppress(-gnatp)で検査を外すと、-O2ではCとほぼ同じ速さになった。-O3ではGCCの自動ベクトル化が働き、2値化と平滑化は検査を残してもCと同じ速さになった。

画像処理の境界外アクセスをSPARKで証明する記事の知識マップSPARKのSilver(実行時エラーがないこと)をGNATproveで証明するとバッファオーバーランと整数オーバーフローを防げること、その証明には事前条件が要り、事後条件にはループ不変条件が要ること、連結成分のラベリングの実行時エラーがないこともGNATproveで確かめられること、証明をpragma Suppressで検査を外すより先に行うこと、Adaの添字の検査と自動ベクトル化との関係を示す図。利用するで確認できる防止する防止する前提とする前提とするで確認できる軽減する原因になり得るより先に行うべき利用するSilverレベル(AoRTE)SPARKGNATproveバッファオーバーラン整数オーバーフロー契約による設計(Pre/Post)ループ不変条件(Loop Invariant)連結成分のラベリング範囲制約(range constraint)pragma SuppressGNAT自動ベクトル化

概念間の関係(全11件)

図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。

主要概念の定義

Silverレベル(AoRTE)
範囲外アクセス・オーバーフロー・ゼロ除算などの実行時エラーが起きないことを証明する、証明レベルのうち実務上の既定目標とされる段階である。
SPARK
プログラムの性質を数学的に証明できるように設計された、Adaのサブセット(部分言語)とそのツール群。
契約による設計(Pre/Post)
サブプログラムの入口での前提条件(Pre)と、出口で保証する性質(Post)を宣言的に記述する、Ada 2012の契約機構である。
連結成分のラベリング
2値画像で、隣り合ってつながった前景の画素の塊(連結成分)ごとに異なる番号(ラベル)を付ける画像処理。画像を2回走査し、1回目で仮のラベルとラベルどうしの対応を記録し、2回目でまとめる方法がよく使われる。
範囲制約(range constraint)
型に値の範囲を持たせ、違反を実行時にConstraint_Error例外として検出するAdaの仕組み。配列アクセスの境界チェックにも使われる。
pragma Suppress
指定した種類の言語定義の実行時検査を外してよいことをコンパイラーに許すAdaのプラグマ。外した検査が失敗する状況が起きると、実行は誤り(erroneous)になる。GNATの-gnatpは、ユニット全体にpragma Suppress (All_Checks)を書いたのと同じ扱いになる。
GNAT
GCCに含まれる無償のAdaコンパイラで、Adaの代表的な処理系。

機械可読データ

このデータセットについて

作成
合同会社小村ソフト
ライセンス
CC BY 4.0 ── 出典(合同会社小村ソフト)とライセンスへのリンクを明示し、改変した場合はその旨を示すことを条件に、再配布・改変を含めて再利用できます
最終確認日
2026-11-10 ── 収録する関係のうち、最後に出典と照合した日

このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。