A Tutorial for Formal Verification - What is the Intended Behavior of a System?

Cyber-physical systems (CPS) such as cars and robots, which behave in the physical world controlled by software, are nowadays ubiquitous. As CPS become more complicated, safety assurance is increasingly important.

Testing is currently the dominant method for safety assurance of CPS. In testing, a system is executed or simulated with test inputs, and we check whether the behavior of the system is safe or not for those inputs. We cannot guarantee the safety of the system for inputs that have not been tested. There is another approach to CPS safety assurance called formal verification. In formal verification, unlike testing, we try to find a guarantee that the behavior of the system is safe for all inputs.

In this workshop, the participants tried a well-known formal verification tool called Spin model checker. To use the Spin model checker, the following two steps are required:
– Modeling the system of interest in Promela language; and

– Writing down the specification (the desired behavior) as a linear temporal logic (LTL) formula.

The purpose of this workshop was to examine the challenges of the second step extensively. For this purpose, the workshop consisted of the following four main steps:
1. Thinking of some systems and providing specifications (in Japanese) that the system should satisfy;

2. Taking a lecture on LTL formula and doing some exercises;
3. Taking a tutorial on Spin model checker and Promela language; and
4. Translating the Japanese specifications provided in the first step, designing a system that satisfies the specifications, and checking that it indeed satisfies the specifications using Spin model checker.

By observing the participants tackling the above four tasks and the feedback from the participants, we successfully identified some concrete challenges in formal specification. We expect that the results will help with developing formal specification tools that could be used in industry in the future.

企画の背景

自動車、ロボットなどの物理的な振る舞いがコンピュータで制 御される物理情報システム(CPS)の普及により、その安全保証 が重要な課題となっている。現在、CPS の安全保証にはテストが 広く用いられている。テストでは、システムにいくつかのテスト ケースを与えて実際に動かすか、シミュレーションを行うことに より、その振る舞いが望ましいものであるかを確かめる。しかし ながら、テストケースに含まれないケースについては安全性が保 証されない。一方、システムの安全保証のためには、他に形式検 証という手法が研究されている。形式検証は、テストのようにテ ストケースを一つずつ試すのではなく、有りうる全ての振る舞い が望ましいものであることを数学的に保証する手法である。 形式検証を産業界で実際に活用する上での障害として、システ ムの望ましい振る舞い(仕様)をコンピュータに読める論理式の 形で書き下す形式的仕様記述が挙げられる。形式的仕様記述は論 理学に関する知識のない人にとって敷居が高いと言われている。本 ワークショップでは、論理学に関してほぼ背景知識のない参加者 に実際に形式検証を体験してもらう中で、形式的仕様記述の普及 のための具体的課題を多角的に洗い出すことを目的とした。

どんなワークショップ?

本ワークショップでは、参加者に線形時相論理(LTL)による論理式を用いたモデル検査という形式検証手法に触れてもらった。具体的には、最初の課題として、特に事前知識のない段階で参加者にとって身近なシステムとそのシステムが満たすべき仕様を日本語で考えてもらった。続いて、モデル検査に取り組んでもらうための準備として、

(1)LTL論理式による仕様記述に慣れてもらうための論理学の基礎的な講義・演習

(2)LTLを用いるモデル検査器として最もよく知られたソフトウェアの一つであるSpinモデルチェッカーのチュートリアル

の二つを実施した。その上でメインの課題として、最初に考えた日本語の仕様のいくつかをLTL論理式で記述し、それを満たすようなシステムをSpinモデルチェッカーのシステム記述言語Promelaで記述してもらった上で、実際にSpinモデルチェッカーを用いてシステムが仕様を満たすことを検証してもらった。 GCLコース生の本ワークショップへの参加は、WS-A Mediumとして認められた。

プログラム

20min

導入/参加者自己紹介

40min

課題1(身近なシステム及びその仕様の考案)

(休憩)
100min

LTL 論理式に関する講義(蓮尾准教授に依頼) / LTL 論理式の意味論に関する演習

(昼食)
45min

