• 検索結果がありません。

第 9 章 HOL における定理証明

9.4 接続表とアドレス変換表の一貫性証明 (2)

pfm_incSecの適用前後で不変表明con_nat_Inv2が成立することを証明する.

命題の設定

pfm_incSecは,pfm_incSec1をn回繰り返すメソッドであるため,実際には,pfm_incSec1 の適用前後で不変表明が成立することを証明すれば,pfm_incSecの適用前後でも成立す ることがいえる.

証明対象の命題は次のようになる.

let s1 = pfm_incSec1 pfm s in

Pre2 pfm s /\ con_nat_Inv2 pfm s ==> con_nat_Inv2 pfm s1

つまり,ストアsについてcon_nat_Inv2が成立することを仮定し,pfm_incSec1の適用 後のストアs1についてcon_nat_Inv2が依然として成立していることを証明する.

証明

9.3と同様,次の2つの補題を証明する.

(A) !pfm s. Pre2 pfm s /\ con_nat_timer_Inv pfm s ==>

con_nat_timer_Inv pfm (pfm_incSec1 pfm s) (B) !pfm s. Pre2 pfm s ==>

connection_timer_Inv pfm (pfm_incSec1 pfm s) 以下,補題(A)(B)を順に証明する.

補題(A)の証明

証明対象の命題は次の通りである.

!pfm s. Pre2 pfm s /\ con_nat_timer_Inv pfm s ==>

con_nat_timer_Inv pfm (pfm_incSec1 pfm s)

まず,全称量子を除去し ,con_nat_timer_Invの定義を展開する.

Pre2 pfm s /\

(!lap gap t.

pfm_connectionExistsWithTime pfm lap gap t s ==>

pfm_srcnatRuleExistsWithTime pfm lap t s) ==>

(pfm_connectionExistsWithTime pfm lap gap t (pfm_incSec1 pfm s) ==>

pfm_srcnatRuleExistsWithTime pfm lap t (pfm_incSec1 pfm s)) ここで,次の定理が成立することに着目する.

|- !pfm s. Pre2 pfm s ==>

(pfm_connectionExistsWithTime pfm lap gap t (pfm_incSec1 pfm s) = pfm_connectionExistsWithTime pfm lap gap (SUC t))

つまり,すべての接続についてタイムアウト時間を 1減算した直後に,lapとgapの間の 残り時間がtとなっている接続が存在することは,タイムアウト減算前にlapとgapの間 の残り時間がSUC tとなっている接続が存在することと同値である( 図9.9上段).この 定理は,定義を展開後,接続表を表す次の項

contable_get_connectionList (pfm_get_contable pfm s) s に関する帰納法を用いて証明することができる( 証明略).

アドレス変換表についても同様に次の定理が成立する.

|- !pfm s. Pre2 pfm s ==>

(pfm_srcnatRuleExistsWithTime pfm lap t (pfm_incSec1 pfm s) = pfm_srcnatRuleExistsWithTime pfm lap (SUC t))

つまり,すべてのアドレス変換規則についてタイムアウト時間を 1減算した直後に,lap に対応する残り時間がtとなっている変換規則が存在することは,タイムアウト減算前に lapに対応する残り時間がSUC tとなっている変換規則が存在することと同値である(図 9.9下段).

nattable contable

(lap,gap,t)

(lap,_,t) contable

nattable pfm_incSec1 pfm s

(lap,gap,t+1)

(lap,_,t+1)

pfm_incSec1 pfm s ...

...

...

...

...

...

...

...

...

...

図9.9: pfm incSec1による接続表とアドレス変換表の変化

これらの定理を用いてゴ ールを簡単化すると,次のようになる.

Pre2 pfm s /\

(!lap gap t.

pfm_connectionExistsWithTime pfm lap gap t s ==>

pfm_srcnatRuleExistsWithTime pfm lap t s) ==>

(pfm_connectionExistsWithTime pfm lap gap (SUC t) s ==>

pfm_srcnatRuleExistsWithTime pfm lap (SUC t) s)

後は,前提条件の全称量子をそれぞれlap,gap,SUC tに特化すれば証明が完了する.

補題(B)の証明

証明対象の命題は次の通りである.

|- !pfm s. Pre2 pfm s ==>

  connection_timer_Inv pfm (pfm_incSec1 pfm s)

不変表明connection_timer_Invは,pfm_incSec1適用後,適用前の不変表明の仮定 なしで成立する.これが成立する理由は,pfm_incSec1により,すべての接続のタイムア ウト残り時間は 1 減算されるが,減算した結果が 0となる接続は同時に除去されてしま

うからである.したがって,pfm_incSec1の適用後は,残り時間が 0 より大きい接続し か残っておらず,不変表明が無条件に成立する(詳細略).

III

付録集

付 録 A パケット フィルタリングシステムの HOL コード

パケットフィルタリングシステムのクラスモデル,HOLにおけるメソッド 定義を以下に 示す.