Extension of modal logic
論理学 、 哲学 、 理論コンピュータサイエンス において 、 動的論理は コンピュータプログラム の特性をエンコードできる 様相論理 の拡張です 。
動的論理におけるステートメントの簡単な例は次の通りである。
The ground is dry → [ It rains ] The ground is wet , {\displaystyle {\text{The ground is dry}}\to [{\text{It rains}}]{\text{The ground is wet}},} これは、地面が現在乾燥していて雨が降った場合、その後地面は濡れていることを示しています。
動的論理の構文には、命題 の言語 (「地面は乾いている」など)と アクション の言語(「雨が降る」など)が含まれます。 中核となる様相構造は、アクション a を実行した後、 命題 p が成り立つはずであると述べる と、アクション aを実行した後、命題 p が成り立つ可能性があると 述べる です 。アクション言語は、演算 (あるアクションの後に別のアクションを実行する)、 (いずれかのアクションを実行する)、および反復 (1 つのアクションを 0 回以上実行する)をサポートします。命題言語は ブール演算 (and、or、not)をサポートします。アクション ロジックは、プログラムをエンコードするのに十分な表現力を持っています。任意のプログラム 、 前提条件 、および 事後条件 に対して、動的論理ステートメントは プログラムの正しさをエンコードするため、動的論理は ホーア論理 よりも汎用的です。 [ a ] p {\displaystyle [a]p} ⟨ a ⟩ p {\displaystyle \langle a\rangle p} a ; b {\displaystyle a\mathbin {;} b} a ∪ b {\displaystyle a\cup b} a ∗ {\displaystyle a{*}} P {\displaystyle P} φ {\displaystyle \varphi } φ ′ {\displaystyle \varphi '} φ → [ P ] φ ′ {\displaystyle \varphi \to [P]\varphi '}
動的論理は、プログラムの形式検証 での使用以外にも、 言語学 、 哲学 、 AI 、その他の分野 で生じる複雑な動作を記述するために適用されてきました。
言語 様相論理は 、必然的に が成り立つと主張する 様相演算子 (ボックス p)と、おそらく が成り立つ と主張する (ダイヤモンド p) ことによって特徴付けられます 。動的論理は、あらゆる動作に 様相演算子 およびを関連付けることでこれを拡張し、それによって 多様相論理 にします 。 の意味は 、動作を実行した後、 必然的に が 成り立つ、 つまり をもたらす必要があるということです 。 の意味は 、 を実行した後、 が成り立つ可能性がある 、 つまり をもたらす可能性があるということです 。これらの演算子は 互いに 双対で あり、つまり、全称 ( ) 量指定子と存在 ( ) 量指定子の関係 と同様に、および によって関連付けられています 。 ◻ p {\displaystyle \Box p} p {\displaystyle p\,\!} ◊ p {\displaystyle \Diamond p} p {\displaystyle p\,\!} a {\displaystyle a\,\!} [ a ] {\displaystyle [a]\,\!} ⟨ a ⟩ {\displaystyle \langle a\rangle \,\!} [ a ] p {\displaystyle [a]p\,\!} a {\displaystyle a\,\!} p {\displaystyle p\,\!} a {\displaystyle a\,\!} p {\displaystyle p\,\!} ⟨ a ⟩ p {\displaystyle \langle a\rangle p\,\!} a {\displaystyle a\,\!} p {\displaystyle p\,\!} a {\displaystyle a\,\!} p {\displaystyle p\,\!} [ a ] p ↔ ¬ ⟨ a ⟩ ¬ p {\displaystyle [a]p\leftrightarrow \neg \langle a\rangle \neg p\,\!} ⟨ a ⟩ p ↔ ¬ [ a ] ¬ p {\displaystyle \langle a\rangle p\leftrightarrow \neg [a]\neg p\,\!} ∀ {\displaystyle \forall \,\!} ∃ {\displaystyle \exists \,\!}
動的ロジックでは、小さなアクションを積み重ねて複合アクションを作成できます。任意のプログラミング言語の基本的な制御演算子をこの目的に使用できますが、 クリーネ の 正規表現 演算子は様相ロジックに適しています。アクション および が与えられた場合 、 複合アクション choice ( または とも表記) は、 または の いずれかを実行することによって実行されます 。複合アクション sequence は 、最初に を実行し、次に を実行することによって実行されます 。複合アクション iteration は 、 を 0 回以上、順番に実行することによって実行されます 。定数アクション BLOCK は 何も実行せず、終了しませんが、定数アクション SKIP または NOP は として 定義でき 、何も実行しませんが、終了します。 a {\displaystyle a\,\!} b {\displaystyle b\,\!} a ∪ b {\displaystyle a\cup b\,\!} a + b {\displaystyle a+b\,\!} a | b {\displaystyle a|b\,\!} a {\displaystyle a\,\!} b {\displaystyle b\,\!} a ; b {\displaystyle a{\mathbin {;}}b\,\!} a {\displaystyle a\,\!} b {\displaystyle b\,\!} a ∗ {\displaystyle a{*}\,\!} a {\displaystyle a\,\!} 0 {\displaystyle 0\,\!} 1 {\displaystyle 1\,\!} 0 ∗ {\displaystyle 0{*}\,\!}
公理 これらの演算子は、前述の公理や、 可能 性( および を 意味する )と 必然性 ( を意味する)という 2 つの推論規則などの様相演算子の公理を含む様相 論理 の適切な公理化をすでに与えているものとして、次のように動的論理で公理化できます 。 [ a ] p ↔ ¬ ⟨ a ⟩ ¬ p {\displaystyle [a]p\leftrightarrow \neg \langle a\rangle \neg p\,\!} ⊢ p {\displaystyle \vdash p} ⊢ p → q {\displaystyle \vdash p\to q} ⊢ q {\displaystyle \vdash q\,} ⊢ p {\displaystyle \vdash p} ⊢ [ a ] p {\displaystyle \vdash [a]p\,}
A1. [ 0 ] p {\displaystyle [0]p\,\!}
A2. [ 1 ] p ↔ p {\displaystyle [1]p\leftrightarrow p\,\!}
A3. [ a ∪ b ] p ↔ [ a ] p ∧ [ b ] p {\displaystyle [a\cup b]p\leftrightarrow [a]p\land [b]p\,\!}
A4です。 [ a ; b ] p ↔ [ a ] [ b ] p {\displaystyle [a\mathbin {;} b]p\leftrightarrow [a][b]p\,\!}
A5. [ a ∗ ] p ↔ p ∧ [ a ] [ a ∗ ] p {\displaystyle [a*]p\leftrightarrow p\land [a][a*]p\,\!}
A6. p ∧ [ a ∗ ] ( p → [ a ] p ) → [ a ∗ ] p {\displaystyle p\land [a*](p\to [a]p)\to [a*]p\,\!}
公理 A1 は、 BLOCK が 終了したときに、 命題 が 偽 で あっても が成り立つ という空約束をします 。 (したがって、 BLOCK は 地獄が凍りつくという動作の本質を抽象化します。) A2 は、 NOP が命題に対して 恒等関数 として働く 、つまりそれ 自体に変化する、と述べています。A3は、 または の 1 つを行うとが 必ず生じる場合 、 が必ず生じ、 についても同様に 起こり 、その逆も同様であるとしています。A4は、 および を行うと が 必ず生じる 場合 、 が 必ず生じる 状況が生じなければならない、が必ず生じる、と述べています 。A5は、A2、A3、および A4 を クリーネ代数 の 方程式に適用した明らかな結果です 。A6 は、 現在が成り立ち、また、何度実行しても、の真実性が を 1 回実行した後もその真実性を必然的に伴う という事実が変わらない場合 、 を何度実行しても真実であり続ける、と主張しています。A6 は、 n を増分する 動作 n := n+1 を任意の動作 に一般化した 数学的帰納法 として認識できます 。 p {\displaystyle p\,\!} p {\displaystyle p\,\!} p {\displaystyle p\,\!} a {\displaystyle a\,\!} b {\displaystyle b\,\!} p {\displaystyle p\,\!} a {\displaystyle a\,\!} p {\displaystyle p\,\!} b {\displaystyle b\,\!} a {\displaystyle a\,\!} b {\displaystyle b\,\!} p {\displaystyle p\,\!} a {\displaystyle a\,\!} b {\displaystyle b\,\!} p {\displaystyle p\,\!} a ∗ = 1 ∪ a ; a ∗ {\displaystyle a{*}=1\cup a{\mathbin {;}}a{*}\,\!} p {\displaystyle p\,\!} a {\displaystyle a\,\!} p {\displaystyle p\,\!} a {\displaystyle a\,\!} p {\displaystyle p\,\!} a {\displaystyle a\,\!} a {\displaystyle a\,\!}
派生 様相論理公理により、 上記に対応する次の 6 つの定理を導出できます。 [ a ] p ↔ ¬ ⟨ a ⟩ ¬ p {\displaystyle [a]p\leftrightarrow \neg \langle a\rangle \neg p\,\!}
T1。 ¬ ⟨ 0 ⟩ p {\displaystyle \neg \langle 0\rangle p\,\!}
T2。 ⟨ 1 ⟩ p ↔ p {\displaystyle \langle 1\rangle p\leftrightarrow p\,\!}
T3。 ⟨ a ∪ b ⟩ p ↔ ⟨ a ⟩ p ∨ ⟨ b ⟩ p {\displaystyle \langle a\cup b\rangle p\leftrightarrow \langle a\rangle p\lor \langle b\rangle p\,\!}
T4。 ⟨ a ; b ⟩ p ↔ ⟨ a ⟩ ⟨ b ⟩ p {\displaystyle \langle a\mathbin {;} b\rangle p\leftrightarrow \langle a\rangle \langle b\rangle p\,\!}
T5。 ⟨ a ∗ ⟩ p ↔ p ∨ ⟨ a ⟩ ⟨ a ∗ ⟩ p {\displaystyle \langle a*\rangle p\leftrightarrow p\lor \langle a\rangle \langle a*\rangle p\,\!}
T6。 ⟨ a ∗ ⟩ p → p ∨ ⟨ a ∗ ⟩ ( ¬ p ∧ ⟨ a ⟩ p ) {\displaystyle \langle a*\rangle p\to p\lor \langle a*\rangle (\neg p\land \langle a\rangle p)\,\!}
T1 は、 BLOCK を 実行することによって何かをもたらすことは不可能であると主張しています 。T2は、 NOP は 何も変更しないこと
を再度指摘し、 NOP は 決定論的であり、 と が同じ力を持つ場合に終了すること を念頭に置いています 。T3は、 または の選択が をもたらす可能性がある場合 、 または のいずれ か 単独で をもたらす可能性があると述べています 。T4 は A4 とまったく同じです。T5 は A5 の場合と同様に説明されています。T6は、 十分な回数 実行することによって をもたらすことが可能である場合、 が現在真であるか、または を繰り返し実行して が (依然として)偽である 状況をもたらすこと が可能であるが、 をもう 1 回実行する と をもたらす可能性があると主張しています 。 [ 1 ] {\displaystyle [1]\,\!} ⟨ 1 ⟩ {\displaystyle \langle 1\rangle \,\!} a {\displaystyle a\,\!} b {\displaystyle b\,\!} p {\displaystyle p\,\!} a {\displaystyle a\,\!} b {\displaystyle b\,\!} p {\displaystyle p\,\!} p {\displaystyle p\,\!} a {\displaystyle a\,\!} p {\displaystyle p\,\!} a {\displaystyle a\,\!} p {\displaystyle p\,\!} a {\displaystyle a\,\!} p {\displaystyle p\,\!}
箱とひし形は、どちらを原始的なものとするかに関して完全に対称である。別の公理化としては、定理T1~T6を公理とし、そこから定理A1~A6を導出することもできただろう。
含意と推論の違いは、動的論理においても他の論理と同様です。含意は、 が真であれば も である と主張しますが 、推論は、 が有効であれば も である と主張します 。しかし、動的論理の動的な性質により、この区別は抽象的な公理の領域から、変化する状況における常識的な経験へと移されます。 たとえば、推論規則 は、その前提が が 常に成り立つと主張しているため、 が 私たちをどこに導くとしても、 そこで が真となるため、妥当です。ただし、含意は有効ではありません。なぜなら、 現時点 で が真実だからといって、を実行した後も が真実であるという保証はないからです 。たとえば、 は、 が偽であるどのような状況でも、または が真であるどのような状況でも 真になりますが、 の値が 1 であるどのような状況でも 主張は偽である ため、 は有効ではありません。 p → q {\displaystyle p\to q\,\!} p {\displaystyle p\,\!} q {\displaystyle q\,\!} p ⊢ q {\displaystyle p\vdash q\,\!} p {\displaystyle p\,\!} q {\displaystyle q\,\!} p ⊢ [ a ] p {\displaystyle p\vdash [a]p\,\!} p {\displaystyle p\,\!} a {\displaystyle a\,\!} p {\displaystyle p\,\!} p → [ a ] p {\displaystyle p\to [a]p\,\!} p {\displaystyle p\,\!} a {\displaystyle a\,\!} p → [ a ] p {\displaystyle p\to [a]p\,\!} p {\displaystyle p\,\!} [ a ] p {\displaystyle [a]p\,\!} ( x = 1 ) → [ x := x + 1 ] ( x = 1 ) {\displaystyle (x=1)\to [x:=x+1](x=1)\,\!} x {\displaystyle x\,\!}
推論の導出規則 様相論理に関しては、前述のように、動的論理にとっても推論規則の 様相 と 必然性は 必要な唯一の基本規則として十分です。しかし、論理学ではよくあるように、公理の助けを借りて、これらからさらに多くの規則を導出できます。動的論理におけるそのような導出規則の例としては、壊れたテレビを一度蹴っても直らないのであれば、繰り返し蹴っても直らない可能性がある、というものがあります。 テレビを蹴るという動作と、 テレビが壊れているという命題について書くと、動的論理ではこの推論を と表現し 、前提 を 、結論 を持ちます 。 の意味は 、テレビを蹴った後、テレビが壊れていることが保証されているということです。したがって前提は、 テレビが壊れている場合は、一度蹴った後もまだ壊れていることを意味します。は 、テレビを 0 回以上蹴る動作を表します。したがって結論は、 テレビが壊れている場合は、 0 回以上蹴った後もまだ壊れていることを意味します。そうでない場合、最後から2番目の蹴りの後、テレビはもう一度蹴れば直る状態になりますが、これはいかなる状況でも決して起こり得ないことを前提としています。 k {\displaystyle k\,\!} b {\displaystyle b\,\!} b → [ k ] b ⊢ b → [ k ∗ ] b {\displaystyle b\to [k]b\vdash b\to [k*]b\,\!} b → [ k ] b {\displaystyle b\to [k]b\,\!} b → [ k ∗ ] b {\displaystyle b\to [k*]b\,\!} [ k ] b {\displaystyle [k]b\,\!} b → [ k ] b {\displaystyle b\to [k]b\,\!} k ∗ {\displaystyle k{*}\,\!} b → [ k ∗ ] b {\displaystyle b\to [k*]b\,\!}
推論 は正しい。しかし、含意は 妥当ではない。なぜなら、 成立するが 成立しない状況は容易に見つけられるからだ。このような反例の状況では、 必ず成立するが 偽である必要があり、しかしながら 真である必要がある。しかし、これはテレビが壊れているが二回蹴れば復活できるような状況であればどこでも起こり得る。含意は、その 成立を今のみ必要とするため失敗(妥当ではない)する。一方、推論は、その 成立を今の状況だけでなくあらゆる状況で必要とするため成功(妥当)する。 b → [ k ] b ⊢ b → [ k ∗ ] b {\displaystyle b\to [k]b\vdash b\to [k*]b\,\!} ( b → [ k ] b ) → ( b → [ k ∗ ] b ) {\displaystyle (b\to [k]b)\to (b\to [k*]b)\,\!} b → [ k ] b {\displaystyle b\to [k]b\,\!} b → [ k ∗ ] b {\displaystyle b\to [k*]b\,\!} b {\displaystyle b\,\!} [ k ∗ ] b {\displaystyle [k*]b\,\!} [ k ] b {\displaystyle [k]b\,\!} b → [ k ] b {\displaystyle b\to [k]b\,\!} b → [ k ] b {\displaystyle b\to [k]b\,\!}
有効な含意の例としては、命題 が挙げられます 。これは、 が 3 以上の場合、 を増分した後 、は 4 以上になる必要がある、というものです。 のように 、 必ず 終了することが保証されている 決定論的なアクションの場合、 と は同じ効力を持つ 可能性が あり、つまり、 と は同じ意味を持つ可能性があります。したがって、上記の命題は 、 が 3 以上の場合 、 を実行した後、 は 4 以上になる可能性がある、 という主張 と同等です。 ( x ≥ 3 ) → [ x := x + 1 ] ( x ≥ 4 ) {\displaystyle (x\geq 3)\to [x:=x+1](x\geq 4)\,\!} x {\displaystyle x\,\!} x {\displaystyle x\,\!} x {\displaystyle x\,\!} a {\displaystyle a\,\!} x := x + 1 {\displaystyle x:=x+1\,\!} [ a ] {\displaystyle [a]\,\!} ⟨ a ⟩ {\displaystyle \langle a\rangle \,\!} ( x ≥ 3 ) → ⟨ x := x + 1 ⟩ ( x ≥ 4 ) {\displaystyle (x\geq 3)\to \langle x:=x+1\rangle (x\geq 4)\,\!} x {\displaystyle x\,\!} x := x + 1 {\displaystyle x:=x+1\,\!} x {\displaystyle x\,\!}
割り当て 代入文の一般的な形式は、 です。 ここで は変数であり、 は定数と変数から構築された式であり、言語で提供される加算や乗算などの演算が用いられます。代入に関するホーア公理は、単一の公理としてではなく、公理スキームとして与えられます。 x := e {\displaystyle x:=e\,\!} x {\displaystyle x\,\!} e {\displaystyle e\,\!}
A7. [ x := e ] Φ ( x ) ↔ Φ ( e ) {\displaystyle [x:=e]\Phi (x)\leftrightarrow \Phi (e)\,\!}
これは、変数 のインスタンスを 0 個以上含む 任意の式でインスタンス化できる という意味で、スキーマです 。 の意味は 、 内で自由に出現する ( つまり 、 の ように何らかの量指定子に束縛されていない ) を に置き換えたものです 。例えば、A7 を 、 、または でインスタンス化できます 。このような公理スキーマにより、共通の形式を持つ無限個の公理を、その形式を包含する有限式として記述することができます。 Φ ( x ) {\displaystyle \Phi (x)\,\!} Φ {\displaystyle \Phi \,\!} x {\displaystyle x\,\!} Φ ( e ) {\displaystyle \Phi (e)\,\!} Φ {\displaystyle \Phi \,\!} x {\displaystyle x\,\!} Φ {\displaystyle \Phi \,\!} ∀ x {\displaystyle \forall x\,\!} e {\displaystyle e\,\!} [ x := e ] ( x = y 2 ) ↔ e = y 2 {\displaystyle [x:=e](x=y^{2})\leftrightarrow e=y^{2}\,\!} [ x := e ] ( b = c + x ) ↔ b = c + e {\displaystyle [x:=e](b=c+x)\leftrightarrow b=c+e\,\!}
A7 のインスタンスにより 、数段落前に遭遇した 例が と同等であることが機械的に計算でき 、これは 初等代数 によりと同等になります 。 [ x := x + 1 ] ( x ≥ 4 ) ↔ x + 1 ≥ 4 {\displaystyle [x:=x+1](x\geq 4)\leftrightarrow x+1\geq 4\,\!} [ x := x + 1 ] x ≥ 4 {\displaystyle [x:=x+1]x\geq 4\,\!} x + 1 ≥ 4 {\displaystyle x+1\geq 4\,\!} x ≥ 3 {\displaystyle x\geq 3\,\!}
との組み合わせによる代入の例は、 命題 です。これは、 十分な頻度 で増分することで を 7 に等しくすることが可能であることを主張しています。 もちろん、これは常に真であるとは限りません。例えば、 が 最初から 8 であったり、 6.5 であったりする場合は、この命題は動的論理の定理ではありません。 しかし、 が整数型の場合、この命題が真となるのは、 が 最初から最大で 7 である場合のみです。つまり、これは を遠回しに表現しただけです 。 ∗ {\displaystyle *\,\!} ⟨ ( x := x + 1 ) ∗ ⟩ x = 7 {\displaystyle \langle (x:=x+1)*\rangle x=7\,\!} x {\displaystyle x\,\!} x {\displaystyle x\,\!} x {\displaystyle x\,\!} x {\displaystyle x\,\!} x {\displaystyle x\,\!} x ≤ 7 {\displaystyle x\leq 7\,\!}
数学的帰納法は 、命題を、動作 を 、そして として 具体化した A6 のインスタンスとして得られる 。これらの3つの具体化のうち最初の2つは単純で、A6 を に変換する。しかし、 を に置き換える という一見単純な置換は、 様相が置換に干渉する場合に様相論理の いわゆる 指示的不透明性を露呈させるため、それほど単純ではない。 p {\displaystyle p\,\!} Φ ( n ) {\displaystyle \Phi (n)\,\!} a {\displaystyle a\,\!} n := n + 1 {\displaystyle n:=n+1\,\!} n {\displaystyle n\,\!} 0 {\displaystyle 0\,\!} ( Φ ( n ) ∧ [ ( n := n + 1 ) ∗ ] ( Φ ( n ) → [ n := n + 1 ] Φ ( n ) ) ) → [ ( n := n + 1 ) ∗ ] Φ ( n ) {\displaystyle (\Phi (n)\land [(n:=n+1)*](\Phi (n)\to [n:=n+1]\Phi (n)))\to [(n:=n+1)*]\Phi (n)\,\!} 0 {\displaystyle 0\,\!} n {\displaystyle n\,\!}
を に 代入したとき 、命題記号 を 様相 に関して 厳密な指示子 として考えていました。つまり、 を増分しても命題は 以前と 同じままですが、増分によって その真理値が変化する可能性があります。同様に、 を増分しても動作 は変わりません が、増分によって 異なる環境で実行されます。しかし、 自体は様相 に関して厳密な指示子ではありません 。 を増分する前は 3 を示していましたが、増分後は 4 を示します。したがって、A6 のどこでも を に 代入することはできません 。 Φ ( n ) {\displaystyle \Phi (n)\,\!} p {\displaystyle p\,\!} p {\displaystyle p\,\!} [ n := n + 1 ] {\displaystyle [n:=n+1]\,\!} n {\displaystyle n\,\!} n {\displaystyle n\,\!} a {\displaystyle a\,\!} n {\displaystyle n\,\!} n {\displaystyle n\,\!} n {\displaystyle n\,\!} [ n := n + 1 ] {\displaystyle [n:=n+1]\,\!} n {\displaystyle n\,\!} 0 {\displaystyle 0\,\!} n {\displaystyle n\,\!}
様相の不透明性に対処する方法の一つは、それらを除去することです。そのためには、 無限連言 、つまり 全体にわたる連言 として展開します 。ここで A4 を適用して を に変換し 、様相を持ちます。次に、 これに ホーアの公理 を 回適用して を生成し、この無限連言を に簡約します。この簡約全体を A6 の の両方のインスタンスに適用して を生成します 。残りの様相は、ホーアの公理をもう一度使用して を除去することで実現できます 。 [ ( n := n + 1 ) ∗ ] Φ ( n ) {\displaystyle [(n:=n+1)*]\Phi (n)\,\!} [ ( n := n + 1 ) 0 ] Φ ( n ) ∧ [ ( n := n + 1 ) 1 ] Φ ( n ) ∧ [ ( n := n + 1 ) 2 ] Φ ( n ) ∧ … {\displaystyle [(n:=n+1)^{0}]\Phi (n)\land [(n:=n+1)^{1}]\Phi (n)\land [(n:=n+1)^{2}]\Phi (n)\land \ldots \,\!} i {\displaystyle i\,\!} [ ( n := n + 1 ) i ] Φ ( n ) {\displaystyle [(n:=n+1)^{i}]\Phi (n)\,\!} [ ( n := n + 1 ) i ] Φ ( n ) {\displaystyle [(n:=n+1)^{i}]\Phi (n)\,\!} [ n := n + 1 ] [ n := n + 1 ] … Φ ( n ) {\displaystyle [n:=n+1][n:=n+1]\ldots \Phi (n)\,\!} i {\displaystyle i\,\!} i {\displaystyle i\,\!} Φ ( n + i ) {\displaystyle \Phi (n+i)\,\!} ∀ i Φ ( n + i ) {\displaystyle \forall i\Phi (n+i)\,\!} [ ( n := n + 1 ) ∗ ] {\displaystyle [(n:=n+1)*]\,\!} ( Φ ( n ) ∧ ∀ i ( Φ ( n + i ) → [ n := n + 1 ] Φ ( n + i ) ) ) → ∀ i Φ ( n + i ) {\displaystyle (\Phi (n)\land \forall i(\Phi (n+i)\to [n:=n+1]\Phi (n+i)))\to \forall i\Phi (n+i)\,\!} ( Φ ( n ) ∧ ∀ i ( Φ ( n + i ) → Φ ( n + i + 1 ) ) ) → ∀ i Φ ( n + i ) {\displaystyle (\Phi (n)\land \forall i(\Phi (n+i)\to \Phi (n+i+1)))\to \forall i\Phi (n+i)\,\!}
不透明な様相がなくなったので、 通常の 第一階論理 のやり方でを安全に置き換えて、 ペアノ の有名な公理、つまり数学的帰納法 を得ることができます 。 0 {\displaystyle 0\,\!} n {\displaystyle n\,\!} ( Φ ( 0 ) ∧ ∀ i ( Φ ( i ) → Φ ( i + 1 ) ) ) → ∀ i Φ ( i ) {\displaystyle (\Phi (0)\land \forall i(\Phi (i)\to \Phi (i+1)))\to \forall i\Phi (i)\,\!}
ここで簡単に触れた微妙な点は、 は 自然数 にわたるものとして理解されるべきであるということです。ここで、 は、 の展開における上付き文字であり、 すべての自然数 に わたる の和集合です。 が 整数 型、あるいは 実数 型 であった 場合に、この型情報をきちんと保持することの重要性が明らかになります 。これらのいずれの場合も、A6 は公理として完全に有効です。好例を挙げると、 が実数変数で、 述語 が自然数 である 場合、最初の 2 回の置換後の公理 A6、つまり は、 が 自然数 型である 場合 と同様に有効です。つまり、その状態での の値に関係なく、すべての状態で真です 。特定の状態でが 自然数 である場合 、A6 の主含意の前提は成り立ちますが、 も自然数であるため、結論も成り立ちます。 が自然数でない場合、前提は偽であるため、結論が真であるかどうかに関係なく、A6 は真のままです。 A6 を、これに一切影響を与えることなく同等に強化することができ 、他の方向は A5 から証明可能であり、A6 の前提がどこかで誤っている場合は、結論も 必ず 誤りであることが分かります。 ∀ i {\displaystyle \forall i\,\!} i {\displaystyle i\,\!} a ∗ {\displaystyle a{*}\,\!} a i {\displaystyle a^{i}\,\!} i {\displaystyle i\,\!} n {\displaystyle n\,\!} n {\displaystyle n\,\!} Φ ( n ) {\displaystyle \Phi (n)\,\!} n {\displaystyle n\,\!} ( Φ ( n ) ∧ ∀ i ( Φ ( n + i ) → Φ ( n + i + 1 ) ) ) → ∀ i Φ ( n + i ) {\displaystyle (\Phi (n)\land \forall i(\Phi (n+i)\to \Phi (n+i+1)))\to \forall i\Phi (n+i)\,\!} n {\displaystyle n\,\!} n {\displaystyle n\,\!} n {\displaystyle n\,\!} n + i {\displaystyle n+i\,\!} n {\displaystyle n\,\!} p ∧ [ a ∗ ] ( p → [ a ] p ) ↔ [ a ∗ ] p {\displaystyle p\land [a*](p\to [a]p)\leftrightarrow [a*]p\,\!}
テスト 動的論理は、すべての命題に テストと呼ばれる 動作を関連付けます。 が成立する場合、テストは NOP として動作し 、何も変更せずに動作を続行します。 が偽の場合、 BLOCK として動作します 。テストは以下のように公理化できます。 p {\displaystyle p\,\!} p ? {\displaystyle p?\,\!} p {\displaystyle p\,\!} p ? {\displaystyle p?\,\!} p {\displaystyle p\,\!} p ? {\displaystyle p?\,\!}
A8. [ p ? ] q ↔ ( p → q ) {\displaystyle [p?]q\leftrightarrow (p\to q)\,\!}
に対応する定理は 次のとおりです。 ⟨ p ? ⟩ {\displaystyle \langle p?\rangle \,\!}
T8。 ⟨ p ? ⟩ q ↔ p ∧ q {\displaystyle \langle p?\rangle q\leftrightarrow p\land q\,\!}
動的論理では、if p then a else b という構文は として実現されます 。このアクションは保護された選択を表します。 が成立する場合、 は と同等であり 、 は BLOCK と同等であり、 は と 同等です 。したがって、 が真の場合はアクションの実行者は左の分岐のみを、 が 偽の場合は右の分岐のみを取ることができます。 ( p ? ; a ) ∪ ( ¬ p ? ; b ) {\displaystyle (p?\mathbin {;} a)\cup (\neg p?\mathbin {;} b)\,\!} p {\displaystyle p\,\!} p ? ; a {\displaystyle p?\mathbin {;} a\,\!} a {\displaystyle a\,\!} ¬ p ? ; b {\displaystyle \neg p?\mathbin {;} b\,\!} a ∪ 0 {\displaystyle a\cup 0\,\!} a {\displaystyle a\,\!} p {\displaystyle p\,\!} p {\displaystyle p\,\!}
while p do a という 構文 は として実現されます 。これは を 0回以上実行した後、 を実行します 。 が真である限り 、 最後の は実行者が反復処理を途中で終了するのを阻止しますが、 が偽になると、本体の以降の反復処理 は阻止され、実行者はテスト を介して終了するしかなくなります 。 ( p ? ; a ) ∗ ; ¬ p ? {\displaystyle ({p?\mathbin {;} a)*}\mathbin {;} \neg p?\,\!} p ? ; a {\displaystyle p?\mathbin {;} a\,\!} ¬ p ? {\displaystyle \neg p?\,\!} p {\displaystyle p\,\!} ¬ p ? {\displaystyle \neg p?\,\!} p {\displaystyle p\,\!} ¬ p ? {\displaystyle \neg p?\,\!}
ランダム割り当てとしての定量化 ランダム代入文は、 任意の値を 設定するという非決定的な動作を表します。 は 、 に 何を設定するかに関係なく が成り立つことを表します。一方、 は、 true となる値を 設定することが可能であることを表します 。 したがって、 は全称量指定子 と同じ意味を持ち 、 同様に は存在量指定子 に対応します 。つまり、一階述語論理は、 という形式のプログラムの動的論理として理解できます 。 x := ? {\displaystyle x\mathbin {:=} {?}\,\!} x {\displaystyle x\,\!} [ x := ? ] p {\displaystyle [x\mathbin {:=} {?}]p\,\!} p {\displaystyle p\,\!} x {\displaystyle x\,\!} ⟨ x := ? ⟩ p {\displaystyle \langle x\mathbin {:=} {?}\rangle p\,\!} x {\displaystyle x\,\!} p {\displaystyle p\,\!} [ x := ? ] {\displaystyle [x\mathbin {:=} {?}]\,\!} ∀ x {\displaystyle \forall x\,\!} ⟨ x := ? ⟩ {\displaystyle \langle x\mathbin {:=} {?}\rangle \,\!} ∃ x {\displaystyle \exists x\,\!} x := ? {\displaystyle x:=?\,\!}
ダイクストラは 、変数の値を 任意の正の整数に設定するプログラムの不可能性を示したと主張した。 [1] しかし、代入と*演算子を用いた動的論理では、 動的論理プログラムによって変数を任意の正の整数に設定することができる 。したがって、ダイクストラの主張を却下するか、*演算子は有効ではないと判断する必要がある。 x {\displaystyle x} x {\displaystyle x} ( x := 0 ) ; ( x := x + 1 ) ∗ {\displaystyle (x\mathbin {:=} 0)\mathbin {;} (x:=x+1){*}}
可能世界意味論 様相論理は、可能世界 意味論またはクリプキ構造の観点から解釈されるのが最も一般的です 。この意味論は、プログラム検証への応用においては世界をコンピュータの状態として、言語学やAIなどへの応用においては環境の状態として解釈することで、動的論理に自然に引き継がれます。可能世界意味論の役割の一つは、真理と妥当性という直感的な概念を形式化し、それによって公理系における健全性と完全性の概念を定義できるようにすることです。推論規則は、前提の妥当性が結論の妥当性を意味する場合、健全です。公理系は、そのすべての公理が有効であり、かつ推論規則が健全である場合、健全です。公理系は、すべての有効な式がその系の定理として導出可能である場合、完全です。これらの概念は、 動的論理を含む
すべての 論理系に当てはまります。
命題動的論理(PDL) 通常 論理、すなわち一階論理に は、アサーションとデータという2種類の用語があります。上記の例からわかるように、動的論理では、アクションを表す3つ目の用語が追加されます。動的論理のアサーションには、 これら3種類すべてが含まれます。 、、 は データ、 はアクション、および は アサーションです。 命題論理 は、一階論理からデータ項を省略し、単純な 命題変数、またはアトム、あるいは and 、 or 、 not などの論理接続詞で構成された複合命題など、抽象的な命題についてのみ推論することで派生します 。 [ x := x + 1 ] ( x ≥ 4 ) {\displaystyle [x:=x+1](x\geq 4)\,\!} x {\displaystyle x\,\!} x + 1 {\displaystyle x+1\,\!} 4 {\displaystyle 4\,\!} x := x + 1 {\displaystyle x:=x+1\,\!} x ≥ 4 {\displaystyle x\geq 4\,\!} [ x := x + 1 ] ( x ≥ 4 ) {\displaystyle [x:=x+1](x\geq 4)\,\!}
命題動的論理(PDL)は、1977年にマイケル・J・フィッシャー と リチャード・ラドナー によって動的論理から派生しました 。PDLは、データを省略しアクションを追加することで、命題論理と動的論理の背後にある考え方を融合させています。したがって、PDLの用語はアクションと命題です。上記のTVの例はPDLで表現されていますが、次の例は 一階動的論理で表現されています。PDLと(一階)動的論理の関係は、命題論理と一階論理の関係と同じです。 x := x + 1 {\displaystyle x:=x+1\,\!}
フィッシャーとラドナーは1977年の論文で、PDLの充足可能性は 計算量 が最大でも 非決定性指数時間 、最悪の場合でも 少なくとも 決定性指数時間であることを示した。このギャップは1978年に ヴォーン・プラット によって埋められ、プラットはPDLが決定性指数時間で決定可能であることを示した。1977年、クリスター・ゼーゲルバーグはPDLの完全な公理化、すなわち上記に示した公理A1~A6を伴う様相論理Kの任意の完全な公理化を提案した。ゼーゲルバーグの公理の完全性証明は、 ガベイ (未発表メモ)、 パリク (1978年)、プラット(1979年)、 コーゼン とパリク(1981年)によってなされた。
歴史 動的論理は、 1974 年にプログラム検証の授業のノートの中で、 ホーア論理に意味を割り当てる方法として、 ヴォーン プラット によって開発されました。これは、ホーア論理の公式 を と表現することによって行われました 。このアプローチは、後に 1976 年に それ自体の 論理システムとして発表されました。このシステムは、アンドレイ サルウィッキの アルゴリズム論理システム [2] や エドガー ダイクストラ の最弱前提条件述語変換器 の概念に類似して おり、 は ダイクストラの 最弱自由前提条件 に対応しています。ただし、これらの論理は、様相論理、 クリプキ意味論 、正規表現、または二項関係の計算とは関係がありません。したがって、動的論理は、アルゴリズム論理と 述語変換器 を、様相論理の公理とクリプキ意味論、および二項関係と正規表現の計算に結び付けた改良版と見なすことができます。 p { a } q {\displaystyle p\{a\}q\,\!} p → [ a ] q {\displaystyle p\to [a]q\,\!} wp ( a , p ) {\displaystyle \operatorname {wp} (a,p)\,\!} [ a ] p {\displaystyle [a]p\,\!} wlp ( a , p ) {\displaystyle \operatorname {wlp} (a,p)\,\!}
同時実行の課題 ホーア論理、アルゴリズミック論理、最弱前提条件、そして動的論理は、いずれも逐次的行動に関する議論や推論に適しています。しかしながら、これらの論理を並行行動に拡張することは困難であることが判明しています。様々なアプローチがありますが、いずれも逐次的行動の場合のような簡潔さを欠いています。対照的に、 アミール・プヌエリ の1977年の時 相論理 体系は、動的論理と多くの共通点を持つ様相論理の別の変種であり、プヌエリが「内生的」論理と特徴づけた点において、上記のすべての論理とは異なります。他の論理は「外生的」論理です。プヌエリがここで意味したのは、時相論理の主張は、単一の全体的状況が時間の経過と共に変化するという普遍的な行動枠組みの中で解釈されるのに対し、他の論理の主張は、それらが論じる複数の行動の外部でなされるということです。内生的アプローチの利点は、環境が時間と共に変化する際に、何が何を引き起こすのかという根本的な仮定を置かないことです。代わりに、時相論理式はシステム内の無関係な2つの部分について論じることができます。これらの部分は無関係であるため、暗黙のうちに並行して進化します。実際、時相アサーションの通常の 論理積は 、時相論理の並行 合成演算子です。この並行性へのアプローチの単純さから、時相論理は、同期、干渉、独立性、 デッドロック 、 ライブロック 、公平性など の側面を持つ並行システムの推論において、様相論理として最適に選ばれています。
参照
さらに読む
^ ダイクストラ, EW (1976). 『プログラミングの規律』 エングルウッド・クリフス: プレンティス・ホール社. pp. 221. ISBN 013215871X 。 ^ ミルコフスカ、グラジナ;サルウィッキー A. (1987)。アルゴリズム ロジック (PDF) 。ワルシャワとボストン: PWN & D. Reidel Publ. p. 372.ISBN 8301068590 。
参考文献
外部リンク フロイド・ホーア論理に関する意味論的考察(動的論理に関する原著論文) 第6章 ロジックとアクション( Logic In Action サイト) アンドレ・プラッツァーによる動的論理に関する講義ノート