節標準形

提供: miniwiki
移動先:案内検索

節標準形: Clausal normal formCNF)とは、数理論理学において、論理プログラミングや多くの自動定理証明系で使われる論理式の標準形式である。論理式を節標準形に変換すると論理式の構造が破壊される。また、Tseitin transformation を使用せずに単純な変換をすると式のサイズが最悪ケースでは指数関数的に増大English版する。

変換手順

古典的な一階述語論理の論理式を節標準形に変換する手順は以下の通りである。

  1. 論理式を否定標準形にする。
  2. スコーレム化 -- 外から内に向かって、存在量化変項をスコーレム定数に置き換え、全称量化変項をスコーレム関数に置き換えていく。具体的には次のような置換を行う。
    • [math]\forall x \, P(x)[/math][math]\exists c \, P(c)[/math] とする。ここで [math]c[/math] は新規導入。
    • [math]\forall x \exists y \, P(y)[/math][math], \forall x \, P(f_c(x))[/math] とする。ここで [math]f_c[/math] は新規導入。
  3. 全称量化子を削除する。
  4. 論理式を連言標準形にする。
  5. [math]C1 \wedge ... \wedge Cn[/math][math]\{ C1 , ... , Cn \}[/math] に置換。それぞれの論理積は [math]\neg A1 \vee ... \vee \neg Am \vee B1 \vee ... \vee Bn[/math] という形式になり、これは [math]( A1 \wedge ... \wedge Am ) \to ( B1 \vee ... \vee Bn )[/math] と等価である。
    • m=0 かつ n=1 なら、Prolog における事実となる。
    • m>0 かつ n=1 なら、Prolog における規則となる。
    • m>0 かつ n=0 なら、Prolog におけるクエリとなる。
  6. 最後に各論理積 [math]( A1 \wedge ... \wedge Am ) \to ( B1 \vee ... \vee Bn )[/math][math]\{ A1 \wedge ... \wedge Am \to B1 , A1 \wedge ... \wedge Am \to B2 , ... , A1 \wedge ... \wedge Am \to Bn \}[/math] に置換する。

n = 1 の場合をホーン節と呼び、これは万能チューリング機械と同等の計算能力を有する。

完全な等価でなくとも、同等(equisatisfiable)な節標準形で十分であることが多い。その場合、指数関数的増大を防ぐには、Tseitin transformation を使用し、定義(definitions)を導入して論理式の一部を改名(rename)すればよい。

関連項目

テンプレート:Logic