SlideShare a Scribd company logo
1 of 49
Download to read offline
1
1
ホーア論理のリアルタイム分散システムへの拡張
Realtime Systemの形式仕様化
藤倉 俊幸
第27回CSP研究会
2021-05-22
2
Agenda
1. はじめに
2. ホーア論理について
3. Jozef Hoomanのアプローチ
4. サンプル
5. 振る舞いモデル利用の提案
6. まとめ
3
1. はじめに
• ホーア論理は、シーケンシャルプログラム(S)の正しさを証明する手法
– {p} S {q}の形式を利用する.
• pは前提条件、Sはシーケンシャルプログラム、qは事後条件
– シーケンシャルプログラムの合成と反復に対する合成ルールを構成できる.
• ここでは,分散リアルタイムプログラムへの拡張を考える.
プログラム
シーケンシャルプログラム
リアクティブプログラム
リアルタイムプログラム
並列プログラム
従来のホーア論理
終了しないプログラムの正しさの証明
複数の分散したプログラムの正しさの証明
時間制約を持つプログラムの正しさの証明
部分正当性とか気にしない
Timed CSP, DC
CSP,CCS
4
2. ホーア論理について
• 歴史
1967 フロイド 論証によってプログラムの正しさを示す.
1970 ホーア ソースコード(Pascal)についての公理系
まずプログラムあり,
その正しさを示す.
{Q}S{R}
1976 ダイクストラ 仕様からプログラムを導出する.
Q ⇒wp(S,R)
Sの実行が、Rを満たす状態で有限
時間内に終了することが保証され
るようなすべての状態のセット
最弱事前条件
Qを満たす状態でSの実行を始
めると,もし実行が終われば,
結果はRを満たす.
Sの実行を、wp(S,R)から開始
すればRを満たして終了する.
5
簡単な仕様からプログラムを導出する例
• {Q} S {R}
• {T} S {R: z ≡ max(x, y)}
• R: z ≥ x ∧ z ≥ y ∧ ((z = x) ∨ (z = y))
z := x がSの候補になる.
wp(“z := x”, R) を計算する.
= x ≥ x ∧ x ≥ y ∧ ((x = x) ∨ (x = y))
= T ∧ (x ≥ y) ∧ ( T ∨ (x = y))
= x ≥ y ∧ x = y
= x ≥ y
x ≥ y の時にz := xとすれば良い.
だから
if(x>=y){z=x}
2つの値から大きい値を返す.
形式化した事後条件.
事前条件はTrue
T ⇒wp(S, R)
ダイクストラの最弱事前条件
プログラムコード
6
つづき • {Q} S {R}
• {T} S {R: z ≡ max(x, y)}
• R: z ≥ x ∧ z ≥ y ∧ ((z = x) ∨ (z = y))
z := y もSの候補になる.
wp(“z := y”, R) を計算する.
=y ≥ x ∧ y ≥ y ∧ ((y = x) ∨ (y = y))
= y ≥ x ∧ T ∧ ((y = x) ∨ T)
= y ≥ x ∧ x = y
= y ≥ x
y ≥ xの時にz := yとすれば良い.
だから
if (y >= x) { z = y }
if (x >= y) { z = x }
(x >= y)∨(y >= x) = T
事前条件も満たしている.
if (x >= y) { z = x }
else if (y >= x) { z = y }
S =
となる.
7
詳しくは
http://www.cs.cornell.edu/gries/July2016/The-Science-Of-Programming-Gries-038790641X.pdf
プログラミングの科学 (情報処理シリーズ) 単行本
培風館 (1991/1/1)
D. グリース (著), 筧 捷彦 (かけひ かつひこ翻訳)
https://amzn.to/3jFKgSw
https://amzn.to/2ZCl1JQ
8
並行プログラムへの拡張
Richard J. Lipton. 1975. Reduction: a method of proving properties of parallel programs.
Commun. ACM 18, 12 (Dec. 1975), 717 721. DOI:https://doi.org/10.1145/361227.361234
並列性に制限を加える.
David Gries. 1977. An exercise in proving parallel programs
correct. Commun. ACM 20, 12 (Dec. 1977), 921 930.
DOI:https://doi.org/10.1145/359897.359903
Owicki, Susan S. Axiomatic Proof Techniques for Parallel Programs, Cornell University thesis, 1975-07
セマフォ、イベントなどを使った
並行プログラムプログラム
9
CSPを利用した拡張
@book{Noauthor2001,
edition = {2},
editor = {Mathai Joseph},
isbn = {0-13-455297-0},
link = {https://www.cs.york.ac.uk/rts/books/RTS-SVABook.html},
publisher = {Prentice Hall International},
title = {Real-Time Systems: Specification, Verification and Analysis},
year = {2001}
}
1996
Chapter 5 Assertional Specification and Verification
http://www.cs.ru.nl/~hooman/
Jozef Hooman
Chapter 6 Timed CSP
Chapter 7 Duration calculus
Chapter 8 Fault-tolerance
Steve Schneider
10
ここでの目的
• ホーア理論は,連続量(物理量)を扱う.しかし,設計レベルでの振る舞いの検証はない.
• Jozef Hoomanの拡張は,トップダウンの段階的詳細化になっているので使いやすい.制約
条件を導出できる.しかし,振る舞いを実装まで落としていない.
• モデル検査は
– 振る舞いを扱うことが出来る.
– 離散量は扱えるが連続量については体系的なアプローチがない.
• だから一緒に利用すれば良いだろう.
11
3. Jozef Hoomanのアプローチ
• 方針
– 安全性(safety)と活性(liveness)で検証する.
– プログラムの終了では無く,指定された時間後に事後条件を確定する.
• 形式化の手順
1. システム全体の最上位の要件仕様を策定する.
• 連続コンポーネントのプロパティも含む
2. システム内(環境側も含む)の物理プロセスに関する仮定を形式化する.
3. 連続量に関する制御要求を仕様化する.
4. 手順3を確認する.手順2と3の仕様が、手順1で指定したプロパティを満たすことを示す.
5. (手順3の)制御戦略を離散的インターフェースで表現して仕様に変換する.
• センサーとアクチュエーターの形式仕様を使用する.
6. プログラミング言語で、手順5の離散的仕様を実装する.
• ここでは,このアプローチを改善する.
12
Jozef Hoomanの仕様記述
• 状態の記述
– 観測可能な量(オブザーバブル)を定義して記述
– 時間変数を使用
• プロセスの記述
– CSPっぽい記述を利用
• 式の構造は<< A >> P << C >>
– Pはプロセス
– A 仮定(assumption)
• Pの開始時のローカルオブジェクトの値
• Pの開始時刻
• 監視可能なイベントの発生時刻
– C コミットメント(commitment)
• 終了時のローカルオブジェクトの値
• Pが終了した場合の終了時刻( Pが終了しない場合は∞とする)
• 監視可能なイベントの発生時刻
条件の名前を変える.
「Q前提条件」→「A 仮定(assumption)」
「R事後条件」→「C コミットメント(commitment)」
<< A >> P << C >>
{Q} S {R}
13
• 例: << x = v ∧ now = t >> FUN << y = f (v) ∧ x = v ∧ t+5 < now < t+13 >>
• v および t は論理変数
– 論理変数は暗黙的に全称記号付き
xは変更しないと言う意味
実行には5~13時間単位かかると言う意味
プログラムの開始時刻と変数の初期値を指定
プログラムFUNがf (v) を計算しその値がy
14
プロセスとオブザーバブル
• プロセス P の特定のオブジェクト(チャネル、変数、物理量など)は、その並列環境で監
視できそれを obs(P) で表す.
– obs(P) を P のインターフェイスを表すプロセス P の監視可能なオブジェクト(の表現)のセットと
する.
– P がチャネルを介して通信する場合、 obs(P)にはこれらのチャネルの名前が含まれる.
– P が共有変数を使用する場合,これらの変数の名前はobs(P)に含まれる.
– obs(X) = {obs1, obs2, …}
• 演算子||を使用して、プロセスが並列に構成されているとする.
– 𝑜𝑏𝑠(𝑃1||𝑃2) = 𝑜𝑏𝑠(𝑃1) ∪ 𝑜𝑏𝑠(𝑃2)
オブザーバブル,すなわちインタフェース
プロセス
15
正当性方程式
• 正当性方程式<< A >> P << C >>におけるAとCは、次の変数による一階論理で表現される.
– x, y, …などのVAL上のローカルオブジェクトを表す名前
– プログラムの実行に影響されない論理変数:
• VAL上の論理値変数 v, v0, v1, …
• TIME∪{∞}上の論理時間変数 t, t0, t1, …
– TIME∪{∞}上の特別な変数 now は、グローバル時間を参照する.
• 言明Aでの now の出現は、ステートメントPの開始時刻
• コミットメントCでは、終了時刻(非終了計算にnow = ∞を使用)
– 観測可能なアクション O および TIME 値を生成する式 exp の場合、論理変数 O@exp は、Oが時間
expで発生することを示す.
ρ(6.3) = {write(x,7),send(c,2),send(d,3)} write(x,7)@6.3
send(c,0)@3.14 これらは真になる.
ρ(3.14) = {send(c,0), read(x,5)}
16
プロセスとローカルオブジェクト
• プロセスPにローカルオブジェクトloc(P)がある.
– loc(P) = (Pのローカル変数など)
• loc(P)は、他の並列プロセスから監視できない.
• P1||P2の場合、 loc(P1)∩ loc(P2)=Φとする.
17
時間動作記述
• プログラムのタイミング動作は、時刻付きの外部観測で記述される.
• システムの観察可能な動作は、グローバルクロックで説明される.
– コンポーネントはローカルクロックを持っている場合がある.
• プログラムのリアルタイムセマンティクスは、各時点で発生している観察可能なイベントを
表す一連のレコードを,その時点に割り当てる関数を使用して定義する.
– 時間付き発生関数(timed occurrence function) ρによってモデル化される.この関数は、各時点
に、その時点で発生する観測可能なイベントを表す一連のレコードを割り当てる.
• 稠密時間 TIME を使用する.
– TIME = {τ ϵ R | τ ≥ 0}
• プロセス P のリアルタイムの動作記述
– 初期状態(実行開始時のローカルオブジェクトの値)とPの開始時刻
– P の観察可能なアクションの発生時刻
• 観測されたリアルタイムの動作は、時間付き発生関数(timed occurrence function) ρによっ
てモデル化される.
– Pが終了する場合、最終状態(つまり、終了時のローカルオブジェクトの値)とPの終了時間(ま
たは、Pが終了しない場合は∞)
18
時間付き発生関数(timed occurrence function) ρ
• プログラムの開始時間と終了時間は、特別な変数「now」を使用して定義される.
• 各状態 σ で TIME∪{∞} の値を変数 ‘now’に割り当て、その値を各ローカルオブジェクトに
割り当てる.
• a timed occurrence function, ρ
• ρ(3.14) = {send(c,0), read(x,5)}
• ρ(5.1) = {rec(c,0)}
• ρ(6) = φ
• ρ(6.3) = {write(x,7), send(c,2), send(d,3)}
ρ(時刻) = {イベント1, イベント2,,,}
a set of records
point of time
その時刻に起きたイベント
19
• 状態σ0で始まるプログラムPのセマンティクスは、 M(P)(σ0)で表される.
– これは、(σ, ρ) の形式のペアの集合
• σは状態であり、ρは時限発生関数です。
– σ0(x)は実行開始時のローカルオブジェクトxの値を示し、
– σ0(now)は開始時刻を表す.
• 集合 M(P)(σ0) 内のペア (σ, ρ) を考える.
– Pが終了する場合、σは終了時のローカルオブジェクトの値を表す.
– σ(now)は終了時間を示す.
• Pが終了しない場合、 σ(now) = ∞を定義し、 σ(x)は任意のx ≢ nowの値です。
• 関数ρは、実行中のPの観察可能な動作を表す・
– したがって、 σ0(now) ≤ τ ≤ σ(now)の場合、 ρ(τ)はτでのPの観測可能なイベントを表す.
– この間隔の外では、アクションの発生はPのセマンティクスによって制限されないため、任意のイ
ベントが発生する可能性がある.
20
• アサーションp
• loc(p)をpに現れるローカルオブジェクトの名前の集合
• obs(p)をpで発生するオブザーバブルの集合
• 時間間隔
– [t0, t1) = {t∈TIME | t0≤t<t1}
– (t0, t1) = {t∈TIME | t0<t<t1}
• P@tと集合(通常は区間)I⊆TIMEが与えられた場合、
• P during I ≡∀t∈I: P@t
• P in I ≡∃t∈I: P@t
• (¬P)@t ≡ ¬(P@t), または(¬P)@tの代わりに単に¬P@t
• 従って¬P during I は (¬P) during I と同じ(and also to ¬(P in I)).
≡は構文上の同等性を表す.
21
Proof rules
• 証明システムは、従来のトリプルと同じ
• Consequence
–
≪𝐴0≫𝑃≪𝐶0≫, 𝐴⇒𝐴0,𝐶⇒𝐶0
≪𝐴≫𝑃≪𝐶≫
• Parallel Composition
–
≪𝐴1≫𝑃≪𝐶1≫, ≪𝐴2≫𝑃2≪𝐶2≫, 𝐶𝑜𝑚𝑏(𝐶1, 𝐶2)⇒𝐶
≪𝐴1∧𝐴2≫ 𝑃1∥ 𝑃2≪𝐶≫
アサーションコンビネーター
プロセスのコミットメントは、もう一方のローカルオブジェクトを参照するべきでない.
– loc(C1)∩ loc(P2)=φ and loc(C2)∩ loc(P1)= φ
あるプロセスの仕様のアサーションが別のプロセスのインターフェースを参照している場合、これは共同インター
フェースの一部
– obs(A1,C1)∩ obs(P2)⊆ obs(P1) and obs(A2,C2)∩ obs(P1)⊆ obs(P2)
22
Comb
• nowを使っていない場合
– Comb(C1, C2)≡ C1 ∧ C2
• nowを使っている場合
– C1とC2の now をそれぞれ論理変数t1とt2に置き換えて, P1 || P2の終了時間コミットメントでt1とt2
の最大値を使う.
– Comb(C1, C2)≡ C1[t1 / now]∧ C2[t2 / now]∧ now =max(t1, t2)
23
4. サンプル Mine Pump
• 鉱山に浸透した水はサンプに集められ、鉱山から汲み出
される.
• 水位センサーDとEは、水がそれぞれ高レベルと低レベ
ルを超えたことを検出する.ポンプコントローラーは、
水が高水位に達するとポンプをオンにし、低水位を下回
るとポンプをオフにする.ポンプの故障により水を汲み
出すことができない場合は、1時間以内に鉱山から避難
させる必要がある.
• 鉱山ポンプには、一酸化炭素、メタン、および気流レベ
ルを監視するためのセンサー(A、B、C)がある.こ
れらのレベルのいずれかが危険な状態になると,1時間
以内に避難できるように、警報を発し、1秒以内にオペ
レーターに通知する.
• 爆発のリスクを回避するために、ポンプはメタンレベル
が臨界レベルを下回っている場合にのみ操作する.
(鉱山の坑底の)水だめ
Overview (状況,背景説明)
24
システム要求
Overview (状況,背景説明)
Safety Req.
Operational Req.
Problem (Subject)(目標,ゴール)
システム要求(自然言語記述要求)
• メタンレベルが臨界値の場合は、ポンプを操作しない.
• ポンプが故障してから1時間以内に鉱山から避難させる.
• メタンレベル、一酸化炭素レベル、または気流レベル
が重要な場合は、アラームを発生させる.
鉱山は通常1日3シフトで操業
されている.水位が高いため
に失われるのは1000回に1シ
フトを超えない.
安全要件に違反することなく、可能な限り鉱山が稼働していることを示
すことができる鉱山ポンプコントローラーの仕様を作成して検証する.
25
形式化システム仕様
• 変数の定義
– タイプ T の変数 V
– V : T
• 関数の定義
– タイプ T1 (関数の定義域)からタイプ T2 (関数の範囲)ま
での関数 F の場合、
– F : T1 → T2
• プロパティの定義
– 論理演算子∧(and), ∨(or), ⇒(implies) , ⇔(iff), ∀(for all) を使用し
た単純な述語計算式
Safety Req.
Operational Req.
システム要求(自然言語記述要求)
S1 : Water level
S3 : Assumptions
S4 : Pump controller
S2 : Methane level
S5 : Sensor
システム仕様(形式記述要求)
S6 : Actuator
26
S1: Water level
• 水溜めの水位は、水が出入りする速度に依存し、これは時間とともに変化する.
• 水位 Water を Time から Depth への関数として定義する.
– Water : Time → Depth
• 水が出入りする速度をメートル/秒で測定された水深の変化率とし、実数で表す.
– WaterIn と WaterOut は、水が水溜めに出入りする速度
– これらの速度は変化する可能性があるため、時間の関数
– WaterIn, WaterOut : Time → Flow
• WaterとWaterIn, WaterOut の関係
– 𝑊𝑎𝑡𝑒𝑟 𝑡2 = 𝑊𝑎𝑡𝑒𝑟 𝑡1 + ‫׬‬𝑡1
𝑡2
𝑊𝑎𝑡𝑒𝑟𝐼𝑛 𝑡 − 𝑊𝑎𝑡𝑒𝑟𝑂𝑢𝑡 𝑡 𝑑𝑡
関数1
関数2,3
関数1の実装と関数2,3との関係
型1(Time,時間) 型2(Depth, 長さ)
型3(Flow, 長さ/時間)
ここのWaterは先のwlのこと
27
S2: Methane level
• メタンの存在はパスカルの単位で測定され、圧力タイプPressure の値として記録される.
• 危険なレベルであるDangerMethaneがあり、それを超えると危険になる.
• メタンレベルの関数Methaneを定義し、鉱山に出入りするメタンの流れの関数MethaneInと
MethaneOutを定義する.
– Methane : Time → Pressure
– MethaneIn, MethaneOut : Time → Pressure/Time
• MethaneとMethaneIn, MethaneOut の関係
– 𝑀𝑒𝑡ℎ𝑎𝑛 𝑡2 = 𝑀𝑒𝑡ℎ𝑎𝑛𝑒 𝑡1 + ‫׬‬𝑡1
𝑡2
𝑀𝑒𝑡ℎ𝑎𝑛𝑒𝐼𝑛 𝑡 − 𝑀𝑒𝑡ℎ𝑎𝑛𝑒𝑂𝑢𝑡 𝑡 𝑑𝑡 関数4の実装と関数5,6との関係
型4(Pressure)
関数4,5,6
型4 (Pressure)の定数
28
S3: Assumptions
• 最大速度MaxWaterInがあり、任意の時間tで WaterIn(t) ≤ MaxWaterIn
• ポンプは、少なくともPumpRating:Flowの速度で水を除去できる.
– MaxWaterIn < PumpRating
• ポンプの動作は、ポンプがいつ動作しているかを示すTime上の述語で表される.
– Pumping:Time → Bool
• ポンプが作動している場合はいつでも、少なくともPumpRatingの水が排出される.
– (Pumping(t)∧Water(t) > 0) ⇒WaterOut(t) ≥ PumpRating
• メタン発生の最大速度はMaxMethaneRate
• メタンセンサーがtM単位時間ごとに定期的にメタンレベルを測定し、ポンプがオンまたはオ
フに切り替わる時間がtPである場合、反応時間 tM + tP は、
– (Metahne(t)+MaxMethaneRate× (tM + tP)+MethaneMargin) ≤ DangerMethane
– MethaneMarginは安全限界
• メタンレベルは、1000シフトで2回以上DangerMethaneに到達しない.
– この制限がないと、運用要件を満たすことができない.
関数7:ポンプ作動中の述語
型3(Flow, 長さ/時間)
型5(MethaneFlow)の定数(最大値)
型3(Flow, 長さ/時間)の定数(最小値)
型4(Pressure)の定数
29
S4: Pump controller
• 水位を制限内に保つことを保証する必要がある.
• 水位が高く、メタンレベルが重要でない場合は常にポンプがオンになり
• メタンレベルが重要な場合はポンプがオフになる.
• 反応時間を無視すると、これは次のように指定できる.
– ∀t : Time
– (water(t) > HighWater ∧ Methane(t) < DangerMethane) ⇒ Pumping(t)
– (Methane(t) ≥ DangerMathane)⇒ ¬Pumping(t)
• 反応時間を考慮した場合
– tPはポンプをオンにするのにかかる時間として
– Methane(t) < DangerMethone ∧¬Pumping(t) ∧Water(t) ≥ HighWater ⇒ Pumping(t+tP)
• 同様に、メタンレベルを検出するのにtM単位の時間がかかる場合
– Pumping(t)∧(Methane(t)+MethaneMargin) = DangerMethane ⇒ ¬Pumping(t+tM+tP)
30
S5: Sensors
• 高水位センサーは、時刻tでの水の高さに関する情報を述語HW(t)およびLW(t)の形式で提供
する.
– 水位がそれぞれHighWaterおよびLowWaterを超えている場合に対応する.
– センサー値について
• HW(t)∨¬HW(t)
• HW(t) ⇒ LW(t)
• ∀t∈Time・(Water(t) ≥ HighWater ⇔ HW(t)) ∧ (Water(t) ≥ LowWater ⇔ LW(t))
• メタンレベルセンサー
– DML(t)または¬DML(t)
– ∀t∈Time・((Methane(t) ≥ DangerMethane) ⇔ DML(t)) ∧ ((Methane(t) < DangerMethane) ⇔ ¬DML(t))
31
S6: Actuators
• ポンプは、ポンプコントローラーから信号を受信するアクチュエーターによってオンとオフ
が切り替えられる.
• これらの信号が送信されると、ポンプコントローラーはポンプがそれに応じて動作すると想
定する. この仮定を検証するために、ポンプの動作によって別の条件が設定される.
• ポンプからの水の流出により、PumpOnの状態が設定する. 同様に、流出がない場合、条
件はPumpOff
• ポンプがオンのときに実際にポンピングしていて、オフのときにポンピングしていないとい
う仮定を以下に指定する.
– ∀t ∈Time
– ( PumpOn(t) ⇒ Pumping(t) )∧ ( PumpOff(t) ⇒ ¬Pumping(t) )
– 遅延がなかった場合、実装⇒は、⇔で置き換えることができ、PumpOnとPumpOffの2つの条件
を1つの条件に置き換えることができる.
32
Jozef Hoomanのアプローチ
システム全体の最上位の要件仕様策定
• システムMineの目的は,水だめの水位を一定に保つこと
– 水位 wl を Time (時刻) から Depth(水位) への関数として定義する.
• wl : Time → Depth
• wl(t)で表す.
– これを形式化すると
• << now=0 >> Mine << ∀t < ∞: LWL < wl(t) < HWL >>
• CTL≡∀t < ∞: LWL < wl(t) < HWL
仮定 コミットメント
次に
2. システム内の物理プロセスに関する仮定を形式化する.
3. 連続量に関する制御要求を仕様化する.
をおこなう.
33
システム分割と仕様の詳細化
• システムはSumpとSumpContrで構成される.
• inflowはSumpに流れ込む水
• Sumpはオブザーバブルのwlを与える.
• SumpContrは流出outflowを制御してCTLを満たす必要がある.
• wlは以下の様になる.
– 𝐶𝑆𝑢𝑚𝑝1 ≡ ∀𝑡 < ∞: 𝑤𝑙 𝑡 = 𝑤𝑙 0 + ‫׬‬0
𝑡
𝑖𝑛𝑓𝑙𝑜𝑤 𝑥 − 𝑜𝑢𝑡𝑓𝑙𝑜𝑤 𝑥 𝑑𝑥
• 𝐶𝑆𝑢𝑚𝑝1がCTLを満たすためには
– inflowの上限が必要になる.
– 初期水位の制限が必要になる.
• Sumpに対する仕様は
– <<now=0>>Sump<<Csump>>
– Csump≡Csump1∧CSump2∧CSump3
CTL≡∀t < ∞: LWL < wl(t) < HWL
CSump3≡LSWL<wl(0)<HSWL
CSump2≡∀t<∞: 0≤inflow(t)≤ 𝜆𝑖𝑛
𝑚𝑎𝑥
34
SumpContrの仕様
• SumpContrは水位が高くなるとすぐに排水し始める必要がある.
– 水位がHSWLを上回っている限り、少なくとも𝜆𝑜𝑢𝑡
𝑚𝑖𝑛
の流出がある.
– δsc時間単位の反応遅延を考慮する.
– CSC1≡∀t0,t1<∞: (wl≥HSWL) during [t0,t1]⇒(outflow≥ 𝜆𝑜𝑢𝑡
𝑚𝑖𝑛
) during [t0+ δsc, t1]
– レベルが最小レベルLSWLに達するとすぐに、それ以上排水しない.
– CSC2≡∀ t0,t1<∞: (wl≤LSWL) during [t0,t1]⇒(outflow=0) during [t0+ δsc, t1]
– 排水量には上限がある.
– CSC3≡ ∀ t < ∞ : 0≤ outflow(t) < 𝜆𝑜𝑢𝑡
𝑚𝑎𝑥
• SumpContrの仕様は
– <<now=0>>SumpContr<<CSC>>
– CSC≡ CSC 1∧ CSC 2∧ CSC 3
• システム仕様は
– <<now=0>>Sump||SumpContr<<CSump∧CSC>>
35
詳細化の検証
• であれば,
– Csump∧CSC ⇒ CTL
• 従って Sump || SumpContr はMineの正しい実装になる.
– ただし,wl , outflow は連続関数
• 上記の証明で中間値の定理を使っているため.
(5.1) LSWL ≥ LWL+ δsc 𝜆𝑜𝑢𝑡
𝑚𝑎𝑥
(5.2) HSWL≤HWL – δsc 𝜆𝑖𝑛
𝑚𝑎𝑥
(5.3) 𝜆𝑖𝑛
𝑚𝑎𝑥
< 𝜆𝑜𝑢𝑡
𝑚𝑎𝑥
36
メタンガス濃度の件
• トップレベルの仕様は、爆発が発生せず、メタンレベルが安全レベルSMLを下回っている場合、
水位が指定された境界内にとどまるという要件を表すように変更する必要がある.
– 関数 ml(t) で時刻tにおけるメタンレベルを表す.
– 論理変数 expl@t で時刻tで爆発が起こることを表す.
– CMLではなくSMLを使用して、ポンプをオフにするために必要な反応時間を考慮する.
– CTL1≡∀t < ∞ : ¬expl@t
– CTL2≡∀t < ∞ : (ml < SML) during [0, t] ⇒ LWL < ml(t) < HWL
• CTL≡ CTL1 ∧ CTL2とする.システム仕様Mineは,
– << now = 0 >> Mine << CTL >>
• SumpContrの仕様も変更する.CSC1は以下の様になる.
– CSC1≡∀t0,t1<∞: (wl ≥ HSWL) during [t0,t1] ∧ (ml < SML) during [t0,t1] ⇒(outflow≥ 𝜆𝑜𝑢𝑡
𝑚𝑖𝑛
) during [t0+ δsc, t1]
ここが元のコミットメント
37
システムの詳細化2
• SumpContrをPumpとPumpContrに分割する.
• 並列コンポーネント間の通信のモデル化が必要に
なる.
– 共有変数
– チャンネル通信
• 非同期通信
• 同期通信
• 物理回線
制御対象
プラントモデル
コントローラ
38
Parallel decomposition of the sump control
• SumpCnontr = (PumpContr || Pump)
• PumpContr制御コンポーネントは、非同期チャネルpchでメッセージを送信することによって
Pumpと通信する.チャネルpchでは、値1と0のメッセージを使用して、それぞれポンプのオ
ンとオフを切り替える.
– ON(t1, t2) ≡ rec(pch, 1)@t1 ∧ ¬rec(pch, 0) during (t1, t2]
– OFF(t1, t2) ≡ rec(pch, 0)@t1 ∧ ¬rec(pch, 1) during (t1, t2]
– maximal outflow, let CPump1 ≡ CSC3.
• pchから値1を受け取った後、値0を受け取らない限り(δpとλ_𝑜𝑢𝑡^𝑚𝑖𝑖)、最大でδpの遅延
後に少なくとも λ_𝑜𝑢𝑡^𝑚𝑖𝑛の流出が発生すると仮定する.
39
<<now=0>>Mine <<CTL>>
<<now=0>>Sump<<Csump>>
<<now=0>>SumpContr<<CSC>>
<<now=0>>Sump||SumpContr<<CSump∧CSC>>
<<now = 0>> Pump << CPump>>
<< now = 0 >> PumpContr <<CPC>>
<<now=0>>Sump||Pump||SumpContr<<CSump∧CPC ∧CPump >>
システム要求(自然言語記述要求)
全体の流れ
40
<<now = 0>> WSens << CWSens>>
<<now = 0>> WContr << CWC>>
<<now = 0>> Wsens||WContr << CWSens∧CWC>>
<<now = 0>> Air << CAir>>
<<now = 0>> MSens << CMSens>>
<<now = 0>> Sump||Pump||MSens||Air|| Wsens||WContr << CTL>>
41
Jozef Hoomanのアプローチのまとめ
• 多数の制約条件が導出された.
– Operational requirement (運用要求)を満たす条件を記述できるレベル
• コンポーネントとインタフェースが定義された.
• コンポーネント仕様も得られた.
• ただし,実装レベルに落とせる振る舞いについては不十分
– 状態図で記述するようなものがない.
– また,それに基づいたコンポーネント分割の妥当性も検証されてない.
• この部分も,段階的詳細化の中に組み込んで検証しながら進める様にする必要がある.
手順6の「プログラミング言語で、手順5の離散的仕様を実装する」の中身がない.
42
4. 振る舞いモデル利用の提案
• プロパティ定義に時相論理式を利用し,時相論理式から動作モデルを生成する.
– 生成方法については前回報告(第26回CSP研究会: リアルタイム性検証手法)した.
– 「ディペンダブルシステム―高信頼システム実現のための耐故障・検証・テスト技術」
にも書いてある.
– LTSA, nuXmvに実装されている.
• メリット
– システム仕様から動作仕様を作りコンポーネント分割に対応させて,モデル分割すること
でモデル分割の妥当性を検証出来る.
• コンポーネント分割の最適化
• コンポーネント間の状態不整合の検証
– 実装に落とせる状態マシンを生成出来る.
– テストシナリオを生成出来る.
米田 友洋,土屋 達弘, 梶原 誠司
2005/11/1
43
改良版 仕様の形式化
• 変数の定義
– タイプ T の変数 V
– V : T
• 関数の定義
– タイプ T1 (関数の定義域)からタイプ T2 (関数の範囲)ま
での関数 F の場合、
– F : T1 → T2
• プロパティの定義
– 論理演算子∧(and), ∨(or), ⇒(implies) , ⇔(iff), ∀(for all) を使用し
た単純な述語計算式
Safety Req.
Operational Req.
システム要求(自然言語記述要求)
S1 : Water level
S3 : Assumptions
S4 : Pump controller
S2 : Methane level
S5 : Sensor
システム仕様(形式記述要求)
S6 : Actuator
• 論理変数の抽出
• 述語計算式の時相論理式化
この手順を追加
44
例えば
• S4: 反応時間を無視した場合
– ∀t : Time
– S4a: (water(t) > HighWater ∧ Methane(t) < DangerMethane) ⇒ Pumping(t)
– S4b: (Methane(t) ≥ DangerMathane)⇒ ¬Pumping(t)
• LTL版
– S4a: □ ((water(t) > HighWater ∧ Methane(t) < DangerMethane) ⇒ ◇Pumping(t)
– S4b: □ ((Methane(t) ≥ DangerMathane)⇒ ◇¬Pumping(t))
fluent Pumping = <on, off> initially 0
fluent HighWater = <whigh, wlow> initially 0
fluent HighMethane = <mhigh, mlow> initially 0
assert S4a = [](HighWater && ! HighMethane -> X Pumping)
assert S4b = [](HighMethane -> X ! Pumping)
constraint S4a = S4a
constraint S4b = S4b
45
環境側
• 環境側にも振る舞いがある.
// Water
WaterLevel = Low,
Low = (tohigh -> High | wlow -> Low),
High = (tolow -> Low | whigh -> High).
WaterEvent = Low,
Low = (whigh -> High | wlow -> Low),
High = (wlow -> Low | whigh -> High).
||Water = (WaterLevel||WaterEvent).
46
振る舞いの合成と分解
• 動作モデルの変換
– アクションと状態の割り当てでコンポーネントを切り出す.
– 必要なインタフェースを導出できる.
<<now=0>> Sump||SumpContr <<CSump∧CSC>>
<<now=0>> Mine <<CTL>>
||SumpControl = (S4a||S4b).
||Sump = (Water).
||Mine = (Sump||SumpControl).
||Pump = Mine @{on, off}.
47
まとめ
• 目的
– ダイクストラは,プログラムが与えられてその正しさを検証するスタイルから,仕様が与えられ
てそれを満たすプログラムを導出するスタイルを提案した.そのダイクストラのスタイルをリア
ルタイム分散システムに適用したい.
• ヨゼフ・フーマンは,時間変数とコンビネーション関数を使って形式仕様化をおこない仕様
検証可能にした.
• しかし,振る舞いを導出するには至っていない.
• 振る舞いを導出するためには,プロパティ記述に時相論理式を利用して状態マシンを生成す
れば良い.
48
Thank you for listening!
49
© 2021, Laboratory Design
すべての権利は留保されています。書面による許可なしに、本出版物の全部または一部を複製することを禁じます。
All rights reserved. Written permission is required for reproduction of all or parts of this publication.
The source must be stated in any such reproduction.
This publication and the contents hereof are subject to change without notice.
Brand names or product names are trademarks or registered trademarks of their respective companies
or organizations.
https://embresearch.com/

More Related Content

Similar to ホーア論理のリアルタイム分散システムへの拡張

WHAT IS COMPUTATIONAL FLUID DYNAMICS (CFD)
WHAT IS COMPUTATIONAL FLUID DYNAMICS (CFD)WHAT IS COMPUTATIONAL FLUID DYNAMICS (CFD)
WHAT IS COMPUTATIONAL FLUID DYNAMICS (CFD)Malik Abdul Wahab
 
Application-Of-Laplace-Transform-To-Pressure-Transient-Analysis-In-A-Reservoi...
Application-Of-Laplace-Transform-To-Pressure-Transient-Analysis-In-A-Reservoi...Application-Of-Laplace-Transform-To-Pressure-Transient-Analysis-In-A-Reservoi...
Application-Of-Laplace-Transform-To-Pressure-Transient-Analysis-In-A-Reservoi...Oluwaseun Olaleye
 
Change Point Analysis
Change Point AnalysisChange Point Analysis
Change Point AnalysisMark Conway
 
Master’s theorem Derivative Analysis
Master’s theorem Derivative AnalysisMaster’s theorem Derivative Analysis
Master’s theorem Derivative AnalysisIRJET Journal
 
Lab 2 Fluid Flow Rate.pdfMEE 491 Lab #2 Fluid Flow Rate .docx
Lab 2 Fluid Flow Rate.pdfMEE 491 Lab #2  Fluid Flow Rate .docxLab 2 Fluid Flow Rate.pdfMEE 491 Lab #2  Fluid Flow Rate .docx
Lab 2 Fluid Flow Rate.pdfMEE 491 Lab #2 Fluid Flow Rate .docxDIPESH30
 
008. PROGRAM EFFICIENCY computer science.pdf
008. PROGRAM EFFICIENCY computer science.pdf008. PROGRAM EFFICIENCY computer science.pdf
008. PROGRAM EFFICIENCY computer science.pdfomchoubey297
 
Grasp approach to rcpsp with min max robustness objective
Grasp approach to rcpsp with min max robustness objectiveGrasp approach to rcpsp with min max robustness objective
Grasp approach to rcpsp with min max robustness objectivecsandit
 
Applied Process Mining in a Blood Bank and correlation with the Systemic Appr...
Applied Process Mining in a Blood Bank and correlation with the Systemic Appr...Applied Process Mining in a Blood Bank and correlation with the Systemic Appr...
Applied Process Mining in a Blood Bank and correlation with the Systemic Appr...Panagiotis Papaioannou
 
OpenModelica tutorials_7-5 Stream variable(超初級チュートリアル7-5.番外編 Stream変数)
OpenModelica tutorials_7-5 Stream variable(超初級チュートリアル7-5.番外編 Stream変数)OpenModelica tutorials_7-5 Stream variable(超初級チュートリアル7-5.番外編 Stream変数)
OpenModelica tutorials_7-5 Stream variable(超初級チュートリアル7-5.番外編 Stream変数)Shigenori Ueda
 
lab-8 (1).pptx
lab-8 (1).pptxlab-8 (1).pptx
lab-8 (1).pptxShimoFcis
 
Ch-2 final exam documet compler design elements
Ch-2 final exam documet compler design elementsCh-2 final exam documet compler design elements
Ch-2 final exam documet compler design elementsMAHERMOHAMED27
 
OCLR: A More Expressive, Pattern-Based Temporal Extension of OCL
OCLR: A More Expressive, Pattern-Based Temporal Extension of OCLOCLR: A More Expressive, Pattern-Based Temporal Extension of OCL
OCLR: A More Expressive, Pattern-Based Temporal Extension of OCLLionel Briand
 
Using AI Planning to Automate the Performance Analysis of Simulators
Using AI Planning to Automate the Performance Analysis of SimulatorsUsing AI Planning to Automate the Performance Analysis of Simulators
Using AI Planning to Automate the Performance Analysis of SimulatorsRoland Ewald
 

Similar to ホーア論理のリアルタイム分散システムへの拡張 (20)

WHAT IS COMPUTATIONAL FLUID DYNAMICS (CFD)
WHAT IS COMPUTATIONAL FLUID DYNAMICS (CFD)WHAT IS COMPUTATIONAL FLUID DYNAMICS (CFD)
WHAT IS COMPUTATIONAL FLUID DYNAMICS (CFD)
 
Application-Of-Laplace-Transform-To-Pressure-Transient-Analysis-In-A-Reservoi...
Application-Of-Laplace-Transform-To-Pressure-Transient-Analysis-In-A-Reservoi...Application-Of-Laplace-Transform-To-Pressure-Transient-Analysis-In-A-Reservoi...
Application-Of-Laplace-Transform-To-Pressure-Transient-Analysis-In-A-Reservoi...
 
Mine Risk Control
Mine Risk ControlMine Risk Control
Mine Risk Control
 
Change Point Analysis
Change Point AnalysisChange Point Analysis
Change Point Analysis
 
Master’s theorem Derivative Analysis
Master’s theorem Derivative AnalysisMaster’s theorem Derivative Analysis
Master’s theorem Derivative Analysis
 
Lab 2 Fluid Flow Rate.pdfMEE 491 Lab #2 Fluid Flow Rate .docx
Lab 2 Fluid Flow Rate.pdfMEE 491 Lab #2  Fluid Flow Rate .docxLab 2 Fluid Flow Rate.pdfMEE 491 Lab #2  Fluid Flow Rate .docx
Lab 2 Fluid Flow Rate.pdfMEE 491 Lab #2 Fluid Flow Rate .docx
 
008. PROGRAM EFFICIENCY computer science.pdf
008. PROGRAM EFFICIENCY computer science.pdf008. PROGRAM EFFICIENCY computer science.pdf
008. PROGRAM EFFICIENCY computer science.pdf
 
Grasp approach to rcpsp with min max robustness objective
Grasp approach to rcpsp with min max robustness objectiveGrasp approach to rcpsp with min max robustness objective
Grasp approach to rcpsp with min max robustness objective
 
Applied Process Mining in a Blood Bank and correlation with the Systemic Appr...
Applied Process Mining in a Blood Bank and correlation with the Systemic Appr...Applied Process Mining in a Blood Bank and correlation with the Systemic Appr...
Applied Process Mining in a Blood Bank and correlation with the Systemic Appr...
 
Reservoir Simulation
Reservoir SimulationReservoir Simulation
Reservoir Simulation
 
OpenModelica tutorials_7-5 Stream variable(超初級チュートリアル7-5.番外編 Stream変数)
OpenModelica tutorials_7-5 Stream variable(超初級チュートリアル7-5.番外編 Stream変数)OpenModelica tutorials_7-5 Stream variable(超初級チュートリアル7-5.番外編 Stream変数)
OpenModelica tutorials_7-5 Stream variable(超初級チュートリアル7-5.番外編 Stream変数)
 
lab-8 (1).pptx
lab-8 (1).pptxlab-8 (1).pptx
lab-8 (1).pptx
 
Sucet os module_3_notes
Sucet os module_3_notesSucet os module_3_notes
Sucet os module_3_notes
 
TOCbw I&ECPDD Oct67
TOCbw I&ECPDD Oct67TOCbw I&ECPDD Oct67
TOCbw I&ECPDD Oct67
 
Alfonso Senatore
Alfonso SenatoreAlfonso Senatore
Alfonso Senatore
 
Week08.pdf
Week08.pdfWeek08.pdf
Week08.pdf
 
Ch-2 final exam documet compler design elements
Ch-2 final exam documet compler design elementsCh-2 final exam documet compler design elements
Ch-2 final exam documet compler design elements
 
Deadlocks Part- III.pdf
Deadlocks Part- III.pdfDeadlocks Part- III.pdf
Deadlocks Part- III.pdf
 
OCLR: A More Expressive, Pattern-Based Temporal Extension of OCL
OCLR: A More Expressive, Pattern-Based Temporal Extension of OCLOCLR: A More Expressive, Pattern-Based Temporal Extension of OCL
OCLR: A More Expressive, Pattern-Based Temporal Extension of OCL
 
Using AI Planning to Automate the Performance Analysis of Simulators
Using AI Planning to Automate the Performance Analysis of SimulatorsUsing AI Planning to Automate the Performance Analysis of Simulators
Using AI Planning to Automate the Performance Analysis of Simulators
 

Recently uploaded

Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 

Recently uploaded (20)

Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 

ホーア論理のリアルタイム分散システムへの拡張

  • 2. 2 Agenda 1. はじめに 2. ホーア論理について 3. Jozef Hoomanのアプローチ 4. サンプル 5. 振る舞いモデル利用の提案 6. まとめ
  • 3. 3 1. はじめに • ホーア論理は、シーケンシャルプログラム(S)の正しさを証明する手法 – {p} S {q}の形式を利用する. • pは前提条件、Sはシーケンシャルプログラム、qは事後条件 – シーケンシャルプログラムの合成と反復に対する合成ルールを構成できる. • ここでは,分散リアルタイムプログラムへの拡張を考える. プログラム シーケンシャルプログラム リアクティブプログラム リアルタイムプログラム 並列プログラム 従来のホーア論理 終了しないプログラムの正しさの証明 複数の分散したプログラムの正しさの証明 時間制約を持つプログラムの正しさの証明 部分正当性とか気にしない Timed CSP, DC CSP,CCS
  • 4. 4 2. ホーア論理について • 歴史 1967 フロイド 論証によってプログラムの正しさを示す. 1970 ホーア ソースコード(Pascal)についての公理系 まずプログラムあり, その正しさを示す. {Q}S{R} 1976 ダイクストラ 仕様からプログラムを導出する. Q ⇒wp(S,R) Sの実行が、Rを満たす状態で有限 時間内に終了することが保証され るようなすべての状態のセット 最弱事前条件 Qを満たす状態でSの実行を始 めると,もし実行が終われば, 結果はRを満たす. Sの実行を、wp(S,R)から開始 すればRを満たして終了する.
  • 5. 5 簡単な仕様からプログラムを導出する例 • {Q} S {R} • {T} S {R: z ≡ max(x, y)} • R: z ≥ x ∧ z ≥ y ∧ ((z = x) ∨ (z = y)) z := x がSの候補になる. wp(“z := x”, R) を計算する. = x ≥ x ∧ x ≥ y ∧ ((x = x) ∨ (x = y)) = T ∧ (x ≥ y) ∧ ( T ∨ (x = y)) = x ≥ y ∧ x = y = x ≥ y x ≥ y の時にz := xとすれば良い. だから if(x>=y){z=x} 2つの値から大きい値を返す. 形式化した事後条件. 事前条件はTrue T ⇒wp(S, R) ダイクストラの最弱事前条件 プログラムコード
  • 6. 6 つづき • {Q} S {R} • {T} S {R: z ≡ max(x, y)} • R: z ≥ x ∧ z ≥ y ∧ ((z = x) ∨ (z = y)) z := y もSの候補になる. wp(“z := y”, R) を計算する. =y ≥ x ∧ y ≥ y ∧ ((y = x) ∨ (y = y)) = y ≥ x ∧ T ∧ ((y = x) ∨ T) = y ≥ x ∧ x = y = y ≥ x y ≥ xの時にz := yとすれば良い. だから if (y >= x) { z = y } if (x >= y) { z = x } (x >= y)∨(y >= x) = T 事前条件も満たしている. if (x >= y) { z = x } else if (y >= x) { z = y } S = となる.
  • 7. 7 詳しくは http://www.cs.cornell.edu/gries/July2016/The-Science-Of-Programming-Gries-038790641X.pdf プログラミングの科学 (情報処理シリーズ) 単行本 培風館 (1991/1/1) D. グリース (著), 筧 捷彦 (かけひ かつひこ翻訳) https://amzn.to/3jFKgSw https://amzn.to/2ZCl1JQ
  • 8. 8 並行プログラムへの拡張 Richard J. Lipton. 1975. Reduction: a method of proving properties of parallel programs. Commun. ACM 18, 12 (Dec. 1975), 717 721. DOI:https://doi.org/10.1145/361227.361234 並列性に制限を加える. David Gries. 1977. An exercise in proving parallel programs correct. Commun. ACM 20, 12 (Dec. 1977), 921 930. DOI:https://doi.org/10.1145/359897.359903 Owicki, Susan S. Axiomatic Proof Techniques for Parallel Programs, Cornell University thesis, 1975-07 セマフォ、イベントなどを使った 並行プログラムプログラム
  • 9. 9 CSPを利用した拡張 @book{Noauthor2001, edition = {2}, editor = {Mathai Joseph}, isbn = {0-13-455297-0}, link = {https://www.cs.york.ac.uk/rts/books/RTS-SVABook.html}, publisher = {Prentice Hall International}, title = {Real-Time Systems: Specification, Verification and Analysis}, year = {2001} } 1996 Chapter 5 Assertional Specification and Verification http://www.cs.ru.nl/~hooman/ Jozef Hooman Chapter 6 Timed CSP Chapter 7 Duration calculus Chapter 8 Fault-tolerance Steve Schneider
  • 10. 10 ここでの目的 • ホーア理論は,連続量(物理量)を扱う.しかし,設計レベルでの振る舞いの検証はない. • Jozef Hoomanの拡張は,トップダウンの段階的詳細化になっているので使いやすい.制約 条件を導出できる.しかし,振る舞いを実装まで落としていない. • モデル検査は – 振る舞いを扱うことが出来る. – 離散量は扱えるが連続量については体系的なアプローチがない. • だから一緒に利用すれば良いだろう.
  • 11. 11 3. Jozef Hoomanのアプローチ • 方針 – 安全性(safety)と活性(liveness)で検証する. – プログラムの終了では無く,指定された時間後に事後条件を確定する. • 形式化の手順 1. システム全体の最上位の要件仕様を策定する. • 連続コンポーネントのプロパティも含む 2. システム内(環境側も含む)の物理プロセスに関する仮定を形式化する. 3. 連続量に関する制御要求を仕様化する. 4. 手順3を確認する.手順2と3の仕様が、手順1で指定したプロパティを満たすことを示す. 5. (手順3の)制御戦略を離散的インターフェースで表現して仕様に変換する. • センサーとアクチュエーターの形式仕様を使用する. 6. プログラミング言語で、手順5の離散的仕様を実装する. • ここでは,このアプローチを改善する.
  • 12. 12 Jozef Hoomanの仕様記述 • 状態の記述 – 観測可能な量(オブザーバブル)を定義して記述 – 時間変数を使用 • プロセスの記述 – CSPっぽい記述を利用 • 式の構造は<< A >> P << C >> – Pはプロセス – A 仮定(assumption) • Pの開始時のローカルオブジェクトの値 • Pの開始時刻 • 監視可能なイベントの発生時刻 – C コミットメント(commitment) • 終了時のローカルオブジェクトの値 • Pが終了した場合の終了時刻( Pが終了しない場合は∞とする) • 監視可能なイベントの発生時刻 条件の名前を変える. 「Q前提条件」→「A 仮定(assumption)」 「R事後条件」→「C コミットメント(commitment)」 << A >> P << C >> {Q} S {R}
  • 13. 13 • 例: << x = v ∧ now = t >> FUN << y = f (v) ∧ x = v ∧ t+5 < now < t+13 >> • v および t は論理変数 – 論理変数は暗黙的に全称記号付き xは変更しないと言う意味 実行には5~13時間単位かかると言う意味 プログラムの開始時刻と変数の初期値を指定 プログラムFUNがf (v) を計算しその値がy
  • 14. 14 プロセスとオブザーバブル • プロセス P の特定のオブジェクト(チャネル、変数、物理量など)は、その並列環境で監 視できそれを obs(P) で表す. – obs(P) を P のインターフェイスを表すプロセス P の監視可能なオブジェクト(の表現)のセットと する. – P がチャネルを介して通信する場合、 obs(P)にはこれらのチャネルの名前が含まれる. – P が共有変数を使用する場合,これらの変数の名前はobs(P)に含まれる. – obs(X) = {obs1, obs2, …} • 演算子||を使用して、プロセスが並列に構成されているとする. – 𝑜𝑏𝑠(𝑃1||𝑃2) = 𝑜𝑏𝑠(𝑃1) ∪ 𝑜𝑏𝑠(𝑃2) オブザーバブル,すなわちインタフェース プロセス
  • 15. 15 正当性方程式 • 正当性方程式<< A >> P << C >>におけるAとCは、次の変数による一階論理で表現される. – x, y, …などのVAL上のローカルオブジェクトを表す名前 – プログラムの実行に影響されない論理変数: • VAL上の論理値変数 v, v0, v1, … • TIME∪{∞}上の論理時間変数 t, t0, t1, … – TIME∪{∞}上の特別な変数 now は、グローバル時間を参照する. • 言明Aでの now の出現は、ステートメントPの開始時刻 • コミットメントCでは、終了時刻(非終了計算にnow = ∞を使用) – 観測可能なアクション O および TIME 値を生成する式 exp の場合、論理変数 O@exp は、Oが時間 expで発生することを示す. ρ(6.3) = {write(x,7),send(c,2),send(d,3)} write(x,7)@6.3 send(c,0)@3.14 これらは真になる. ρ(3.14) = {send(c,0), read(x,5)}
  • 16. 16 プロセスとローカルオブジェクト • プロセスPにローカルオブジェクトloc(P)がある. – loc(P) = (Pのローカル変数など) • loc(P)は、他の並列プロセスから監視できない. • P1||P2の場合、 loc(P1)∩ loc(P2)=Φとする.
  • 17. 17 時間動作記述 • プログラムのタイミング動作は、時刻付きの外部観測で記述される. • システムの観察可能な動作は、グローバルクロックで説明される. – コンポーネントはローカルクロックを持っている場合がある. • プログラムのリアルタイムセマンティクスは、各時点で発生している観察可能なイベントを 表す一連のレコードを,その時点に割り当てる関数を使用して定義する. – 時間付き発生関数(timed occurrence function) ρによってモデル化される.この関数は、各時点 に、その時点で発生する観測可能なイベントを表す一連のレコードを割り当てる. • 稠密時間 TIME を使用する. – TIME = {τ ϵ R | τ ≥ 0} • プロセス P のリアルタイムの動作記述 – 初期状態(実行開始時のローカルオブジェクトの値)とPの開始時刻 – P の観察可能なアクションの発生時刻 • 観測されたリアルタイムの動作は、時間付き発生関数(timed occurrence function) ρによっ てモデル化される. – Pが終了する場合、最終状態(つまり、終了時のローカルオブジェクトの値)とPの終了時間(ま たは、Pが終了しない場合は∞)
  • 18. 18 時間付き発生関数(timed occurrence function) ρ • プログラムの開始時間と終了時間は、特別な変数「now」を使用して定義される. • 各状態 σ で TIME∪{∞} の値を変数 ‘now’に割り当て、その値を各ローカルオブジェクトに 割り当てる. • a timed occurrence function, ρ • ρ(3.14) = {send(c,0), read(x,5)} • ρ(5.1) = {rec(c,0)} • ρ(6) = φ • ρ(6.3) = {write(x,7), send(c,2), send(d,3)} ρ(時刻) = {イベント1, イベント2,,,} a set of records point of time その時刻に起きたイベント
  • 19. 19 • 状態σ0で始まるプログラムPのセマンティクスは、 M(P)(σ0)で表される. – これは、(σ, ρ) の形式のペアの集合 • σは状態であり、ρは時限発生関数です。 – σ0(x)は実行開始時のローカルオブジェクトxの値を示し、 – σ0(now)は開始時刻を表す. • 集合 M(P)(σ0) 内のペア (σ, ρ) を考える. – Pが終了する場合、σは終了時のローカルオブジェクトの値を表す. – σ(now)は終了時間を示す. • Pが終了しない場合、 σ(now) = ∞を定義し、 σ(x)は任意のx ≢ nowの値です。 • 関数ρは、実行中のPの観察可能な動作を表す・ – したがって、 σ0(now) ≤ τ ≤ σ(now)の場合、 ρ(τ)はτでのPの観測可能なイベントを表す. – この間隔の外では、アクションの発生はPのセマンティクスによって制限されないため、任意のイ ベントが発生する可能性がある.
  • 20. 20 • アサーションp • loc(p)をpに現れるローカルオブジェクトの名前の集合 • obs(p)をpで発生するオブザーバブルの集合 • 時間間隔 – [t0, t1) = {t∈TIME | t0≤t<t1} – (t0, t1) = {t∈TIME | t0<t<t1} • P@tと集合(通常は区間)I⊆TIMEが与えられた場合、 • P during I ≡∀t∈I: P@t • P in I ≡∃t∈I: P@t • (¬P)@t ≡ ¬(P@t), または(¬P)@tの代わりに単に¬P@t • 従って¬P during I は (¬P) during I と同じ(and also to ¬(P in I)). ≡は構文上の同等性を表す.
  • 21. 21 Proof rules • 証明システムは、従来のトリプルと同じ • Consequence – ≪𝐴0≫𝑃≪𝐶0≫, 𝐴⇒𝐴0,𝐶⇒𝐶0 ≪𝐴≫𝑃≪𝐶≫ • Parallel Composition – ≪𝐴1≫𝑃≪𝐶1≫, ≪𝐴2≫𝑃2≪𝐶2≫, 𝐶𝑜𝑚𝑏(𝐶1, 𝐶2)⇒𝐶 ≪𝐴1∧𝐴2≫ 𝑃1∥ 𝑃2≪𝐶≫ アサーションコンビネーター プロセスのコミットメントは、もう一方のローカルオブジェクトを参照するべきでない. – loc(C1)∩ loc(P2)=φ and loc(C2)∩ loc(P1)= φ あるプロセスの仕様のアサーションが別のプロセスのインターフェースを参照している場合、これは共同インター フェースの一部 – obs(A1,C1)∩ obs(P2)⊆ obs(P1) and obs(A2,C2)∩ obs(P1)⊆ obs(P2)
  • 22. 22 Comb • nowを使っていない場合 – Comb(C1, C2)≡ C1 ∧ C2 • nowを使っている場合 – C1とC2の now をそれぞれ論理変数t1とt2に置き換えて, P1 || P2の終了時間コミットメントでt1とt2 の最大値を使う. – Comb(C1, C2)≡ C1[t1 / now]∧ C2[t2 / now]∧ now =max(t1, t2)
  • 23. 23 4. サンプル Mine Pump • 鉱山に浸透した水はサンプに集められ、鉱山から汲み出 される. • 水位センサーDとEは、水がそれぞれ高レベルと低レベ ルを超えたことを検出する.ポンプコントローラーは、 水が高水位に達するとポンプをオンにし、低水位を下回 るとポンプをオフにする.ポンプの故障により水を汲み 出すことができない場合は、1時間以内に鉱山から避難 させる必要がある. • 鉱山ポンプには、一酸化炭素、メタン、および気流レベ ルを監視するためのセンサー(A、B、C)がある.こ れらのレベルのいずれかが危険な状態になると,1時間 以内に避難できるように、警報を発し、1秒以内にオペ レーターに通知する. • 爆発のリスクを回避するために、ポンプはメタンレベル が臨界レベルを下回っている場合にのみ操作する. (鉱山の坑底の)水だめ Overview (状況,背景説明)
  • 24. 24 システム要求 Overview (状況,背景説明) Safety Req. Operational Req. Problem (Subject)(目標,ゴール) システム要求(自然言語記述要求) • メタンレベルが臨界値の場合は、ポンプを操作しない. • ポンプが故障してから1時間以内に鉱山から避難させる. • メタンレベル、一酸化炭素レベル、または気流レベル が重要な場合は、アラームを発生させる. 鉱山は通常1日3シフトで操業 されている.水位が高いため に失われるのは1000回に1シ フトを超えない. 安全要件に違反することなく、可能な限り鉱山が稼働していることを示 すことができる鉱山ポンプコントローラーの仕様を作成して検証する.
  • 25. 25 形式化システム仕様 • 変数の定義 – タイプ T の変数 V – V : T • 関数の定義 – タイプ T1 (関数の定義域)からタイプ T2 (関数の範囲)ま での関数 F の場合、 – F : T1 → T2 • プロパティの定義 – 論理演算子∧(and), ∨(or), ⇒(implies) , ⇔(iff), ∀(for all) を使用し た単純な述語計算式 Safety Req. Operational Req. システム要求(自然言語記述要求) S1 : Water level S3 : Assumptions S4 : Pump controller S2 : Methane level S5 : Sensor システム仕様(形式記述要求) S6 : Actuator
  • 26. 26 S1: Water level • 水溜めの水位は、水が出入りする速度に依存し、これは時間とともに変化する. • 水位 Water を Time から Depth への関数として定義する. – Water : Time → Depth • 水が出入りする速度をメートル/秒で測定された水深の変化率とし、実数で表す. – WaterIn と WaterOut は、水が水溜めに出入りする速度 – これらの速度は変化する可能性があるため、時間の関数 – WaterIn, WaterOut : Time → Flow • WaterとWaterIn, WaterOut の関係 – 𝑊𝑎𝑡𝑒𝑟 𝑡2 = 𝑊𝑎𝑡𝑒𝑟 𝑡1 + ‫׬‬𝑡1 𝑡2 𝑊𝑎𝑡𝑒𝑟𝐼𝑛 𝑡 − 𝑊𝑎𝑡𝑒𝑟𝑂𝑢𝑡 𝑡 𝑑𝑡 関数1 関数2,3 関数1の実装と関数2,3との関係 型1(Time,時間) 型2(Depth, 長さ) 型3(Flow, 長さ/時間) ここのWaterは先のwlのこと
  • 27. 27 S2: Methane level • メタンの存在はパスカルの単位で測定され、圧力タイプPressure の値として記録される. • 危険なレベルであるDangerMethaneがあり、それを超えると危険になる. • メタンレベルの関数Methaneを定義し、鉱山に出入りするメタンの流れの関数MethaneInと MethaneOutを定義する. – Methane : Time → Pressure – MethaneIn, MethaneOut : Time → Pressure/Time • MethaneとMethaneIn, MethaneOut の関係 – 𝑀𝑒𝑡ℎ𝑎𝑛 𝑡2 = 𝑀𝑒𝑡ℎ𝑎𝑛𝑒 𝑡1 + ‫׬‬𝑡1 𝑡2 𝑀𝑒𝑡ℎ𝑎𝑛𝑒𝐼𝑛 𝑡 − 𝑀𝑒𝑡ℎ𝑎𝑛𝑒𝑂𝑢𝑡 𝑡 𝑑𝑡 関数4の実装と関数5,6との関係 型4(Pressure) 関数4,5,6 型4 (Pressure)の定数
  • 28. 28 S3: Assumptions • 最大速度MaxWaterInがあり、任意の時間tで WaterIn(t) ≤ MaxWaterIn • ポンプは、少なくともPumpRating:Flowの速度で水を除去できる. – MaxWaterIn < PumpRating • ポンプの動作は、ポンプがいつ動作しているかを示すTime上の述語で表される. – Pumping:Time → Bool • ポンプが作動している場合はいつでも、少なくともPumpRatingの水が排出される. – (Pumping(t)∧Water(t) > 0) ⇒WaterOut(t) ≥ PumpRating • メタン発生の最大速度はMaxMethaneRate • メタンセンサーがtM単位時間ごとに定期的にメタンレベルを測定し、ポンプがオンまたはオ フに切り替わる時間がtPである場合、反応時間 tM + tP は、 – (Metahne(t)+MaxMethaneRate× (tM + tP)+MethaneMargin) ≤ DangerMethane – MethaneMarginは安全限界 • メタンレベルは、1000シフトで2回以上DangerMethaneに到達しない. – この制限がないと、運用要件を満たすことができない. 関数7:ポンプ作動中の述語 型3(Flow, 長さ/時間) 型5(MethaneFlow)の定数(最大値) 型3(Flow, 長さ/時間)の定数(最小値) 型4(Pressure)の定数
  • 29. 29 S4: Pump controller • 水位を制限内に保つことを保証する必要がある. • 水位が高く、メタンレベルが重要でない場合は常にポンプがオンになり • メタンレベルが重要な場合はポンプがオフになる. • 反応時間を無視すると、これは次のように指定できる. – ∀t : Time – (water(t) > HighWater ∧ Methane(t) < DangerMethane) ⇒ Pumping(t) – (Methane(t) ≥ DangerMathane)⇒ ¬Pumping(t) • 反応時間を考慮した場合 – tPはポンプをオンにするのにかかる時間として – Methane(t) < DangerMethone ∧¬Pumping(t) ∧Water(t) ≥ HighWater ⇒ Pumping(t+tP) • 同様に、メタンレベルを検出するのにtM単位の時間がかかる場合 – Pumping(t)∧(Methane(t)+MethaneMargin) = DangerMethane ⇒ ¬Pumping(t+tM+tP)
  • 30. 30 S5: Sensors • 高水位センサーは、時刻tでの水の高さに関する情報を述語HW(t)およびLW(t)の形式で提供 する. – 水位がそれぞれHighWaterおよびLowWaterを超えている場合に対応する. – センサー値について • HW(t)∨¬HW(t) • HW(t) ⇒ LW(t) • ∀t∈Time・(Water(t) ≥ HighWater ⇔ HW(t)) ∧ (Water(t) ≥ LowWater ⇔ LW(t)) • メタンレベルセンサー – DML(t)または¬DML(t) – ∀t∈Time・((Methane(t) ≥ DangerMethane) ⇔ DML(t)) ∧ ((Methane(t) < DangerMethane) ⇔ ¬DML(t))
  • 31. 31 S6: Actuators • ポンプは、ポンプコントローラーから信号を受信するアクチュエーターによってオンとオフ が切り替えられる. • これらの信号が送信されると、ポンプコントローラーはポンプがそれに応じて動作すると想 定する. この仮定を検証するために、ポンプの動作によって別の条件が設定される. • ポンプからの水の流出により、PumpOnの状態が設定する. 同様に、流出がない場合、条 件はPumpOff • ポンプがオンのときに実際にポンピングしていて、オフのときにポンピングしていないとい う仮定を以下に指定する. – ∀t ∈Time – ( PumpOn(t) ⇒ Pumping(t) )∧ ( PumpOff(t) ⇒ ¬Pumping(t) ) – 遅延がなかった場合、実装⇒は、⇔で置き換えることができ、PumpOnとPumpOffの2つの条件 を1つの条件に置き換えることができる.
  • 32. 32 Jozef Hoomanのアプローチ システム全体の最上位の要件仕様策定 • システムMineの目的は,水だめの水位を一定に保つこと – 水位 wl を Time (時刻) から Depth(水位) への関数として定義する. • wl : Time → Depth • wl(t)で表す. – これを形式化すると • << now=0 >> Mine << ∀t < ∞: LWL < wl(t) < HWL >> • CTL≡∀t < ∞: LWL < wl(t) < HWL 仮定 コミットメント 次に 2. システム内の物理プロセスに関する仮定を形式化する. 3. 連続量に関する制御要求を仕様化する. をおこなう.
  • 33. 33 システム分割と仕様の詳細化 • システムはSumpとSumpContrで構成される. • inflowはSumpに流れ込む水 • Sumpはオブザーバブルのwlを与える. • SumpContrは流出outflowを制御してCTLを満たす必要がある. • wlは以下の様になる. – 𝐶𝑆𝑢𝑚𝑝1 ≡ ∀𝑡 < ∞: 𝑤𝑙 𝑡 = 𝑤𝑙 0 + ‫׬‬0 𝑡 𝑖𝑛𝑓𝑙𝑜𝑤 𝑥 − 𝑜𝑢𝑡𝑓𝑙𝑜𝑤 𝑥 𝑑𝑥 • 𝐶𝑆𝑢𝑚𝑝1がCTLを満たすためには – inflowの上限が必要になる. – 初期水位の制限が必要になる. • Sumpに対する仕様は – <<now=0>>Sump<<Csump>> – Csump≡Csump1∧CSump2∧CSump3 CTL≡∀t < ∞: LWL < wl(t) < HWL CSump3≡LSWL<wl(0)<HSWL CSump2≡∀t<∞: 0≤inflow(t)≤ 𝜆𝑖𝑛 𝑚𝑎𝑥
  • 34. 34 SumpContrの仕様 • SumpContrは水位が高くなるとすぐに排水し始める必要がある. – 水位がHSWLを上回っている限り、少なくとも𝜆𝑜𝑢𝑡 𝑚𝑖𝑛 の流出がある. – δsc時間単位の反応遅延を考慮する. – CSC1≡∀t0,t1<∞: (wl≥HSWL) during [t0,t1]⇒(outflow≥ 𝜆𝑜𝑢𝑡 𝑚𝑖𝑛 ) during [t0+ δsc, t1] – レベルが最小レベルLSWLに達するとすぐに、それ以上排水しない. – CSC2≡∀ t0,t1<∞: (wl≤LSWL) during [t0,t1]⇒(outflow=0) during [t0+ δsc, t1] – 排水量には上限がある. – CSC3≡ ∀ t < ∞ : 0≤ outflow(t) < 𝜆𝑜𝑢𝑡 𝑚𝑎𝑥 • SumpContrの仕様は – <<now=0>>SumpContr<<CSC>> – CSC≡ CSC 1∧ CSC 2∧ CSC 3 • システム仕様は – <<now=0>>Sump||SumpContr<<CSump∧CSC>>
  • 35. 35 詳細化の検証 • であれば, – Csump∧CSC ⇒ CTL • 従って Sump || SumpContr はMineの正しい実装になる. – ただし,wl , outflow は連続関数 • 上記の証明で中間値の定理を使っているため. (5.1) LSWL ≥ LWL+ δsc 𝜆𝑜𝑢𝑡 𝑚𝑎𝑥 (5.2) HSWL≤HWL – δsc 𝜆𝑖𝑛 𝑚𝑎𝑥 (5.3) 𝜆𝑖𝑛 𝑚𝑎𝑥 < 𝜆𝑜𝑢𝑡 𝑚𝑎𝑥
  • 36. 36 メタンガス濃度の件 • トップレベルの仕様は、爆発が発生せず、メタンレベルが安全レベルSMLを下回っている場合、 水位が指定された境界内にとどまるという要件を表すように変更する必要がある. – 関数 ml(t) で時刻tにおけるメタンレベルを表す. – 論理変数 expl@t で時刻tで爆発が起こることを表す. – CMLではなくSMLを使用して、ポンプをオフにするために必要な反応時間を考慮する. – CTL1≡∀t < ∞ : ¬expl@t – CTL2≡∀t < ∞ : (ml < SML) during [0, t] ⇒ LWL < ml(t) < HWL • CTL≡ CTL1 ∧ CTL2とする.システム仕様Mineは, – << now = 0 >> Mine << CTL >> • SumpContrの仕様も変更する.CSC1は以下の様になる. – CSC1≡∀t0,t1<∞: (wl ≥ HSWL) during [t0,t1] ∧ (ml < SML) during [t0,t1] ⇒(outflow≥ 𝜆𝑜𝑢𝑡 𝑚𝑖𝑛 ) during [t0+ δsc, t1] ここが元のコミットメント
  • 37. 37 システムの詳細化2 • SumpContrをPumpとPumpContrに分割する. • 並列コンポーネント間の通信のモデル化が必要に なる. – 共有変数 – チャンネル通信 • 非同期通信 • 同期通信 • 物理回線 制御対象 プラントモデル コントローラ
  • 38. 38 Parallel decomposition of the sump control • SumpCnontr = (PumpContr || Pump) • PumpContr制御コンポーネントは、非同期チャネルpchでメッセージを送信することによって Pumpと通信する.チャネルpchでは、値1と0のメッセージを使用して、それぞれポンプのオ ンとオフを切り替える. – ON(t1, t2) ≡ rec(pch, 1)@t1 ∧ ¬rec(pch, 0) during (t1, t2] – OFF(t1, t2) ≡ rec(pch, 0)@t1 ∧ ¬rec(pch, 1) during (t1, t2] – maximal outflow, let CPump1 ≡ CSC3. • pchから値1を受け取った後、値0を受け取らない限り(δpとλ_𝑜𝑢𝑡^𝑚𝑖𝑖)、最大でδpの遅延 後に少なくとも λ_𝑜𝑢𝑡^𝑚𝑖𝑛の流出が発生すると仮定する.
  • 39. 39 <<now=0>>Mine <<CTL>> <<now=0>>Sump<<Csump>> <<now=0>>SumpContr<<CSC>> <<now=0>>Sump||SumpContr<<CSump∧CSC>> <<now = 0>> Pump << CPump>> << now = 0 >> PumpContr <<CPC>> <<now=0>>Sump||Pump||SumpContr<<CSump∧CPC ∧CPump >> システム要求(自然言語記述要求) 全体の流れ
  • 40. 40 <<now = 0>> WSens << CWSens>> <<now = 0>> WContr << CWC>> <<now = 0>> Wsens||WContr << CWSens∧CWC>> <<now = 0>> Air << CAir>> <<now = 0>> MSens << CMSens>> <<now = 0>> Sump||Pump||MSens||Air|| Wsens||WContr << CTL>>
  • 41. 41 Jozef Hoomanのアプローチのまとめ • 多数の制約条件が導出された. – Operational requirement (運用要求)を満たす条件を記述できるレベル • コンポーネントとインタフェースが定義された. • コンポーネント仕様も得られた. • ただし,実装レベルに落とせる振る舞いについては不十分 – 状態図で記述するようなものがない. – また,それに基づいたコンポーネント分割の妥当性も検証されてない. • この部分も,段階的詳細化の中に組み込んで検証しながら進める様にする必要がある. 手順6の「プログラミング言語で、手順5の離散的仕様を実装する」の中身がない.
  • 42. 42 4. 振る舞いモデル利用の提案 • プロパティ定義に時相論理式を利用し,時相論理式から動作モデルを生成する. – 生成方法については前回報告(第26回CSP研究会: リアルタイム性検証手法)した. – 「ディペンダブルシステム―高信頼システム実現のための耐故障・検証・テスト技術」 にも書いてある. – LTSA, nuXmvに実装されている. • メリット – システム仕様から動作仕様を作りコンポーネント分割に対応させて,モデル分割すること でモデル分割の妥当性を検証出来る. • コンポーネント分割の最適化 • コンポーネント間の状態不整合の検証 – 実装に落とせる状態マシンを生成出来る. – テストシナリオを生成出来る. 米田 友洋,土屋 達弘, 梶原 誠司 2005/11/1
  • 43. 43 改良版 仕様の形式化 • 変数の定義 – タイプ T の変数 V – V : T • 関数の定義 – タイプ T1 (関数の定義域)からタイプ T2 (関数の範囲)ま での関数 F の場合、 – F : T1 → T2 • プロパティの定義 – 論理演算子∧(and), ∨(or), ⇒(implies) , ⇔(iff), ∀(for all) を使用し た単純な述語計算式 Safety Req. Operational Req. システム要求(自然言語記述要求) S1 : Water level S3 : Assumptions S4 : Pump controller S2 : Methane level S5 : Sensor システム仕様(形式記述要求) S6 : Actuator • 論理変数の抽出 • 述語計算式の時相論理式化 この手順を追加
  • 44. 44 例えば • S4: 反応時間を無視した場合 – ∀t : Time – S4a: (water(t) > HighWater ∧ Methane(t) < DangerMethane) ⇒ Pumping(t) – S4b: (Methane(t) ≥ DangerMathane)⇒ ¬Pumping(t) • LTL版 – S4a: □ ((water(t) > HighWater ∧ Methane(t) < DangerMethane) ⇒ ◇Pumping(t) – S4b: □ ((Methane(t) ≥ DangerMathane)⇒ ◇¬Pumping(t)) fluent Pumping = <on, off> initially 0 fluent HighWater = <whigh, wlow> initially 0 fluent HighMethane = <mhigh, mlow> initially 0 assert S4a = [](HighWater && ! HighMethane -> X Pumping) assert S4b = [](HighMethane -> X ! Pumping) constraint S4a = S4a constraint S4b = S4b
  • 45. 45 環境側 • 環境側にも振る舞いがある. // Water WaterLevel = Low, Low = (tohigh -> High | wlow -> Low), High = (tolow -> Low | whigh -> High). WaterEvent = Low, Low = (whigh -> High | wlow -> Low), High = (wlow -> Low | whigh -> High). ||Water = (WaterLevel||WaterEvent).
  • 46. 46 振る舞いの合成と分解 • 動作モデルの変換 – アクションと状態の割り当てでコンポーネントを切り出す. – 必要なインタフェースを導出できる. <<now=0>> Sump||SumpContr <<CSump∧CSC>> <<now=0>> Mine <<CTL>> ||SumpControl = (S4a||S4b). ||Sump = (Water). ||Mine = (Sump||SumpControl). ||Pump = Mine @{on, off}.
  • 47. 47 まとめ • 目的 – ダイクストラは,プログラムが与えられてその正しさを検証するスタイルから,仕様が与えられ てそれを満たすプログラムを導出するスタイルを提案した.そのダイクストラのスタイルをリア ルタイム分散システムに適用したい. • ヨゼフ・フーマンは,時間変数とコンビネーション関数を使って形式仕様化をおこない仕様 検証可能にした. • しかし,振る舞いを導出するには至っていない. • 振る舞いを導出するためには,プロパティ記述に時相論理式を利用して状態マシンを生成す れば良い.
  • 48. 48 Thank you for listening!
  • 49. 49 © 2021, Laboratory Design すべての権利は留保されています。書面による許可なしに、本出版物の全部または一部を複製することを禁じます。 All rights reserved. Written permission is required for reproduction of all or parts of this publication. The source must be stated in any such reproduction. This publication and the contents hereof are subject to change without notice. Brand names or product names are trademarks or registered trademarks of their respective companies or organizations. https://embresearch.com/