Spin モデルチェッカーの使い方及びシステム記述言語Promelaのチュートリアル

100min

課題2(仕様の LTL 論理式への翻訳及びシステ ムのPromelaでの記述、Spinモデルチェッカーを用いた検証)

(休憩)
15min

LTL 論理式と日本語間での相互翻訳の演習

15min

アンケート/議論/総括

ワークショップの成果

課題1においては、身近なシステムとしてエレベータ、パジャマを着用する手順などが挙げられた。それぞれのシステムに関し満たすべき仕様については、LTLで簡単に記述可能なものから、システムのモデルをより詳細にしていくことで記述可能になるもの、また記述不可能なものまで、幅広い例が考えられた。例えばエレベーターに関する仕様としては、「ボタンを押したらエレベーターが来る」「人数制限をオーバーしている時にドアが閉まることはない」「水平方向に移動しない」など自由な発想がなされた。

実際に仕様が満たされていることをSpinモデルチェッカーによって確かめる課題では、システムのモデル化の際の変数の置き方などにも気を配りながら実際にモデルを作成・検証する流れをなぞることができ、その過程で形式的仕様記述のいくつかの具体的な問題点が明らかになった。詳細は以下の省察にて考察する。

ふり返り

本ワークショップを通じて、物理情報システムの設計において形式検証を活用するために解決する必要のある課題の一つである、形式的仕様記述におけるいくつかの問題点が具体的に明らかになった。主要なものとして、まずLTLの意味を理解する際、特に時相演算子がネストしたものや、UntilやReleaseといった時相演算子を用いたものに関しては困難があった。しかしながら、パス意味論を考えることにするとその困難は多少解消されることが示唆された。これは例えばViSpec[Hoxha, Mavridis & Fainekos, IROS’15]のような論理式による仕様記述の支援ツールが、記述した仕様を満たすパスの例を与えることの有効性を裏付けるものである。次に、仕様をLTLで記述しようとした際に、変数の値ではなく変数の値の変化をトリガーとして使用したくなる場合は、特につまずきやすいことがわかった。これに関しては、支援ツールに変数の値をトリガーとする論理式のテンプレートを用意するなどの対策が有効と考えられる。最後に、日本語からのLTLへの翻訳に関しては、自然言語の曖昧さにもかかわらず背景知識をある程度共有している場合には、比較的簡単な仕様に関しては意図通りのものを記述できることがわかった。形式的仕様記述には、エンジニアはなるべく使い慣れた言語で仕様記述を行い、そこから論理式などへの翻訳を別レイヤーとして行うdual language approachというアプローチがある[Baresi, Orso & Pezzè, ICSE’97]が、システムが何であるのか、という情報を与えることでこの翻訳をある程度自動化できる可能性が示唆される。 ワークショップの進め方に関する反省点として、背景知識の差により想像以上に演習などにかかる時間に差があった。本ワークショップで の主眼はあくまでも仕様のLTL論理式での記述であったが、プログラミング経験のあった参加者は、考案したシステムをSpinモデルチェッカのシステム記述言語Promelaでモデルすることに関しても短時間で習熟していた。プログラミング経験がない参加者についても、LTLの論理式を見て意味を理解することや、仕様をLTLで記述することに関しては期待通りの成果が得られたが、一方でやはりシステムのモデル化は1日のワークショップでは困難であった。同じ内容で背景知識を全く持たない参加者のみを対象としたいのであれば、2日間かけるなどしたほうが落ち着いて課題に取り組めるだろうと感じた。

アイテム

模造紙、付せん紙、Spinモデルチェッカ(参加者持参PCもしくは貸与PCにインストールされたもの)

開催日時

2017.9.16(土)10:00 - 16:45

場所

東京大学本郷キャンパス GCLラボ

参加者・人数

3名
(経済学研究科1名、情報理工学系研究科1名、医学系研究科1名)

講師/ファシリテーター

講師:蓮尾一郎(国立情報学研究所アーキテクチャ科学研究系准教授)
ファシリテーター:木戸肩吾(東京大学大学院情報理工学系研究科博士課程)

原稿執筆:木戸肩吾