JP2009265996A - Inspection device, verification method and verification program - Google Patents

Inspection device, verification method and verification program Download PDF

Info

Publication number
JP2009265996A
JP2009265996A JP2008115597A JP2008115597A JP2009265996A JP 2009265996 A JP2009265996 A JP 2009265996A JP 2008115597 A JP2008115597 A JP 2008115597A JP 2008115597 A JP2008115597 A JP 2008115597A JP 2009265996 A JP2009265996 A JP 2009265996A
Authority
JP
Japan
Prior art keywords
logical expression
search
expression
node
equivalent
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2008115597A
Other languages
Japanese (ja)
Inventor
Akinori Ota
田 暁 率 太
Hiromasa Shin
博 正 進
Mikihito Iwamasa
政 幹 人 岩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2008115597A priority Critical patent/JP2009265996A/en
Publication of JP2009265996A publication Critical patent/JP2009265996A/en
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

<P>PROBLEM TO BE SOLVED: To improve verification performance for a system to be verified. <P>SOLUTION: A verification device includes: a relational database storing a state transition model representing transition among a plurality of states; a verification condition receiving means for receiving input of verification condition for the state transition model described in a CTL expression; a syntax analysis means for generating a syntactic tree including a plurality of nodes respectively associated with logical expressions by analyzing the verification condition wherein the logical expression for a parent node is defined based on the logical expression corresponding to a child node and an operator assigned to the parent node; a search sentence generating means for generating a search sentence for searching for a state satisfying the logical expression corresponding to each node of the syntactic tree; and a search execution means for searching the relational database for each search sentence in descending order of depth of node in hierarchy toward a root node from a leaf node in the syntactic tree, and thereby respectively acquiring a state corresponding to the each search sentence. <P>COPYRIGHT: (C)2010,JPO&INPIT

Description

本発明は、検査装置、検証方法および検証プログラムに関し、たとえばソフトウェアを始めとするシステム開発において、仕様の正しさを検証する手法の一つであるモデル検査に関する。   The present invention relates to an inspection apparatus, a verification method, and a verification program. For example, in system development including software, the present invention relates to model inspection that is one of methods for verifying correctness of specifications.

モデル検査は、システムがある一定条件下でとり得る全状態及び状態遷移に関して、検証条件の充足性を網羅的に検証する手法である。モデル検査は、仕様から有限状態遷移系を生成する段階と、計算木論理式(CTL)で記述された検証条件を検証する段階から構成される。従来のモデル検査では、検証対象システムの規模が大規模化すると状態爆発が発生し、その検証が困難化若しくはパフォーマンスが著しく低下する問題があった。   Model checking is a method for comprehensively verifying the sufficiency of verification conditions for all states and state transitions that can be taken under a certain condition. Model checking includes a step of generating a finite state transition system from specifications and a step of verifying verification conditions described by a computational tree logical expression (CTL). In the conventional model checking, when the size of the verification target system is increased, a state explosion occurs, and the verification becomes difficult or the performance is remarkably deteriorated.

本発明は、検証パフォーマンスを向上させることを可能とした検証装置、検証方法および検証プログラムを提供する。   The present invention provides a verification device, a verification method, and a verification program that can improve verification performance.

本発明の一態様としての検証装置は、
複数の状態間の遷移を表現した状態遷移モデルを記憶した第1のリレーショナルデータベースと、
計算木論理(CTL:Computational Tree Logic)式により記述した、前記状態遷移モデルの検証条件の入力を受け付ける検証条件受付手段と、
前記検証条件受付手段に入力された前記検証条件を解析することにより、それぞれ論理式が対応付けられた複数のノードを含む構文木を生成し、親ノードの論理式は、子ノードに対応する論理式と、前記親ノードに割り当てられた演算子とに基づいて定義される、構文解析手段と、
前記構文木の各ノードに対応する論理式を充足する状態を検索する検索文を、前記親ノードの検索文が、前記親ノードの前記子ノードに対応する論理式の出力を引数とするように生成する検索文生成手段と、
前記第1のリレーショナルデータベースに対して、前記検索文生成手段により生成された各検索文を、前記構文木における葉ノードからルートノードへ向けて階層の深いノード順に実行することにより、各前記検索文に対応する状態をそれぞれ検索結果として取得する検索実行手段と、
少なくとも前記構文木のルートノードに対応する検索結果を出力する検索結果出力手段と、
を備える。
本発明の一態様としての検証方法は、
複数の状態間の遷移を表現した状態遷移モデルを記憶した第1のリレーショナルデータベースを準備する準備ステップと、
計算木論理(CTL:Computational Tree Logic)式により記述した、前記状態遷移モデルの検証条件の入力を受け付ける検証条件受付ステップと、
前記検証条件受付ステップで入力された前記検証条件を解析することにより、それぞれ論理式が対応付けられた複数のノードを含む構文木を生成し、親ノードの論理式は、子ノードに対応する論理式と、前記親ノードに割り当てられた演算子とに基づいて定義される、構文解析ステップと、
前記構文木の各ノードに対応する論理式を充足する状態を検索する検索文を、前記親ノードの検索文が、前記親ノードの前記子ノードに対応する論理式の出力を引数とするように生成する検索文生成ステップと、
前記第1のリレーショナルデータベースに対して、前記検索文生成ステップにより生成された各検索文を、前記構文木における葉ノードからルートノードへ向けて階層の深いノード順に実行することにより、各前記検索文に対応する状態をそれぞれ検索結果として取得する検索実行ステップと、
少なくとも前記構文木のルートノードに対応する検索結果を出力する検索結果出力ステップと
を備える。
本発明の一態様としての検証プログラムは、上記検証方法の各ステップをコンピュータに実行させることを特徴とする。
The verification apparatus as one aspect of the present invention includes:
A first relational database storing a state transition model expressing transitions between a plurality of states;
A verification condition accepting means for accepting an input of a verification condition of the state transition model described by a computational tree logic (CTL) expression;
By analyzing the verification condition input to the verification condition receiving unit, a syntax tree including a plurality of nodes each associated with a logical expression is generated, and the logical expression of the parent node is a logical expression corresponding to the child node. A parser means defined based on an expression and an operator assigned to the parent node;
A search statement for searching for a state satisfying a logical expression corresponding to each node of the syntax tree is set such that the search statement of the parent node uses an output of a logical expression corresponding to the child node of the parent node as an argument. A search statement generation means for generating;
By executing each search statement generated by the search statement generation means with respect to the first relational database in the order of nodes in the hierarchy from the leaf node to the root node in the syntax tree, Search execution means for acquiring the corresponding states as search results,
Search result output means for outputting a search result corresponding to at least a root node of the syntax tree;
Is provided.
The verification method as one aspect of the present invention includes:
Preparing a first relational database storing a state transition model expressing transitions between a plurality of states;
A verification condition receiving step for receiving an input of a verification condition of the state transition model described by a computational tree logic (CTL) expression;
By analyzing the verification condition input in the verification condition receiving step, a syntax tree including a plurality of nodes each associated with a logical expression is generated, and the logical expression of the parent node is the logical expression corresponding to the child node. A parsing step defined based on an expression and an operator assigned to the parent node;
A search statement for searching for a state satisfying a logical expression corresponding to each node of the syntax tree is set such that the search statement of the parent node uses an output of a logical expression corresponding to the child node of the parent node as an argument. A search statement generation step to generate,
By executing each search sentence generated by the search sentence generation step with respect to the first relational database in the order of nodes in the hierarchy from the leaf node to the root node in the syntax tree, each search sentence is executed. A search execution step for acquiring the states corresponding to each as a search result,
A search result output step of outputting a search result corresponding to at least a root node of the syntax tree.
A verification program as one aspect of the present invention causes a computer to execute each step of the verification method.

本発明により、検証パフォーマンスを向上させることができる。 According to the present invention, verification performance can be improved.

まず本実施の形態の説明で用いる用語について定義する。
(1)RDB(Relational DataBase:リレーショナルデータベース):関係モデルに基づくデータベースのことである。関係モデルでは、複数のデータ集合(ドメイン)の直積部分集合として、ドメイン間に関係を定義する。具体的には関係は表形式で表現され、各列は1つのドメインを表し、各行は各ドメインの要素の組合せ(即ち関係)を表す。リレーショナルデータベースは、この関係モデルに対して関係代数演算(和集合、射影)を適用することで、データの検索を可能にする。
First, terms used in the description of this embodiment will be defined.
(1) RDB (Relational DataBase): A database based on a relational model. In the relationship model, a relationship is defined between domains as a direct product subset of a plurality of data sets (domains). Specifically, relationships are expressed in tabular form, each column represents one domain, and each row represents a combination (ie, relationship) of elements in each domain. The relational database makes it possible to search for data by applying relational algebra (union, projection) to this relational model.

(2)FSM (Finite State Machine:有限状態遷移系):有限個の状態と状態遷移とからなる、ふるまいのモデルのことである。図2に、OSのタスク管理機能を題材にしたFSMの一例を示す。個々の円形が一つの「状態」を、状態間を結ぶ有向曲線が一つの「状態遷移」を表す。円形の中のS1、S2などの「1」「2」は、状態識別子である。有向曲線のT1,T2などの「1」「2」は状態遷移識別子である。 (2) FSM (Finite State Machine): A behavioral model consisting of a finite number of states and state transitions. FIG. 2 shows an example of FSM based on the OS task management function. Each circle represents one “state”, and a directed curve connecting the states represents one “state transition”. “1” and “2” such as S1 and S2 in the circle are state identifiers. “1” and “2” such as T1 and T2 of the directed curve are state transition identifiers.

図2には、3つのタスク1、2、3の場合のFSMが示されており、各タスクは、実行(RUN)状態と、実行可能(RDY)状態と、実行待ち(WAI)状態の3つの状態を有する。"RUN", "RDY", "WAI"は状態を構成する変数名に相当する。各タスクには、自発的なCPU譲り渡し(yield)操作と、自発的な実行待ち状態への遷移(sleep)操作と、実行待ち状態のタスクの実行可能状態への変更(wakeup)操作の三つのAPI(Application Programming Interface)関数が提供されている。実行(RUN)状態にあるタスクが、yield,sleep,wakeupを選択的に実行する。   FIG. 2 shows the FSM for three tasks 1, 2, and 3. Each task has three states: an execution (RUN) state, an executable (RDY) state, and an execution waiting (WAI) state. Has one state. "RUN", "RDY", and "WAI" correspond to the variable names that make up the state. Each task has three types of operations: a spontaneous CPU yield (yield) operation, a spontaneous transition to the execution wait state (sleep), and a change of the task waiting for execution to a ready state (wakeup). API (Application Programming Interface) functions are provided. A task in the run (RUN) state selectively executes yield, sleep, and wakeup.

(3)CTL(Computational Tree Logic)式 (計算木論理式): 時間経過と共に真偽値が変化しえる文を記述する論理体系のことであり、システムの振る舞いに関する要求仕様(システム検証条件となる)を記述することが出来る。信号機システムの場合におけるCTL式の一例を以下に示す。

CTL式: "押しボタンが点灯" -> AF("歩行者信号が青")
意味: "押しボタンが点灯"したら、いずれ必ず"歩行者信号が青"
ただし AF = "いずれ必ず"

定義
(A)Φ ::= T | F | p | ¬Φ | Φ∨Φ | Φ∧Φ | Φ⇒Φ | Φ⇔Φ
| AXΦ | EXΦ | AGΦ | EGΦ | AFΦ | EFΦ | A(ΦUΦ) | E(ΦUΦ)
| A(ΦWΦ) | E(ΦWΦ)
ただし T: 真(True)
F: 偽(False)
p: 原子項

(B)原子項
部分論理式を持たないCTL式 (構文上分解不可能)

(C)論理演算子
¬ : not
∨ : or
∧ : and
⇒ : ならば
⇔ : 同値

(D)時相演算子
経路演算子 (Path Operators)
A (All: 現在状態から分岐する全ての経路で真である。)
E (Exists: 現在状態から分岐する経路のうち、少なくとも1つの経路で真である。)
状態演算子 (State Operators)
X Φ (Next: 経路上、次の状態でΦは真である。)
G Φ (Globally: 経路上、全ての状態でΦは常に真である。)
F Φ (Finally: 経路上、いずれかの時点でΦは真となる。)
Φ U Ψ (Until: 経路上、ある時点でΨは真になり、それまでは常にΦが真である。)
Φ W Ψ (Weak until(unless): 経路上(Φ U Ψ) ∨ ¬F(Ψ))
(3) CTL (Computational Tree Logic) expression: A logical system that describes a statement whose truth value can change over time, and is a requirement specification related to system behavior (which is a system verification condition) ) Can be described. An example of the CTL type in the case of a traffic light system is shown below.

CTL type: "Push button is lit"-> AF ("Pedestrian signal is blue")
Meaning: When the "push button lights up", it will always be "pedestrian signal is blue"
However AF = "Someday"

Definition (A) Φ :: = T | F | p | ¬Φ | Φ∨Φ | Φ∧Φ | Φ⇒Φ |
AXΦ | EXΦ | AGΦ | EGΦ | AFΦ | EFΦ | A (ΦUΦ) | E (ΦUΦ)
A (ΦWΦ) | E (ΦWΦ)
Where T: True
F: False
p: atomic term

(B) Atomic term
CTL expression without sub-logic expression (not syntactically decomposable)

(C) Logical operator
¬: not
∨: or
∧: and
⇒:
⇔: Equivalent

(D) Temporal operator
Path operators
A (All: True for all paths that branch from the current state.)
E (Exists: true on at least one of the routes that branch off from the current state)
State operators
X Φ (Next: Φ is true in the next state on the path.)
G Φ (Globally: Φ is always true in all states on the path)
F Φ (Finally: Φ becomes true at some point on the path)
Φ U Ψ (Until: Ψ is true at some point on the path, and Φ is always true until then)
Φ W Ψ (Weak until (unless): On the path (Φ U Ψ) ∨ ¬F (Ψ))

以降の説明において「演算子」と言えば、論理演算子か時相演算子を表すものとする。   In the following description, “operator” means a logical operator or a temporal operator.

以下、CTL式の定義を理解するため、具体例(OSのタスク管理機能)をいくつか示す。   Below, some examples (OS task management functions) are shown to understand the definition of the CTL expression.

図2のFSMにおいて、以下の検証条件1 (原子項)を満たす状態は、図3における太線の丸で示すようになる。
p := "Task1 ∈ RDY"
この意味は、タスク1が実行可能状態にあるというものである
In the FSM of FIG. 2, a state that satisfies the following verification condition 1 (atomic term) is indicated by a bold circle in FIG.
p: = "Task1 ∈ RDY"
This means that task 1 is ready to run

また、図2のFSMにおいて、下記の検証条件2を満たす状態の一例は図4のようになる。
p ⇒ AF(q)
但し q := "Task1 ∈ RUN"
この意味は、タスク1が実行可能状態ならば、全ての経路の、ある時点で(必ずいつか)、タスク1が実行状態になるというものである。
Also, in the FSM of FIG. 2, an example of a state that satisfies the following verification condition 2 is as shown in FIG.
p ⇒ AF (q)
Where q: = "Task1 ∈ RUN"
This means that if task 1 is in an executable state, task 1 will be in an execution state at some point (sometime) on all routes.

また、図2のFSMにおいて、下記の検証条件3を満たす状態の一例は図5のようになる。
p ⇒ A(p U q)
この意味は、タスク1が実行待ち状態ならば、
全ての経路の、ある時点で(必ずいつか)タスク1が実行状態になり、
且つ、タスク1が実行状態になるまで、タスク1は実行可能状態である、というものである。
Further, in the FSM of FIG. 2, an example of a state satisfying the following verification condition 3 is as shown in FIG.
p ⇒ A (p U q)
This means that if task 1 is waiting for execution,
Task 1 will be in an execution state at some point (always) on all routes.
In addition, task 1 is in an executable state until task 1 is in an execution state.

(4)構文木とは、CTL式を構文解析により木構造で表現したもののことである(図8左側参照)。構文木は、複数のノードと、ノード間を結ぶ枝とを含む。葉ノードには、T, F, または原子項が割り当てられ、葉ノード以外のノード(非葉ノード)には論理演算子または時相演算子が割り当てられる。 (4) A syntax tree is a CTL expression expressed in a tree structure by syntax analysis (see the left side of FIG. 8). The syntax tree includes a plurality of nodes and branches connecting the nodes. Leaf nodes are assigned T, F, or atomic terms, and nodes other than leaf nodes (non-leaf nodes) are assigned logical operators or temporal operators.

ノード間の親子関係は、CTL式中の各(部分)CTL式と、(論理・時相)演算子との作用関係を表現する。結果的に、元のCTL式に含まれる演算子の演算順位は、構文木の末端である葉ノードからルートノードに向けてノードを辿る順番として認識される。   The parent-child relationship between nodes expresses the operational relationship between each (partial) CTL expression in the CTL expression and the (logical / temporal) operator. As a result, the calculation order of the operators included in the original CTL expression is recognized as the order of tracing the nodes from the leaf node, which is the end of the syntax tree, toward the root node.

各ノードを頂点とする部分木は、それぞれ各ノードに対応する論理式を表す。葉ノードについては、それに割り当てられたT, F, または原子項自体が論理式となる。   The subtree having each node as a vertex represents a logical expression corresponding to each node. For leaf nodes, the T, F, or atomic term itself assigned to it is a logical expression.

以下、本発明の実施の形態について詳細に説明する。   Hereinafter, embodiments of the present invention will be described in detail.

図1は、本発明の一実施の形態に係るシステム状態検査装置の構成を概略的に示す。   FIG. 1 schematically shows a configuration of a system state inspection apparatus according to an embodiment of the present invention.

このシステム状態検査装置は、予め検査対象システムの仕様書から生成されたFSMをリレーショナルデータベース(RDB)14に保持しておき、外部から与えられた検証条件(CTL式)からリレーショナルデータベースの検索手続き(SQL(Structured Query Language)文)を生成し、リレーショナルデータベース14の検索機能を利用して、生成した検索手続き(SQL文)を実行する事で、モデル検査を行おうするものである。なお、本実施例では検索手続きをSQLで記述するが、リレーショナルデータベースのクエリー言語形式およびその手続き型拡張形式で記述されていればよく、記述言語はSQLに限定されるものではない。   This system state inspection device holds the FSM generated from the specifications of the system to be inspected in the relational database (RDB) 14 in advance, and searches the relational database from the verification condition (CTL expression) given from the outside ( SQL (Structured Query Language) statement) is generated, and a model check is performed by executing the generated search procedure (SQL statement) using the search function of the relational database 14. In this embodiment, the search procedure is described in SQL. However, it is sufficient that the search procedure is described in the relational database query language format and its procedural extension format, and the description language is not limited to SQL.

このシステム状態検査装置の検査対象はFSM、当該システム状態検査装置への入力は、検証条件(CTL式)、出力は、検証条件を満たす全状態の集合である。   The inspection target of this system state inspection apparatus is FSM, the input to the system state inspection apparatus is a verification condition (CTL type), and the output is a set of all states that satisfy the verification condition.

以下では、本装置の処理について説明するが、その前にFSMについて詳細な説明を行う。   In the following, the processing of this apparatus will be described, but before that, the FSM will be described in detail.

上述したように、図2はOSのタスク管理機能を題材にしたFSMの一例(タスクが3つの場合)を示している。検査対象であるFSMは本装置のRDB14にあらかじめ格納されている。   As described above, FIG. 2 shows an example of FSM (when there are three tasks) based on the task management function of the OS. The FSM to be inspected is stored in advance in the RDB 14 of this apparatus.

FSMは、「状態表」(以降"State")と「状態遷移表」(以降"Trans")の二つのテーブルから形成される。   The FSM is formed from two tables, a “state table” (hereinafter “State”) and a “state transition table” (hereinafter “Trans”).

状態表はFSMの全状態を記録する。状態表は、状態を識別する「状態識別子」(以降"ID")と、状態を構成する各「変数名」を、属性として持つ。状態表の一例を以下に示す。最も左の属性"ID"が状態識別子であり、それ以外の"RUN", "RDY", "WAI"は状態を構成する変数名である。例えば一行目の状態0は、RUN={1}, RDY={2, 3}, WAI={}を意味する。

Figure 2009265996
The state table records all FSM states. The state table has a “state identifier” (hereinafter referred to as “ID”) for identifying a state and “variable names” constituting the state as attributes. An example of a state table is shown below. The leftmost attribute “ID” is a state identifier, and other “RUN”, “RDY”, and “WAI” are variable names constituting the state. For example, the state 0 in the first line means RUN = {1}, RDY = {2, 3}, WAI = {}.
Figure 2009265996

また、状態遷移表はFSMの全状態遷移を記録する。状態遷移表は、状態遷移を識別する「状態遷移識別子」(以降"ID")、遷移元の状態識別子「遷移元」(以降"SRC")、遷移先の状態識別子「遷移先」(以降"DST")、状態遷移を引き起こしたメソッド(引数を含む)を表す「メソッド」(以降"FUN")、そしてメソッドの戻り値を表す「戻り値」(以降"RET")を、属性として持つ。状態遷移表の一例を以下に示す。例えば、1行目の状態遷移0は、状態0から状態1への遷移であり、void型のメソッド"yield 1"により、引き起こされたものである。

Figure 2009265996
The state transition table records all state transitions of the FSM. The state transition table contains a “state transition identifier” (hereinafter “ID”) that identifies the state transition, a transition state identifier “transition source” (hereinafter “SRC”), and a transition destination state identifier “transition destination” (hereinafter “ DST ")," method "(hereinafter" FUN ") indicating the method (including the argument) that caused the state transition, and" return value "(hereinafter" RET ") indicating the return value of the method as attributes. An example of the state transition table is shown below. For example, the state transition 0 in the first line is a transition from the state 0 to the state 1 and is caused by the void type method “yield 1”.
Figure 2009265996

図6は、図1のシステム状態検査装置による全体処理の流れを示すフローチャートである。   FIG. 6 is a flowchart showing the flow of overall processing by the system state inspection apparatus in FIG.

処理1(S101)では、検証条件入力手段11においてCTL式で記述された検証条件を取得する。
処理2(S102)では、構文解析手段12において、検証条件入力手段11により取得された検証条件を解析して構文木を生成する。検証条件「p⇒A(pUq)」(p, qは共に原子項)が取得された場合、生成される構文木は、図8の左側に示すようになる。
処理3(S103)では、構文解析手段12により生成された構文木をもとに、検証条件を検証するための、SQL形式の検索手続きを組み立てる。この処理は、検索手続き組立て手段13、原子項に関する検索文生成手段24、論理演算子に関する検索文生成手段25、時相演算子に関する検索文生成手段26において行われる。なお、手段21〜23、16は、本実施例1では用いられず、後述する他の実施例で用いられる。
処理4(S104)では、検索手続き実行手段15が、リレーショナルデータベース14を用いて、生成した検索手続き(SQL形式)を逐次実行し、検索結果として、検証条件を満たす全状態の集合を得る。
処理5(S105)では、検査結果出力手段17が、取得された検査結果(後述する検索結果表)を出力する。
In process 1 (S101), the verification condition described in the CTL expression is acquired by the verification condition input means 11.
In process 2 (S102), the syntax analysis unit 12 analyzes the verification condition acquired by the verification condition input unit 11, and generates a syntax tree. When the verification condition “p⇒A (pUq)” (p and q are both atomic terms) is acquired, the generated syntax tree is as shown on the left side of FIG.
In process 3 (S103), a search procedure in the SQL format for verifying the verification condition is assembled based on the syntax tree generated by the syntax analysis unit 12. This processing is performed in the search procedure assembly means 13, the search sentence generation means 24 for the atomic term, the search sentence generation means 25 for the logical operator, and the search sentence generation means 26 for the temporal operator. The means 21 to 23 and 16 are not used in the first embodiment, but are used in other embodiments described later.
In process 4 (S104), the search procedure execution means 15 sequentially executes the generated search procedure (SQL format) using the relational database 14, and obtains a set of all states satisfying the verification condition as a search result.
In process 5 (S105), the inspection result output means 17 outputs the acquired inspection result (a search result table described later).

以下、本実施例1の大きな特徴となる処理3(S103)の詳細について説明する。   Details of the process 3 (S103), which is a major feature of the first embodiment, will be described below.

図7は、図6の処理3(S103)(検索手続きの組み立て)の詳細な流れを示すフローチャートである。   FIG. 7 is a flowchart showing a detailed flow of process 3 (S103) (assembly of search procedure) in FIG.

処理3-1(S201)では、検索手続き組立て手段13が、構文木を用いて、検索計画を作成する。構文木のノードを葉からルートへ向けて階層が深いノードから順番に読み取り、各ノードに対応する論理式に関して演算子と引数情報(構文木の子ノード)とから構成される検索処理情報を、順番付きリスト(検索計画)の形で生成する。検索計画の一例を以下に示す。

Figure 2009265996
In process 3-1 (S201), the search procedure assembling means 13 creates a search plan using the syntax tree. Reads the nodes of the syntax tree from leaves to the root in order from the deepest node, and retrieves search processing information consisting of operators and argument information (child nodes of the syntax tree) for logical expressions corresponding to each node, Generate in the form of an ordered list (search plan). An example of a search plan is shown below.
Figure 2009265996

上記の検索計画は表形式で記述されている。表は「SRCHID」「論理式」「演算子」「引数」の属性から構成される。一つの検索処理が一行で表現され、検索処理ID(SRCHID)が若い順番(表の上部)に、SRCHIDに対応する検索処理が実行される。
「SRCHID」は各検索処理を識別する一意的な番号である。
「論理式」は検索処理で検証したい論理式を表す。
「演算子」は論理式に含まれる最も外側の演算子を表す。
「引数」は演算子の引数となる論理式のSRCHIDを表す。例えば、3行目の検索処理2(SRCHID2)は、引数p, qを取る演算子AUに関するものであり、引数として検索処理0, 1(SRCHID1,2)の結果を参照する。但し、論理式が原子項の場合は、引数として原子項自身が記述される。
The above search plan is described in tabular form. The table is composed of attributes of “SRCHID”, “logical expression”, “operator”, and “argument”. One search process is represented by one line, and the search process corresponding to SRCHID is executed in ascending order of search process ID (SRCHID) (upper part of the table).
“SRCHID” is a unique number for identifying each search process.
“Logical expression” represents a logical expression to be verified in the search process.
“Operator” represents the outermost operator included in the logical expression.
“Argument” represents SRCHID of a logical expression that is an argument of the operator. For example, search processing 2 (SRCHID2) on the third line relates to an operator AU that takes arguments p and q, and refers to the results of search processing 0 and 1 (SRCHID1, 2) as arguments. However, when the logical expression is an atomic term, the atomic term itself is described as an argument.

処理3-2(S202)では、検索手続き組立て手段13が、検索計画の重複処理を削除する。 検索計画において検索処理情報を上から順番に読み取り、論理式が重複する検索処理(IDが大きい方)を削除する。これと同時に、削除した検索処理を引数にしていた検索処理の引数を、削除した検索処理と重複する、IDが若い検索処理のIDで置換する。これは一般的なソーティングアルゴリズムを利用する事で実現可能である。重複処理削除後の検索計画の一例を以下に示す。SRCHID0,3の論理式が重複しているため、番号の高いSRCHID3の行が削除されている。

Figure 2009265996
In process 3-2 (S202), the search procedure assembling means 13 deletes the search plan duplication process. In the search plan, the search processing information is read in order from the top, and the search processing (with the larger ID) with overlapping logical expressions is deleted. At the same time, the argument of the search process that used the deleted search process as an argument is replaced with the ID of the search process with a lower ID that overlaps with the deleted search process. This can be realized by using a general sorting algorithm. An example of a search plan after deleting duplicate processing is shown below. Since the logical expressions of SRCHID0 and 3 are duplicated, the higher-numbered SRCHID3 row is deleted.
Figure 2009265996

処理3-3(S203〜S211)では、検索手続き組立て手段13、原子項に関する検索文生成手段24、論理演算子に関する検索文生成手段25、時相演算子に関する検索文生成手段26により、重複処理削除後の検索計画から、検索手続き(SQL形式)を作成する。重複処理削除後の検索計画において検索処理情報を上から順番に読み取り、各検索処理情報に関してSQL文を生成し、それらのSQL文を検索計画の順番に並べて検索手続きを生成する。生成されたSQL文は、検索処理情報で指定された論理式を充足する全状態を検索し、検索した状態を検索結果として検索結果表に出力するものである。   In process 3-3 (S203 to S211), the search procedure assembly means 13, the search sentence generation means 24 for the atomic term, the search sentence generation means 25 for the logical operator, and the search sentence generation means 26 for the temporal operator perform duplicate processing. Create a search procedure (SQL format) from the deleted search plan. In the search plan after deleting duplicate processing, the search processing information is read in order from the top, SQL statements are generated for each search processing information, and these SQL statements are arranged in the search plan order to generate a search procedure. The generated SQL sentence searches all states satisfying the logical expression specified by the search processing information, and outputs the searched state as a search result to the search result table.

より詳細に、検索計画において検索処理情報を読み取り、読み取った検索処理情報における論理式が原子項のときは(S204のYES)原子項に関する検索文生成手段24においてSQL文を生成し(処理3-3-1:S207)、論理演算子のときは(S205のYES)論理演算子に関する検索文生成手段25においてSQL文を生成し(処理3-3-2:S208)、時相演算子のときは(S206のYES)時相演算子に関する検索文生成手段26においてSQL文を生成する(処理3-3-3:S209)。各検索処理情報から生成されたSQL文は、生成順に先頭から並べられることにより検索手続き(SQL形式)が作成される(処理3-3-4:S210)。S204〜S210の処理は以下のように記述することができる。

for (検索処理情報 : 検索計画)
if (検索処理 == 原子項)
処理3-3-1: 原子項に関する検索文生成
if else (検索処理 == 論理演算子)
処理3-3-2: 論理演算子に関する検索文生成
if else (検索処理 == 時相演算子)
処理3-3-3: 時相演算子に関する検索文生成
処理3-3-4 検索手続きの末尾にSQL文を追加する。
More specifically, the search processing information is read in the search plan, and when the logical expression in the read search processing information is an atomic term (YES in S204), the search statement generation means 24 for the atomic term generates an SQL statement (processing 3- 3-1: S207), if it is a logical operator (YES in S205), the search statement generation means 25 for the logical operator generates an SQL statement (Process 3-3-2: S208), and if it is a temporal operator (YES in S206) The search statement generation means 26 relating to the temporal operator generates an SQL statement (processing 3-3-3: S209). A search procedure (SQL format) is created by arranging the SQL statements generated from each search processing information from the top in the generation order (processing 3-3-4: S210). The processing of S204 to S210 can be described as follows.

for (search processing information: search plan)
if (search process == atomic term)
Process 3-3-1: Search sentence generation for atomic terms
if else (search processing == logical operator)
Process 3-3-2: Search Statement Generation for Logical Operator
if else (search processing == temporal operator)
Process 3-3-3: Generating search statements for temporal operators
Process 3-3-4 Adds an SQL statement to the end of the search procedure.

以下処理3-3-1(S207)、処理3-3-2(S208)、処理3-3-3(S209)の詳細について説明する。   Details of processing 3-3-1 (S207), processing 3-2-2 (S208), and processing 3-3-3 (S209) will be described below.

処理3-3-1(S207)では、原子項に関する検索文生成手段24が、検証条件である「原子項」と、「出力先情報(RDB14の検索結果表の「SRCHID」を表す)」とを入力とし、原子項を充足する全状態を検索し、検索した状態を検索結果としてSRCHIID(検索結果ID)とともに検索結果表に書き込むための、SQL文を生成する。検索結果表はあらかじめRDB14内に用意されている。検索結果表における検索結果IDあるいはSRCHIDは、たとえば検索計画において当該検索処理情報に割り当てられていたSRCHIDである。SQL文は、以下の生成規則によって生成される。s.idは検索された状態のIDを表す。

入力
原子項: p
出力先情報: OutID(検索結果表のSRCHID)
出力:
### SQL文開始 ### ※ p, OutIDを入力値で置換して出力する。
INSERT INTO Result
SELECT OutID, s.id FROM State s
WHERE p;
### SQL文終了 ###
In process 3-3-1 (S207), the search statement generation means 24 regarding the atomic term includes “atomic term” as the verification condition, “output destination information (represents“ SRCHID ”in the search result table of RDB 14)”, Is used as an input, and all states satisfying the atomic term are searched, and an SQL statement is generated to write the searched state as a search result in the search result table together with SRCHIID (search result ID). The search result table is prepared in the RDB 14 in advance. The search result ID or SRCHID in the search result table is, for example, the SRCHID assigned to the search processing information in the search plan. An SQL statement is generated according to the following generation rule. s.id represents the ID of the searched state.

Input Atomic term: p
Output destination information: OutID (SRCHID of search result table)
output:
### Start SQL statement ### * Replace p, OutID with the input value and output.
INSERT INTO Result
SELECT OutID, s.id FROM State s
WHERE p;
### SQL statement end ###

ここで検索結果表(以降"Result"と記述することもある)は、検索結果を保持するテーブルである。Resultは、各検索処理を識別する「検索処理ID」("SRCHID")と検索結果の「状態識別子」("STATE"。StateのIDを示す)を属性として持つ。検索処理の結果複数の状態が該当した場合、その状態数分の行数が追加される。例えば下記のResultでは、検索処理"SRCHID=0"の検索結果は、状態{0, 2, 3}である。

Figure 2009265996
Here, the search result table (hereinafter sometimes referred to as “Result”) is a table that holds search results. “Result” has “search process ID” (“SRCHID”) for identifying each search process and “state identifier” (“STATE”, indicating the ID of State) of the search result as attributes. As a result of the search process, if multiple states are applicable, the number of rows corresponding to the number of states is added. For example, in the following Result, the search result of the search process “SRCHID = 0” is the state {0, 2, 3}.
Figure 2009265996

処理3-3-2(S208)では、論理演算子に関する検索文生成手段25が、論理演算の入力を示す「参照元情報(引数)」と、論理演算結果の出力先を示す「出力先情報(検索結果IDあるいはSRCHID)」とを入力とし、参照元情報を参照しながら、論理演算子による論理式を充足する全状態を検索し、検索した状態を検索結果としてSRCHIID(検索結果ID)とともに検索結果表に出力するための、SQL文を生成する。SQL文は、論理演算子種別毎に決められた生成規則によって生成される。以下に、その生成規則を説明する。Φ、Ψは論理演算子が作用する論理式とする。

論理演算子1: ¬Φ (否定)
入力
参照元情報: InID (Φに対応する)
出力先情報: OutID
出力:
### SQL文開始 ### ※ InID, OutIDを入力値で置換して出力する。
INSERT INTO Result
SELECT OutID, s.id FROM State s
WHERE s.id NOT IN (
SELECT r.state FROM Result r
WHERE r.srchid = InID);
### SQL文終了 ###


論理演算子2: Φ∨Ψ (または)
入力
参照元情報: InID1, InID2 (それぞれΦとΨに対応する)
出力先情報: OutID
出力:
### SQL文開始 ### ※ InID1, InID2, OutIDを入力値で置換して出力する。
INSERT INTO Result
SELECT OutID, s.id FROM State s
WHERE
s.id IN (
SELECT r.state FROM Result r
WHERE r.srchid = InID1)
OR
s.id IN (
SELECT r.state FROM Result r
WHERE r.srchid = InID2);
### SQL文終了 ###


論理演算子3: Φ∧Ψ (かつ)
入力
参照元情報: InID1, InID2 (それぞれΦとΨに対応する)
出力先情報: OutID
出力:
### SQL文開始 ### ※ InID1, InID2, OutIDを入力値で置換して出力する。
INSERT INTO Result
SELECT OutID, s.id FROM State s
WHERE
s.id IN (
SELECT r.state FROM Result r
WHERE r.srchid = InID1)
AND
s.id IN (
SELECT r.state FROM Result r
WHERE r.srchid = InID2);
### SQL文終了 ###


論理演算子4: Φ⇒Ψ (ならば)
入力
参照元情報: InID1, InID2 (それぞれΦとΨに対応する)
出力先情報: OutID
出力:
### SQL文開始 ### ※ InID1, InID2, OutIDを入力値で置換して出力する。
INSERT INTO Result
SELECT OutID, s.id FROM State s
WHERE
s.id NOT IN (
SELECT r.state FROM Result r
WHERE r.srchid = InID1)
OR
s.id IN (
SELECT r.state FROM Result r
WHERE r.srchid = InID2);
### SQL文終了 ###


論理演算子5: Φ⇔Ψ (⇔)
入力
参照元情報: InID1, InID2 (それぞれΦとΨに対応する)
出力先情報: OutID
出力:
### SQL文開始 ### ※ InID1, InID2, OutIDを入力値で置換して出力する。
INSERT INTO Result
SELECT OutID, s.id FROM State s
WHERE
( s.id IN (
SELECT r.state FROM Result r
WHERE r.srchid = InID1)
OR
s.id NOT IN (
SELECT r.state FROM Result r
WHERE r.srchid = InID2))
AND
( s.id NOT IN (
SELECT r.state FROM Result r
WHERE r.srchid = InID1)
AND
s.id IN (
SELECT r.state FROM Result r
WHERE r.srchid = InID2))
### SQL文終了 ###
In process 3-3-2 (S208), the search statement generation means 25 relating to the logical operator performs "reference source information (argument)" indicating the input of the logical operation and "output destination information" indicating the output destination of the logical operation result (Search result ID or SRCHID) "as input, search all the states satisfying the logical expression by the logical operator while referring to the referrer information, and use the searched state as the search result and SRCHIID (search result ID) Generate SQL statement to output to the search result table. The SQL statement is generated according to a generation rule determined for each logical operator type. Below, the production | generation rule is demonstrated. Φ and Ψ are logical expressions on which logical operators operate.

Logical operator 1: ¬Φ (negation)
input
Reference source information: InID (corresponding to Φ)
Output destination information: OutID
output:
### Start SQL statement ### * Replace InID and OutID with input values and output.
INSERT INTO Result
SELECT OutID, s.id FROM State s
WHERE s.id NOT IN (
SELECT r.state FROM Result r
WHERE r.srchid = InID);
### SQL statement end ###


Logical operator 2: Φ∨Ψ (or)
input
Reference source information: InID1, InID2 (corresponding to Φ and Ψ, respectively)
Output destination information: OutID
output:
### Start SQL statement ### * Replace InID1, InID2, and OutID with input values and output.
INSERT INTO Result
SELECT OutID, s.id FROM State s
WHERE
s.id IN (
SELECT r.state FROM Result r
WHERE r.srchid = InID1)
OR
s.id IN (
SELECT r.state FROM Result r
WHERE r.srchid = InID2);
### SQL statement end ###


Logical operator 3: Φ∧Ψ (and)
input
Reference source information: InID1, InID2 (corresponding to Φ and Ψ, respectively)
Output destination information: OutID
output:
### Start SQL statement ### * Replace InID1, InID2, and OutID with input values and output.
INSERT INTO Result
SELECT OutID, s.id FROM State s
WHERE
s.id IN (
SELECT r.state FROM Result r
WHERE r.srchid = InID1)
AND
s.id IN (
SELECT r.state FROM Result r
WHERE r.srchid = InID2);
### SQL statement end ###


Logical operator 4: Φ⇒Ψ (if)
input
Reference source information: InID1, InID2 (corresponding to Φ and Ψ, respectively)
Output destination information: OutID
output:
### Start SQL statement ### * Replace InID1, InID2, and OutID with input values and output.
INSERT INTO Result
SELECT OutID, s.id FROM State s
WHERE
s.id NOT IN (
SELECT r.state FROM Result r
WHERE r.srchid = InID1)
OR
s.id IN (
SELECT r.state FROM Result r
WHERE r.srchid = InID2);
### SQL statement end ###


Logical operator 5: Φ⇔Ψ (⇔)
input
Reference source information: InID1, InID2 (corresponding to Φ and Ψ, respectively)
Output destination information: OutID
output:
### Start SQL statement ### * Replace InID1, InID2, and OutID with input values and output.
INSERT INTO Result
SELECT OutID, s.id FROM State s
WHERE
(s.id IN (
SELECT r.state FROM Result r
WHERE r.srchid = InID1)
OR
s.id NOT IN (
SELECT r.state FROM Result r
WHERE r.srchid = InID2))
AND
(s.id NOT IN (
SELECT r.state FROM Result r
WHERE r.srchid = InID1)
AND
s.id IN (
SELECT r.state FROM Result r
WHERE r.srchid = InID2))
### SQL statement end ###

処理3-3-3(S209)では、時相演算子に関する検索文生成手段26が、参照元情報(引数)を参照しながら、時相演算子により論理式を充足する全状態を検索し、検索した状態を検索結果としてSRCHID(検索結果ID)とともに検索結果表に出力するための、SQL文を生成する。時相演算子も論理演算子同様に、時相演算子種別毎に決められた生成規則によって生成される。以下に、その生成規則を説明する。入力や出力に関する規則は論理演算子の規則と同様である。   In process 3-3-3 (S209), the search statement generation means 26 relating to the temporal operator searches all states satisfying the logical expression by the temporal operator while referring to the reference source information (argument), An SQL statement is generated to output the searched state as a search result together with SRCHID (search result ID) to the search result table. Similarly to the logical operator, the temporal operator is generated according to a generation rule determined for each temporal operator type. Below, the production | generation rule is demonstrated. The rules for input and output are the same as the rules for logical operators.

ただし、次のことに注意する。 不動点計算を含む処理(AX, EX以外全て)は、検索処理のループを含む。SQLをベースとした手続きの記述体系は、PL/SQL等を代表に幾つか存在する。以下の例はPL/SQLで記述しているが、それに依存しない。ループと条件によるループの終了が記述可能な体系であれば何でも良い。

時相演算子1: AXΦ
入力
参照元情報: InID (Φに対応する)
出力先情報: OutID
出力:
### SQL文開始 ### ※ InID, OutIDを入力値で置換して出力する。
INSERT INTO Result
SELECT OutID, s.id FROM State s
WHERE
EXISTS (
SELECT * FROM Trans t
WHERE s.id = t.src
) AND (
NOT EXISTS (
SELECT * FROM Trans t
WHERE
s.id = t.src
AND
t.dst NOT IN (
SELECT r.state FROM Result r
WHERE r.srchid = InID
)
);
### SQL文終了 ###


時相演算子2: EXΦ
入力
参照元情報: InID (Φに対応する)
出力先情報: OutID
出力:
### SQL文開始 ### ※ InID, OutIDを入力値で置換して出力する。
INSERT INTO Result
SELECT OutID, s.id FROM State s
WHERE EXISTS (
SELECT * FROM Trans t
WHERE
s.id = t.src
AND
t.dst IN (
SELECT r.state FROM Result r
WHERE r.srchid = InID)
);
### SQL文終了 ###


時相演算子3: AGΦ (最大不動点)
入力
参照元情報: InID (Φに対応する)
出力先情報: OutID
出力:
### SQL文開始 ### ※ InID, OutIDを入力値で置換して出力する。
INSERT INTO Result
SELECT OutID, s.id FROM State s
WHERE s.id in (
SELECT r.state FROM Result r
WHERE r.srchid = InID);

## 最大不動点計算 (削除される状態が無くなるまで繰り返す)
# 現在のサイズ
size = SELECT COUNT(*) FROM Result WHERE id = OutID;
# 一つ前のサイズ
size_prev;

LOOP # ループ開始
# 一つ前のサイズへ代入
size_prev = size;

# 削除操作
DELETE FROM Result r
WHERE
r.srchid = OutID
AND
EXISTS (
SELECT * FROM Trans t
WHERE (
r.state = t.src
) AND (
t.dst NOT IN (
SELECT r.state FROM Result r
WHERE r.srchid = OutID
)
);

# 削除後のサイズ
size = SELECT COUNT(*) FROM Result WHERE id = OutID;

# 削除前後でサイズが同じ時、ループ終了
EXIT WHEN size == size_prev;

# ループ終了
END LOOP;
### SQL文終了 ###


時相演算子4: EGΦ : 最大不動点
入力
参照元情報: InID (Φに対応する)
出力先情報: OutID
出力:
### SQL文開始 ### ※ InID, OutIDを入力値で置換して出力する。
INSERT INTO Result
SELECT OutID, s.id FROM State s
WHERE s.id in (
SELECT r.state FROM Result r
WHERE r.srchid = InID);

## 最大不動点計算 (削除される状態が無くなるまで繰り返す)
# 現在のサイズ
size = SELECT COUNT(*) FROM Result WHERE id = OutID;
# 一つ前のサイズ
size_prev;

LOOP # ループ開始
# 一つ前のサイズへ代入
size_prev = size;

# 削除操作
DELETE FROM Result r
WHERE
r.srchid = OutID
AND
EXISTS (
SELECT * FROM Trans t
WHERE r.state = t.src
) AND (
NOT EXISTS (
SELECT * FROM Trans t
WHERE (
r.state = t.src
) AND (
t.dst in (
SELECT r.state FROM Result r
WHERE r.srchid = OutID
)
)
)
);

# 削除後のサイズ
size = SELECT COUNT(*) FROM Result WHERE id = OutID;

# 削除前後でサイズが同じ時、ループ終了
EXIT WHEN size == size_prev;

# ループ終了
END LOOP;
### SQL文終了 ###


時相演算子5: AFΦ : 最小不動点
入力
参照元情報: InID (Φに対応する)
出力先情報: OutID
出力:
### SQL文開始 ### ※ InID, OutIDを入力値で置換して出力する。
INSERT INTO Result
SELECT OutID, s.id FROM State s
WHERE s.id in (
SELECT r.state FROM Result r
WHERE r.srchid = InID);

## 最小不動点計算 (追加される状態が無くなるまで繰り返す)
# 現在のサイズ
size = SELECT COUNT(*) FROM Result WHERE id = OutID;
# 一つ前のサイズ
size_prev;

LOOP # ループ開始
# 一つ前のサイズへ代入
size_prev = size;

# 追加操作
INSERT INTO Result
SELECT OutID, s.id FROM State s
WHERE (
EXISTS (
SELECT * FROM Trans t
WHERE s.id = t.src)
) AND (
NOT EXISTS (
SELECT * FROM Trans t
WHERE
s.id = t.src
AND
t.dst NOT IN (
SELECT r.state FROM Result r
WHERE r.srchid = OutID
)
)
);

# 追加後のサイズ
size = SELECT COUNT(*) FROM Result WHERE id = OutID;

# 追加前後でサイズが同じ時、ループ終了
EXIT WHEN size == size_prev;

# ループ終了
END LOOP;
### SQL文終了 ###


時相演算子6: EFΦ : 最小不動点
入力
参照元情報: InID (Φに対応する)
出力先情報: OutID
出力:
### SQL文開始 ### ※ InID, OutIDを入力値で置換して出力する。
INSERT INTO Result
SELECT OutID, s.id FROM State s
WHERE s.id in (
SELECT r.state FROM Result r
WHERE r.srchid = InID);

## 最小不動点計算 (追加される状態が無くなるまで繰り返す)
# 現在のサイズ
size = SELECT COUNT(*) FROM Result WHERE id = OutID;
# 一つ前のサイズ
size_prev;

LOOP # ループ開始
# 一つ前のサイズへ代入
size_prev = size;

# 追加操作
INSERT INTO Result
SELECT OutID, s.id FROM State s
WHERE EXISTS (
SELECT * FROM Trans t
WHERE (
t.src=s.id
) AND (
t.dst in (
SELECT r.state FROM Result r
WHERE r.srchid = OutID
)
)
);

# 追加後のサイズ
size = SELECT COUNT(*) FROM Result WHERE id = OutID;

# 追加前後でサイズが同じ時、ループ終了
EXIT WHEN size == size_prev;

# ループ終了
END LOOP;
### SQL文終了 ###


時相演算子7: A(Φ U Ψ) : 最小不動点
入力
参照元情報: InID1, InID2 (それぞれΦとΨに対応する)
出力先情報: OutID
出力:
### SQL文開始 ### ※ InID1, InID2, OutIDを入力値で置換して出力する。
INSERT INTO Result
SELECT OutID, s.id FROM State s
WHERE s.id in (
SELECT r.state FROM Result r
WHERE r.srchid = InID2);

## 最小不動点計算 (追加される状態が無くなるまで繰り返す)
# 現在のサイズ
size = SELECT COUNT(*) FROM Result WHERE id = OutID;
# 一つ前のサイズ
size_prev;

LOOP # ループ開始
# 一つ前のサイズへ代入
size_prev = size;

# 追加操作
INSERT INTO Result
SELECT OutID, s.state FROM Result s
WHERE (
s.id = InID1
) AND (
EXISTS (
SELECT * FROM Trans t
WHERE s.id = t.src)
) AND (
NOT EXISTS (
SELECT * FROM Trans t
WHERE
s.id = t.src
AND
t.dst NOT IN (
SELECT r.state FROM Result r
WHERE r.srchid = OutID
)
)
);

# 追加後のサイズ
size = SELECT COUNT(*) FROM Result WHERE id = OutID;

# 追加前後でサイズが同じ時、ループ終了
EXIT WHEN size == size_prev;

# ループ終了
END LOOP;
### SQL文終了 ###


時相演算子8: E(Φ U Ψ) : 最小不動点
入力
参照元情報: InID1, InID2 (それぞれΦとΨに対応する)
出力先情報: OutID
出力:
### SQL文開始 ### ※ InID1, InID2, OutIDを入力値で置換して出力する。
INSERT INTO Result
SELECT OutID, s.id FROM State s
WHERE s.id in (
SELECT r.state FROM Result r
WHERE r.srchid = InID2);

## 最小不動点計算 (追加される状態が無くなるまで繰り返す)
# 現在のサイズ
size = SELECT COUNT(*) FROM Result WHERE id = OutID;
# 一つ前のサイズ
size_prev;

LOOP # ループ開始
# 一つ前のサイズへ代入
size_prev = size;

# 追加操作
INSERT INTO Result
SELECT OutID, s.state FROM Result s
WHERE (
s.id = InID1
) AND (
EXISTS (
SELECT * FROM Trans t
WHERE (
t.src=s.state
) AND (
t.dst in (
SELECT r.state FROM Result r
WHERE r.srchid = OutID
)
)
)
);

# 追加後のサイズ
size = SELECT COUNT(*) FROM Result WHERE id = OutID;

# 追加前後でサイズが同じ時、ループ終了
EXIT WHEN size == size_prev;

# ループ終了
END LOOP;
### SQL文終了 ###


時相演算子9: A(Φ W Ψ) : 最大不動点
入力
参照元情報: InID1, InID2 (それぞれΦとΨに対応する)
出力先情報: OutID
出力:
### SQL文開始 ### ※ InID1, InID2, OutIDを入力値で置換して出力する。
INSERT INTO Result
SELECT OutID, s.id FROM State s
WHERE s.id in (
SELECT r.state FROM Result r
WHERE r.srchid = InID1);

## 最大不動点計算 (削除される状態が無くなるまで繰り返す)
# 現在のサイズ
size = SELECT COUNT(*) FROM Result WHERE id = OutID;
# 一つ前のサイズ
size_prev;

LOOP # ループ開始
# 一つ前のサイズへ代入
size_prev = size;

# 削除操作
DELETE FROM Result r
WHERE
r.srchid = OutID
AND
EXISTS (
SELECT * FROM Trans t
WHERE (
r.state = t.src
) AND (
t.dst NOT IN (
SELECT r.state FROM Result r
WHERE r.srchid = OutID OR r.srchid = InID1
)
)
);

# 追加後のサイズ
size = SELECT COUNT(*) FROM Result WHERE id = OutID;

# 追加前後でサイズが同じ時、ループ終了
EXIT WHEN size == size_prev;

# ループ終了
END LOOP;
### SQL文終了 ###


時相演算子10: E(Φ W Ψ) : 最大不動点
入力
参照元情報: InID1, InID2 (それぞれΦとΨに対応する)
出力先情報: OutID
出力:
### SQL文開始 ### ※ InID1, InID2, OutIDを入力値で置換して出力する。
INSERT INTO Result
SELECT OutID, s.id FROM State s
WHERE s.id in (
SELECT r.state FROM Result r
WHERE r.srchid = InID1);

## 最大不動点計算 (削除される状態が無くなるまで繰り返す)
# 現在のサイズ
size = SELECT COUNT(*) FROM Result WHERE id = OutID;
# 一つ前のサイズ
size_prev;

LOOP # ループ開始
# 一つ前のサイズへ代入
size_prev = size;

# 削除操作
DELETE FROM Result r
WHERE
r.srchid = OutID
AND
NOT EXISTS (
SELECT * FROM Trans t
WHERE (
r.state = t.src
) AND (
t.dst IN (
SELECT r.state FROM Result r
WHERE r.srchid = OutID OR r.srchid = InID1
)
)
);

# 追加後のサイズ
size = SELECT COUNT(*) FROM Result WHERE id = OutID;

# 追加前後でサイズが同じ時、ループ終了
EXIT WHEN size == size_prev;

# ループ終了
END LOOP;
### SQL文終了 ###
以上、図6の処理3(S103)の詳細について説明した。
However, note the following. Processing including calculation of fixed points (all except AX and EX) includes a search processing loop. There are several SQL-based procedure description systems, mainly PL / SQL. The following example is written in PL / SQL, but does not depend on it. Any system that can describe the end of a loop by a loop and a condition is acceptable.

Temporal operator 1: AXΦ
input
Reference source information: InID (corresponding to Φ)
Output destination information: OutID
output:
### Start SQL statement ### * Replace InID and OutID with input values and output.
INSERT INTO Result
SELECT OutID, s.id FROM State s
WHERE
EXISTS (
SELECT * FROM Trans t
WHERE s.id = t.src
) AND (
NOT EXISTS (
SELECT * FROM Trans t
WHERE
s.id = t.src
AND
t.dst NOT IN (
SELECT r.state FROM Result r
WHERE r.srchid = InID
)
);
### SQL statement end ###


Temporal operator 2: EXΦ
input
Reference source information: InID (corresponding to Φ)
Output destination information: OutID
output:
### Start SQL statement ### * Replace InID and OutID with input values and output.
INSERT INTO Result
SELECT OutID, s.id FROM State s
WHERE EXISTS (
SELECT * FROM Trans t
WHERE
s.id = t.src
AND
t.dst IN (
SELECT r.state FROM Result r
WHERE r.srchid = InID)
);
### SQL statement end ###


Temporal operator 3: AGΦ (maximum fixed point)
input
Reference source information: InID (corresponding to Φ)
Output destination information: OutID
output:
### Start SQL statement ### * Replace InID and OutID with input values and output.
INSERT INTO Result
SELECT OutID, s.id FROM State s
WHERE s.id in (
SELECT r.state FROM Result r
WHERE r.srchid = InID);

## Maximum fixed point calculation (Repeat until there is no state to be deleted)
# Current size
size = SELECT COUNT (*) FROM Result WHERE id = OutID;
# Previous size
size_prev;

LOOP # Loop start
# Assign to previous size
size_prev = size;

# Delete operation
DELETE FROM Result r
WHERE
r.srchid = OutID
AND
EXISTS (
SELECT * FROM Trans t
WHERE (
r.state = t.src
) AND (
t.dst NOT IN (
SELECT r.state FROM Result r
WHERE r.srchid = OutID
)
);

# Size after deletion
size = SELECT COUNT (*) FROM Result WHERE id = OutID;

# End loop when size is same before and after deletion
EXIT WHEN size == size_prev;

# End loop
END LOOP;
### SQL statement end ###


Temporal operator 4: EGΦ: Maximum fixed point input
Reference source information: InID (corresponding to Φ)
Output destination information: OutID
output:
### Start SQL statement ### * Replace InID and OutID with input values and output.
INSERT INTO Result
SELECT OutID, s.id FROM State s
WHERE s.id in (
SELECT r.state FROM Result r
WHERE r.srchid = InID);

## Maximum fixed point calculation (Repeat until there is no state to be deleted)
# Current size
size = SELECT COUNT (*) FROM Result WHERE id = OutID;
# Previous size
size_prev;

LOOP # Loop start
# Assign to previous size
size_prev = size;

# Delete operation
DELETE FROM Result r
WHERE
r.srchid = OutID
AND
EXISTS (
SELECT * FROM Trans t
WHERE r.state = t.src
) AND (
NOT EXISTS (
SELECT * FROM Trans t
WHERE (
r.state = t.src
) AND (
t.dst in (
SELECT r.state FROM Result r
WHERE r.srchid = OutID
)
)
)
);

# Size after deletion
size = SELECT COUNT (*) FROM Result WHERE id = OutID;

# End loop when size is same before and after deletion
EXIT WHEN size == size_prev;

# End loop
END LOOP;
### SQL statement end ###


Temporal operator 5: AFΦ: Minimum fixed point input
Reference source information: InID (corresponding to Φ)
Output destination information: OutID
output:
### Start SQL statement ### * Replace InID and OutID with input values and output.
INSERT INTO Result
SELECT OutID, s.id FROM State s
WHERE s.id in (
SELECT r.state FROM Result r
WHERE r.srchid = InID);

## Minimum fixed point calculation (Repeat until there are no additional states)
# Current size
size = SELECT COUNT (*) FROM Result WHERE id = OutID;
# Previous size
size_prev;

LOOP # Loop start
# Assign to previous size
size_prev = size;

# Add operation
INSERT INTO Result
SELECT OutID, s.id FROM State s
WHERE (
EXISTS (
SELECT * FROM Trans t
WHERE s.id = t.src)
) AND (
NOT EXISTS (
SELECT * FROM Trans t
WHERE
s.id = t.src
AND
t.dst NOT IN (
SELECT r.state FROM Result r
WHERE r.srchid = OutID
)
)
);

# Size after addition
size = SELECT COUNT (*) FROM Result WHERE id = OutID;

# Loop end when size is the same before and after addition
EXIT WHEN size == size_prev;

# End loop
END LOOP;
### SQL statement end ###


Temporal operator 6: EFΦ: Minimum fixed point input
Reference source information: InID (corresponding to Φ)
Output destination information: OutID
output:
### Start SQL statement ### * Replace InID and OutID with input values and output.
INSERT INTO Result
SELECT OutID, s.id FROM State s
WHERE s.id in (
SELECT r.state FROM Result r
WHERE r.srchid = InID);

## Minimum fixed point calculation (Repeat until there are no additional states)
# Current size
size = SELECT COUNT (*) FROM Result WHERE id = OutID;
# Previous size
size_prev;

LOOP # Loop start
# Assign to previous size
size_prev = size;

# Add operation
INSERT INTO Result
SELECT OutID, s.id FROM State s
WHERE EXISTS (
SELECT * FROM Trans t
WHERE (
t.src = s.id
) AND (
t.dst in (
SELECT r.state FROM Result r
WHERE r.srchid = OutID
)
)
);

# Size after addition
size = SELECT COUNT (*) FROM Result WHERE id = OutID;

# Loop end when size is the same before and after addition
EXIT WHEN size == size_prev;

# End loop
END LOOP;
### SQL statement end ###


Temporal operator 7: A (Φ U Ψ): Minimum fixed point input
Reference source information: InID1, InID2 (corresponding to Φ and Ψ, respectively)
Output destination information: OutID
output:
### Start SQL statement ### * Replace InID1, InID2, and OutID with input values and output.
INSERT INTO Result
SELECT OutID, s.id FROM State s
WHERE s.id in (
SELECT r.state FROM Result r
WHERE r.srchid = InID2);

## Minimum fixed point calculation (Repeat until there are no additional states)
# Current size
size = SELECT COUNT (*) FROM Result WHERE id = OutID;
# Previous size
size_prev;

LOOP # Loop start
# Assign to previous size
size_prev = size;

# Add operation
INSERT INTO Result
SELECT OutID, s.state FROM Result s
WHERE (
s.id = InID1
) AND (
EXISTS (
SELECT * FROM Trans t
WHERE s.id = t.src)
) AND (
NOT EXISTS (
SELECT * FROM Trans t
WHERE
s.id = t.src
AND
t.dst NOT IN (
SELECT r.state FROM Result r
WHERE r.srchid = OutID
)
)
);

# Size after addition
size = SELECT COUNT (*) FROM Result WHERE id = OutID;

# Loop end when size is the same before and after addition
EXIT WHEN size == size_prev;

# End loop
END LOOP;
### SQL statement end ###


Temporal operator 8: E (Φ U Ψ): Minimum fixed point input
Reference source information: InID1, InID2 (corresponding to Φ and Ψ, respectively)
Output destination information: OutID
output:
### Start SQL statement ### * Replace InID1, InID2, and OutID with input values and output.
INSERT INTO Result
SELECT OutID, s.id FROM State s
WHERE s.id in (
SELECT r.state FROM Result r
WHERE r.srchid = InID2);

## Minimum fixed point calculation (Repeat until there are no additional states)
# Current size
size = SELECT COUNT (*) FROM Result WHERE id = OutID;
# Previous size
size_prev;

LOOP # Loop start
# Assign to previous size
size_prev = size;

# Add operation
INSERT INTO Result
SELECT OutID, s.state FROM Result s
WHERE (
s.id = InID1
) AND (
EXISTS (
SELECT * FROM Trans t
WHERE (
t.src = s.state
) AND (
t.dst in (
SELECT r.state FROM Result r
WHERE r.srchid = OutID
)
)
)
);

# Size after addition
size = SELECT COUNT (*) FROM Result WHERE id = OutID;

# Loop end when size is the same before and after addition
EXIT WHEN size == size_prev;

# End loop
END LOOP;
### SQL statement end ###


Temporal operator 9: A (Φ W Ψ): Maximum fixed point input
Reference source information: InID1, InID2 (corresponding to Φ and Ψ, respectively)
Output destination information: OutID
output:
### Start SQL statement ### * Replace InID1, InID2, and OutID with input values and output.
INSERT INTO Result
SELECT OutID, s.id FROM State s
WHERE s.id in (
SELECT r.state FROM Result r
WHERE r.srchid = InID1);

## Maximum fixed point calculation (Repeat until there is no state to be deleted)
# Current size
size = SELECT COUNT (*) FROM Result WHERE id = OutID;
# Previous size
size_prev;

LOOP # Loop start
# Assign to previous size
size_prev = size;

# Delete operation
DELETE FROM Result r
WHERE
r.srchid = OutID
AND
EXISTS (
SELECT * FROM Trans t
WHERE (
r.state = t.src
) AND (
t.dst NOT IN (
SELECT r.state FROM Result r
WHERE r.srchid = OutID OR r.srchid = InID1
)
)
);

# Size after addition
size = SELECT COUNT (*) FROM Result WHERE id = OutID;

# Loop end when size is the same before and after addition
EXIT WHEN size == size_prev;

# End loop
END LOOP;
### SQL statement end ###


Temporal operator 10: E (Φ W Ψ): Maximum fixed point input
Reference source information: InID1, InID2 (corresponding to Φ and Ψ, respectively)
Output destination information: OutID
output:
### Start SQL statement ### * Replace InID1, InID2, and OutID with input values and output.
INSERT INTO Result
SELECT OutID, s.id FROM State s
WHERE s.id in (
SELECT r.state FROM Result r
WHERE r.srchid = InID1);

## Maximum fixed point calculation (Repeat until there is no state to be deleted)
# Current size
size = SELECT COUNT (*) FROM Result WHERE id = OutID;
# Previous size
size_prev;

LOOP # Loop start
# Assign to previous size
size_prev = size;

# Delete operation
DELETE FROM Result r
WHERE
r.srchid = OutID
AND
NOT EXISTS (
SELECT * FROM Trans t
WHERE (
r.state = t.src
) AND (
t.dst IN (
SELECT r.state FROM Result r
WHERE r.srchid = OutID OR r.srchid = InID1
)
)
);

# Size after addition
size = SELECT COUNT (*) FROM Result WHERE id = OutID;

# Loop end when size is the same before and after addition
EXIT WHEN size == size_prev;

# End loop
END LOOP;
### SQL statement end ###
The details of the process 3 (S103) in FIG. 6 have been described above.

以下、具体例として、検証条件「p⇒A(pUq)」(p, qは共に原子項)が与えられた場合を想定して、本実施例1の処理の流れを示す。   Hereinafter, as a specific example, the processing flow of the first embodiment is shown assuming that the verification condition “p → A (pUq)” (p and q are both atomic terms) is given.

Step1:図6の処理1(S101)により、検証条件(CTL式)として、以下を取得する。
検証条件"p⇒A(pUq)" (但しp, qは共に原子項)
Step 1: Through the process 1 (S101) in FIG. 6, the following is acquired as the verification condition (CTL expression).
Verification condition "p⇒A (pUq)" (p and q are both atomic terms)

Step2 :図6の処理2(S102)により、検証条件を解析して構文木を生成する。ここでは図8の左側に示す構文木が生成される。 Step2: By processing 2 (S102) in FIG. 6, the verification condition is analyzed and a syntax tree is generated. Here, the syntax tree shown on the left side of FIG. 8 is generated.

以下、図6の処理3(S103)により、検索手続きを組み立てる Hereinafter, the search procedure is assembled by processing 3 (S103) in FIG.

Step3:処理3-1(図7のS201)により検索計画を作成すると以下のようになる。

Figure 2009265996
Step3: When a search plan is created by process 3-1 (S201 in FIG. 7), it is as follows.
Figure 2009265996

Step4:処理3-2(図7のS202)により検索計画における重複処理を削除すると以下のようになる。処理3-1(S201)で得られた検索計画における3行目が削除されている。

Figure 2009265996
Step4: When duplicate processing in the search plan is deleted by processing 3-2 (S202 in FIG. 7), the result is as follows. The third line in the search plan obtained in process 3-1 (S201) is deleted.
Figure 2009265996

以下、Step4で得られた重複処理削除後の検索計画を用いて、処理3-3(図7のS203〜S211)により、検索手続きの作成を行う。図8の右側に、構文木と、本処理3-3で生成される検索手続き(SQL手続き)との対応関係を表す。以下、本処理3-3の詳細を示す。   Hereinafter, a search procedure is created by the process 3-3 (S203 to S211 in FIG. 7) using the search plan after deleting the duplicate process obtained in Step 4. The right side of FIG. 8 shows the correspondence between the syntax tree and the search procedure (SQL procedure) generated in this process 3-3. Details of this process 3-3 will be described below.

Step5:処理3-3-1(図7のS207)により、原子項pに関する検索文を生成する。出力先情報は、"SRCHID 0"とする。以下に生成された検索文(SQL手続1)を示す。
### SQL文開始 ###
INSERT INTO Result
SELECT 0, s.id FROM State s
WHERE p;
### SQL文終了 ###
Step 5: A search sentence related to the atomic term p is generated by the process 3-3-1 (S207 in FIG. 7). The output destination information is “SRCHID 0”. The generated search statement (SQL procedure 1) is shown below.
### Start SQL statement ###
INSERT INTO Result
SELECT 0, s.id FROM State s
WHERE p;
### SQL statement end ###

Step6:処理3-3-1(図7のS207)により、原子項qに関する検索文を生成する。出力先情報は、"SRCHID 1"とする。以下に、生成された検索文(SQL手続き2)を示す。
### SQL文開始 ###
INSERT INTO Result
SELECT 1, s.id FROM State s
WHERE q;
### SQL文終了 ###
Step 6: A search sentence related to the atomic term q is generated by the process 3-3-1 (S207 in FIG. 7). The output destination information is “SRCHID 1”. The generated search statement (SQL procedure 2) is shown below.
### Start SQL statement ###
INSERT INTO Result
SELECT 1, s.id FROM State s
WHERE q;
### SQL statement end ###

Step7:処理3-3-3(図7のS209)により、時相演算子AUに関する検索文を生成する。出力先情報は、"SRCHID 2"とする。以下に、生成された検索文(SQL手続き3)を示す。
### SQL文開始 ###
INSERT INTO Result
SELECT 2, s.id FROM State s
WHERE s.id in (
SELECT r.state FROM Result r
WHERE r.srchid = 1);

## 最小不動点計算 (追加される状態が無くなるまで繰り返す)
# 現在のサイズ
size = SELECT COUNT(*) FROM Result WHERE id = 2;
# 一つ前のサイズ
size_prev;

LOOP # ループ開始
# 一つ前のサイズへ代入
size_prev = size;

# 追加操作
INSERT INTO Result
SELECT 2, s.state FROM Result s
WHERE (
s.id = 0
) AND (
EXISTS (
SELECT * FROM Trans t
WHERE s.id = t.src)
) AND (
NOT EXISTS (
SELECT * FROM Trans t
WHERE
s.id = t.src
AND
t.dst NOT IN (
SELECT r.state FROM Result r
WHERE r.srchid = 2
)
)
);

# 追加後のサイズ
size = SELECT COUNT(*) FROM Result WHERE id = 2;

# 追加前後でサイズが同じ時、ループ終了
EXIT WHEN size == size_prev;

# ループ終了
END LOOP;
### SQL文終了 ###
Step 7: A search sentence related to the temporal operator AU is generated by processing 3-3-3 (S209 in FIG. 7). The output destination information is “SRCHID 2”. The generated search statement (SQL procedure 3) is shown below.
### Start SQL statement ###
INSERT INTO Result
SELECT 2, s.id FROM State s
WHERE s.id in (
SELECT r.state FROM Result r
WHERE r.srchid = 1);

## Minimum fixed point calculation (Repeat until there are no additional states)
# Current size
size = SELECT COUNT (*) FROM Result WHERE id = 2;
# Previous size
size_prev;

LOOP # Loop start
# Assign to previous size
size_prev = size;

# Add operation
INSERT INTO Result
SELECT 2, s.state FROM Result s
WHERE (
s.id = 0
) AND (
EXISTS (
SELECT * FROM Trans t
WHERE s.id = t.src)
) AND (
NOT EXISTS (
SELECT * FROM Trans t
WHERE
s.id = t.src
AND
t.dst NOT IN (
SELECT r.state FROM Result r
WHERE r.srchid = 2
)
)
);

# Size after addition
size = SELECT COUNT (*) FROM Result WHERE id = 2;

# Loop end when size is the same before and after addition
EXIT WHEN size == size_prev;

# End loop
END LOOP;
### SQL statement end ###

Step8 :処理3-3-2(図7のS208)により論理演算子⇒に関する検索文を生成する。出力先情報は、"SRCHID 4"とする。以下に、生成された検索文(SQL手続き4)を示す。
### SQL文開始 ###
INSERT INTO Result
SELECT 4, s.id FROM State s
WHERE
s.id NOT IN (
SELECT r.state FROM Result r
WHERE r.srchid = 0)
OR
s.id IN (
SELECT r.state FROM Result r
WHERE r.srchid = 2);
### SQL文終了 ###
Step 8: Generate a search sentence related to the logical operator ⇒ by processing 3-3-2 (S208 in FIG. 7). The output destination information is “SRCHID 4”. The generated search statement (SQL procedure 4) is shown below.
### Start SQL statement ###
INSERT INTO Result
SELECT 4, s.id FROM State s
WHERE
s.id NOT IN (
SELECT r.state FROM Result r
WHERE r.srchid = 0)
OR
s.id IN (
SELECT r.state FROM Result r
WHERE r.srchid = 2);
### SQL statement end ###

Step9:処理4(図6のS104)により、処理3(図6のS103)で生成した検索手続きをリレーショナルデータベース14で逐次実行することにより検索結果表を取得する。取得された検索結果表を以下に示す。

Figure 2009265996
Step 9: A search result table is acquired by sequentially executing the search procedure generated in process 3 (S103 in FIG. 6) in the relational database 14 by process 4 (S104 in FIG. 6). The obtained search result table is shown below.
Figure 2009265996

Step10:処理5(図6のS105)により、検索結果表を出力する。検証条件を満たす状態は、FSMの全状態(状態0-15)を含むため、システムは検証条件を充足することが分かる。 Step 10: A search result table is output by processing 5 (S105 in FIG. 6). Since the conditions satisfying the verification condition include all the states of the FSM (state 0-15), it can be seen that the system satisfies the verification condition.

これまでの説明では、構文木から検索結果表を得る処理(図6の処理3および処理4)を、マルチパス方式で実装した例を示した。即ち、実施例1では、構文木における各ノードのSQL文を全て生成した後、各生成したSQL文を順次実行した。これに対し、構文木のノードの1つ1つごとに、検索手続き生成(SQL文の生成)と検索処理(SQL文の実行)を繰り返すような1パス方式を行うことも可能である。マルチパス方式であるか1パス方式であるかは本発明の本質ではなく、本発明は、いずれの方式によっても実施可能である。   In the description so far, the example in which the process of obtaining the search result table from the syntax tree (process 3 and process 4 in FIG. 6) is implemented by the multipath method has been shown. That is, in Example 1, after all SQL statements of each node in the syntax tree are generated, the generated SQL statements are sequentially executed. On the other hand, it is also possible to perform a one-pass method in which search procedure generation (SQL statement generation) and search processing (SQL statement execution) are repeated for each node of the syntax tree. It is not the essence of the present invention whether the multi-path method or the one-pass method is used, and the present invention can be implemented by any method.

以上のように、本実施例1によれば、検証条件を木構造により表現し、各ノードの検索文を生成し、葉ノードからルートノードに向けてリレーショナルデータベースを活用して順次各検索文を検索するようにしたことにより、検証パフォーマンスに優れたシステム検証が可能となる。すなわち、産業界で長く実績を積んできたリレーショナルデータベースは検索性能や信頼性が優れており、このようなリレーショナルデータベースを活用することで、検証パフォーマンスや、検証対象規模に関するスケーラビリティの向上が期待できる。   As described above, according to the first embodiment, the verification condition is expressed by a tree structure, a search sentence of each node is generated, and each search sentence is sequentially transmitted from the leaf node to the root node using the relational database. By performing the search, system verification with excellent verification performance is possible. In other words, relational databases that have a long track record in the industry have excellent search performance and reliability. By using such relational databases, it is expected to improve verification performance and scalability related to the scale of the verification target.

本実施例2では、検索履歴をリレーショナルデータベース14に保持・検索可能し、また検証条件に含まれる論理式について、その等価論理式(第1等価式)を書換え候補として生成する。または、その論理式の等価論理式(第1等価式)と、当該論理式の否定の等価論理式(第2の等価式)とを書き換え候補として生成する。論理式およびその書換え候補のうち、どれかが過去において既に検索処理されている場合、その過去の検索処理結果を再利用することで、その論理式についての検索処理を省略し、これにより処理の高速化を図ることができる。以下本実施例2について詳細に説明する。
本実施例2におけるリレーショナルデータベース(RDB)14は、実施例1の状態表および状態遷移表、検索結果表に加え、「検索履歴表」(以下"History")を持つ。
In the second embodiment, the search history can be held and searched in the relational database 14, and the equivalent logical expression (first equivalent expression) is generated as a rewrite candidate for the logical expression included in the verification condition. Alternatively, an equivalent logical expression (first equivalent expression) of the logical expression and a negative equivalent logical expression (second equivalent expression) of the logical expression are generated as rewrite candidates. If any of the logical expressions and their rewrite candidates has already been searched in the past, the search results for the logical expressions can be omitted by reusing the past search processing results. The speed can be increased. Hereinafter, the second embodiment will be described in detail.
The relational database (RDB) 14 in the second embodiment has a “search history table” (hereinafter “History”) in addition to the state table, state transition table, and search result table in the first embodiment.

Historyは「SRCHID」と「FORMULA」を属性として持ち、これまでRDB14で実行された検索履歴(構文木上中間段階の検索処理も含む)を保有する。SRCHIDは検索処理の識別子で、ResultのSRCHIDと同じである。またFORMULAは、SRCHIDに対応する検索処理の元となった論理式を表す。つまり、Historyには、過去に検索済みの論理式とそのSRCHIDとが格納されている。Historyの一例を以下に示す。例えば、検索処理"SRCHID=4"の元となった論理式は"E(¬q W ¬q)"である。

Figure 2009265996
History has “SRCHID” and “FORMULA” as attributes, and holds the search history (including search processing in the middle stage on the syntax tree) executed so far in the RDB 14. SRCHID is an identifier for search processing and is the same as SRCHID of Result. FORMULA represents a logical expression that is a source of search processing corresponding to SRCHID. That is, in the History, a logical expression that has been searched in the past and its SRCHID are stored. An example of History is shown below. For example, the logical expression that is the basis of the search process “SRCHID = 4” is “E (¬q W ¬q)”.
Figure 2009265996

図9は、本実施例2による全体処理の流れを示すフローチャートである。   FIG. 9 is a flowchart showing the overall processing flow according to the second embodiment.

本実施例2の大半の処理は実施例1と同じである。本実施例2が実施例1と異なる点は、処理3(S303)おいて「検索履歴の分析」と「論理式の書換え候補生成」が追加実行され、また、処理4(S304)の次に追加された処理5(S305)において、「検索履歴を保存」を行うことである。処理1(S301)、処理2(S302)、処理4(S304)、処理6(S306)は、図6の処理1(S101)、処理2(S102)、処理4(S104)、処理5(S105)と同様である。   Most of the processing of the second embodiment is the same as that of the first embodiment. The second embodiment is different from the first embodiment in that “analysis of search history” and “generation of logical expression rewriting candidates” are additionally executed in process 3 (S303), and after process 4 (S304). In the added process 5 (S305), “save search history” is performed. Processing 1 (S301), processing 2 (S302), processing 4 (S304), and processing 6 (S306) are processing 1 (S101), processing 2 (S102), processing 4 (S104), and processing 5 (S105) in FIG. ).

まず処理5(S305)で行う「検索履歴を保存」について説明する。処理4(S304)では、図1の検索履歴保存手段16が、検索手続き実行手段15で実行された検索手続き(SQL形式)について、その識別子(SRCHID)と、当該検索手続に対応する論理式とを、リレーショナルデータベース14のHistoryに保存する。
「検索履歴を保存」は少なくとも、一つの検索手続きが実行される度に履歴を保存するように、処理4(S304)のサブルーチンとして組み込む方法と、処理4と独立に検索手続きから一括でリレーショナルデータベース14に保存する方法とがあり得るが、これらのどちらの方法を用いてもかまわない。
First, “save search history” performed in process 5 (S305) will be described. In process 4 (S304), the search history storage unit 16 in FIG. 1 uses the identifier (SRCHID) of the search procedure (SQL format) executed by the search procedure execution unit 15 and the logical expression corresponding to the search procedure. Is stored in the History of the relational database 14.
“Save search history” is a relational database that can be incorporated as a subroutine of process 4 (S304) so that the history is saved at least every time one search procedure is executed. 14 may be used, but either of these methods may be used.

次に、処理3(S303)で行う検索手続きの組み立てについて説明する。   Next, the assembly of the search procedure performed in process 3 (S303) will be described.

図10は、処理3(S303)で行う検索手続きの組み立ての処理の流れを示すフローチャートである。実施例1(図7)と異なる点は、処理3-0(S212)が、処理3-1(S201)の前に先頭に追加されたことにある。したがって、以下では、この差分点に着目して説明を行う。その他の処理3-1、処理3-2、処理3-3については実施例1と同様であるため重複する説明を省略する。   FIG. 10 is a flowchart showing the flow of the search procedure assembly process performed in process 3 (S303). The difference from the first embodiment (FIG. 7) is that the process 3-0 (S212) is added to the head before the process 3-1 (S201). Therefore, in the following, description will be given focusing on this difference point. The other processing 3-1, processing 3-2, and processing 3-3 are the same as those in the first embodiment, and thus redundant description is omitted.

図11は、処理3-0(S212)で行う、再利用可能性の反映処理の流れを示すフローチャートである。   FIG. 11 is a flowchart showing a flow of reusability reflection processing performed in processing 3-0 (S212).

検索手続き組立て手段13は、構文木のノードをルートから葉へ向けて順番に読み取り(S401)、検索履歴分析手段22を用いて各ノードに対応する論理式が既に検索されているかを分析する(処理3-0-0:S402)。   The search procedure assembling means 13 sequentially reads the nodes of the syntax tree from the root to the leaves (S401), and analyzes whether the logical expressions corresponding to the respective nodes have already been searched using the search history analysis means 22 (S401). Process 3-0-0: S402).

処理3-0-0(S402)において、検索履歴分析手段22は、論理式を入力として、検索履歴においてその論理式の存在有無を分析する。具体的には、RDB14のHistoryのFORMULAで、入力された論理式を検索する。既に履歴が存在した場合(Historyにおいて該当行が見つかった場合)は、対応するSRCHID(ResultのSRCHID)を取得する。   In process 3-0-0 (S402), the search history analysis means 22 receives a logical expression and analyzes the presence / absence of the logical expression in the search history. Specifically, the input logical expression is searched by FORMULA of History of RDB14. If the history already exists (when the corresponding line is found in the History), the corresponding SRCHID (SRCHID of Result) is acquired.

論理式が過去において検索済みであったときは(S403のYES)、構文木において該当ノードの子孫からなる部分を削除し(処理3-0-1:S404)、該当ノードについて既に実施された検索結果を参照するようにする当該ノードを更新する(処理3-0-2:S405)(後述する図12参照)。ループ終了条件“走査すべきノードが無い”を満たす場合は処理を終了し、そうでない場合はS401へ戻る。   If the logical expression has been searched in the past (YES in S403), the part of the syntax tree that is a descendant of the corresponding node is deleted (processing 3-0-1: S404), and the search that has already been performed for the corresponding node The node to be referred to is updated (processing 3-0-2: S405) (see FIG. 12 described later). If the loop end condition “no node to be scanned” is satisfied, the process ends. If not, the process returns to S401.

一方、論理式の検索が過去において行われていないとき(S403のNO)、当該論理式が演算子か否かを判断する。演算子でないとき(S406のNO)、すなわち原子項であるときは、S410へ進む。ループ終了条件“走査すべきノードが無い”を満たす場合は処理を終了し、そうでない場合はS401へ戻る。一方、当該論理式が演算子のとき(S406のYES)、検索手続き組立手段13は、論理式の書換え候補生成手段(論理式生成手段)21を用いて、論理式の書換え候補を生成する(処理3-0-3:S407)。   On the other hand, when the logical expression has not been searched in the past (NO in S403), it is determined whether or not the logical expression is an operator. When it is not an operator (NO in S406), that is, when it is an atomic term, the process proceeds to S410. If the loop end condition “no node to be scanned” is satisfied, the process ends. If not, the process returns to S401. On the other hand, when the logical expression is an operator (YES in S406), the retrieval procedure assembling means 13 uses the logical expression rewrite candidate generating means (logical expression generating means) 21 to generate a logical expression rewriting candidate ( Process 3-0-3: S407).

この処理3-0-3(S407)において、論理式の書換え候補生成手段21は、論理式(ここでは原子項を除く)を入力とし、入力された論理式から、ドモルガンの法則に基づく書換え規則を用いて、等価論理式(第1等価式)および否定の等価論理式(第2等価式)を生成する。否定の等価論理式(第2等価式)は、演算子が否定演算子と異なるときのみ生成するようにしてもよい。書換え規則の詳細については、巻末「補足説明2: 論理演算の等価書換え規則」に記述したので、ここを参照されたい。   In this process 3-0-3 (S407), the logical expression rewrite candidate generation means 21 receives a logical expression (here, excluding the atomic term), and from the input logical expression, a rewrite rule based on Domorgan's law. Are used to generate an equivalent logical expression (first equivalent expression) and a negative equivalent logical expression (second equivalent expression). The negative equivalent logical expression (second equivalent expression) may be generated only when the operator is different from the negative operator. The details of the rewrite rules are described in “Supplementary explanation 2: Equivalent rewrite rules for logical operations” at the end of the book. Please refer here.

処理3-0-4(S408)において、検索履歴分析手段22を用いて、その等価論理式または否定の等価論理式が過去において既に検索されているかを分析する   In process 3-0-4 (S408), the search history analysis means 22 is used to analyze whether the equivalent logical expression or the negative equivalent logical expression has already been searched in the past.

既に検索済みの等価論理式または否定の等価論理式がある場合には(S409のYES)、該当ノードについて既に実施された検索結果を参照するように構文木を更新する(処理3-0-1:S404、処理3-0-2:S405)(後述する図12参照)。構文木の更新方法は、等価論理式および否定の等価論理式のいずれが検索済みであるかによって異なり、この詳細は後述する。ループ終了条件“走査すべきノードが無い”を満たす場合は処理を終了し、そうでない場合はS401へ戻る。   If there is an equivalent logical expression that has already been searched or a negative equivalent logical expression (YES in S409), the syntax tree is updated so as to refer to the search result that has already been performed for the node (processing 3-0-1). : S404, Process 3-0-2: S405) (see FIG. 12 described later). The method of updating the syntax tree differs depending on whether an equivalent logical expression or a negative equivalent logical expression has been searched, and details thereof will be described later. If the loop end condition “no node to be scanned” is satisfied, the process ends. If not, the process returns to S401.

以上に説明したS401〜S10の処理は以下のように記述することができる。
loop (ノード <構文木のトップから葉に向けて全ノードを走査) {
処理3-0-0: 検索履歴を分析
if (ノードの論理式が既に検索されている場合) {
処理3-0-1: 構文木上の全子孫を削除
処理3-0-2: ノード論理式を、処理3-0-0で見つけた"SRCHID"への参照で置換
exit loop
} else {
if (ノード == 演算子) {
処理3-0-3: 等価な論理式を生成
処理3-0-4: (生成した論理式に関して)検索履歴を分析
if (生成した論理式の内、既に検索されたものが存在する場合) {
処理3-0-5: 構文木上の全子孫を削除
処理3-0-6: ノード論理式を、処理3-0-0で見つけた"SRCHID"への参照で置換
exit loop
}
}
}
}
The processing of S401 to S10 described above can be described as follows.
loop (node <scan all nodes from top of syntax tree to leaf) {
Process 3-0-0: Analyze search history
if (if the node's logical expression has already been searched) {
Process 3-0-1: Delete all descendants on syntax tree
Process 3-0-2: Replace node logical expression with reference to "SRCHID" found in process 3-0-0
exit loop
} else {
if (node == operator) {
Process 3-0-3: Generate equivalent logical expression
Process 3-0-4: Analyze search history (with respect to generated formula)
if (if a generated logical expression already exists) {
Process 3-0-5: Delete all descendants on the syntax tree
Process 3-0-6: Replace node logical expression with reference to "SRCHID" found in process 3-0-0
exit loop
}
}
}
}

以下、具体例として、実施例1と同様に、検証条件「p⇒A(pUq)」(p, qは共に原子項)が与えられた場合を想定して、本実施例2に係わる動作(特に処理3-0)を示す。本実施例2の動作は、Historyに蓄積された検査結果の状況により異なる。ここでは、以下の2つの場合を挙げる。
場合1: A(pUq)が既に検索済みの場合
場合2: E(¬pW¬q)が既に検索済みの場合 (A(pUq)は未検索)
なお、以下の説明において、便宜上、A(pUq)およびE(¬pW¬q)に関連するSRCHIDは共に「xx」とする。
Hereinafter, as a specific example, as in the first embodiment, assuming that a verification condition “p⇒A (pUq)” (p and q are both atomic terms) is given, the operation according to the second embodiment ( In particular, treatment 3-0) is shown. The operation of the second embodiment differs depending on the state of the inspection result accumulated in the history. Here, the following two cases are given.
Case 1: A (pUq) has already been searched Case 2: E (¬pW¬q) has already been searched (A (pUq) is not searched)
In the following description, for convenience, SRCHIDs related to A (pUq) and E (¬pW¬q) are both “xx”.

場合1 : A(pUq)が検索済み
Step1:図9の処理1(S301)および処理2(S302)は、実施例1と同じであるため説明を省略する。
以下では処理3(S303)で検索手続きの組み立て行う。
Step2:図10の処理3-0(S212:再利用可能性の反映)における処理3-0-0(図11のS402)で、検索履歴を分析する。"A(pUq)"は検索済みであるため、SRCHIDxxを出力する(図12の左側参照)。
Step3:図11の処理3-0-1(S404)で、構文木において"A(pUq)"に対応するノードの全子孫を削除する(図12の右側参照)
Step4:図11の処理3-0-2(S405)で、ノード論理式を、Step3の検索結果(SRCHIDxx)を参照するように置換する(図12の右側参照)。
Step5:図10の処理3-1(S201)以降は実施例1と同じであるため説明を省略する。
Case 1: A (pUq) has been searched
Step 1: Processing 1 (S301) and processing 2 (S302) in FIG. 9 are the same as those in the first embodiment, and thus description thereof is omitted.
In the following, the search procedure is assembled in process 3 (S303).
Step 2: The search history is analyzed in process 3-0-0 (S402 in FIG. 11) in process 3-0 (S212: reflection of reusability) in FIG. Since “A (pUq)” has already been searched, SRCHIDxx is output (see the left side of FIG. 12).
Step3: In process 3-0-1 (S404) in Fig. 11, all descendants of the node corresponding to "A (pUq)" in the syntax tree are deleted (see right side of Fig. 12).
Step 4: In step 3-0-2 (S405) in FIG. 11, the node logical expression is replaced so as to refer to the search result (SRCHIDxx) in Step 3 (see the right side in FIG. 12).
Step 5: Since the process 3-1 (S201) and subsequent steps in FIG. 10 are the same as those in the first embodiment, description thereof is omitted.

場合2 : E(¬pW¬q)が検索済み
Step1:図9の処理1(S301)および処理2(S302)は、実施例1と同じであるため説明を省略する。
以下では処理3(S303)で検索手続きの組み立て行う。
Step2:図10の処理3-0(S212:再利用可能性の反映)における処理3-0-0(図11のS402)で、検索履歴を分析する。上記仮定の下、"A(pUq)"は未検索であることが判明する。
Step3:図11の処理3-0-3(S407)で、当該論理式の等価論理式(第1等価式)として、¬E(¬pW¬q)が生成され、さらに当該論理式の否定の等価論理式(第2等価式)として、E(¬pW¬q)が生成される(図13右側参照)。
Step4:図11の処理3-0-4(S408)で、生成した論理式に関して、検索履歴を分析すると、"¬E(¬pW¬q)"は検索済みでないが、"E(¬pW¬q)"は検索済みであるため、SRCHIDxxを出力する。
Step5:図11の処理3-0-1(S404)で、構文木において"A(pUq)"に対応するノードの全子孫を削除し、当該ノードを"¬E(¬pW¬q)"に置換し、当該ノードの子ノードとして"E(¬pW¬q)"のノードを追加する。なお、もし"¬E(¬pW¬q)"が検索済みであれば子ノードの追加は不要である。
Step6:図11の処理3-0-2(S405)で、ノード論理式"E(¬pW¬q)"を、Step4の検索結果(SRCHIDxx)を参照するように置換する(図12の右側参照)。
Step7:図10の処理3-1(S201)以降は実施例1と同じであるため説明を省略する。
Case 2: E (¬pW¬q) has been searched
Step 1: Processing 1 (S301) and processing 2 (S302) in FIG. 9 are the same as those in the first embodiment, and thus description thereof is omitted.
In the following, the search procedure is assembled in process 3 (S303).
Step 2: The search history is analyzed in process 3-0-0 (S402 in FIG. 11) in process 3-0 (S212: reflection of reusability) in FIG. Under the above assumption, it is found that “A (pUq)” is not searched.
Step3: In process 3-0-3 (S407) of FIG. 11, ¬E (¬pW¬q) is generated as an equivalent logical expression (first equivalent expression) of the logical expression, and the logical expression is negated. E (¬pW¬q) is generated as an equivalent logical expression (second equivalent expression) (see the right side of FIG. 13).
Step 4: When the search history is analyzed with respect to the generated logical expression in the process 3-0-4 (S408) in FIG. 11, “¬E (¬pW¬q)” has not been searched, but “E (¬pW¬ Since q) "has been searched, SRCHIDxx is output.
Step 5: In process 3-0-1 (S404) of FIG. 11, all descendants of the node corresponding to “A (pUq)” in the syntax tree are deleted, and the node is changed to “¬E (¬pW¬q)” Replace and add a node of “E (¬pW¬q)” as a child node of the node. If “¬E (¬pW¬q)” has already been searched, it is not necessary to add a child node.
Step 6: In the process 3-0-2 (S405) of FIG. 11, the node logical expression “E (¬pW¬q)” is replaced to refer to the search result (SRCHIDxx) of Step 4 (see the right side of FIG. 12) ).
Step 7: Since processing 3-1 (S201) and subsequent steps in FIG. 10 are the same as those in the first embodiment, description thereof is omitted.

以上のように、本実施例によれば、過去における検索結果を可能な限り再利用するようにしたことにより、更なるパフォーマンス向上を図ることができる。   As described above, according to the present embodiment, it is possible to further improve performance by reusing past search results as much as possible.

本実施例3は、実施例2において論理式およびその書き換え候補のいずれも検索済みでないとき(図14のS409参照)、論理式および書き換え候補の処理コストを、それらの部分論理式を満たす状態数(サイズ)に基づいて分析する。部分論理式を満たす状態数は検索履歴表および検索結果表を利用して取得する。部分論理式が検索済みでないときは、部分論理式をルートとする構文木を生成し、再帰的に処理を行い、以降これを繰り返す。これにより、論理式および書き換え候補の部分論理式を満たす状態数(サイズ)が得られるため、論理式および書き換え候補の処理コストを計算する。そして処理コストが最小になるような論理式または書き換え候補を選択して構文木を更新する。以下、本実施例3について詳細に説明する。   In the third embodiment, when neither the logical expression nor its rewriting candidate has been searched in the second embodiment (see S409 in FIG. 14), the processing cost of the logical expression and the rewriting candidate is set to the number of states satisfying those partial logical expressions. Analyze based on (size). The number of states satisfying the partial logical expression is acquired using the search history table and the search result table. When the partial logical expression has not been searched, a syntax tree having the partial logical expression as the root is generated, recursively processed, and thereafter this is repeated. As a result, the number of states (size) satisfying the logical expression and the partial logical expression of the rewrite candidate is obtained, and the processing cost of the logical expression and the rewrite candidate is calculated. Then, a logical expression or a rewriting candidate that minimizes the processing cost is selected and the syntax tree is updated. Hereinafter, the third embodiment will be described in detail.

本実施例3では図1の検索処理コスト分析手段23を用いる。リレーショナルデータべースは、実施例2と同様に、状態表、状態遷移表、検索結果表に加え、検索履歴表を持つ。   In the third embodiment, the search processing cost analysis means 23 of FIG. 1 is used. Similar to the second embodiment, the relational database has a search history table in addition to the state table, the state transition table, and the search result table.

以下、本実施例3に係る処理の流れについて説明する。
本実施例3における大半の処理は実施例2と同じであり、図10の処理3-0(S212)において「処理コスト分析」が追加的に行われる点が実施例2と異なる。したがって、ここでは処理3-0を、実施例2との差分に着目して説明する。
Hereinafter, the flow of processing according to the third embodiment will be described.
Most of the processing in the third embodiment is the same as that in the second embodiment, and is different from the second embodiment in that “processing cost analysis” is additionally performed in the processing 3-0 (S212) of FIG. Therefore, the processing 3-0 will be described here focusing on the difference from the second embodiment.

図14は、本実施例3に係る処理3-0の詳細なフローを示したフローチャートである。ハッチングが施されたステップ(S411〜S417)が、実施例2との差分に相当する。ステップS414の処理は再帰制御手段の処理に相当する。本フローチャートの処理は詳細には以下のように記述できる。   FIG. 14 is a flowchart illustrating a detailed flow of the process 3-0 according to the third embodiment. The hatched steps (S411 to S417) correspond to differences from the second embodiment. The process of step S414 corresponds to the process of the recursive control means. The processing of this flowchart can be described in detail as follows.

なおステップS411で時相演算子のときのみ本実施例の処理を行うとしているのは、論理演算子の場合、書き換えを行ったとしても処理コストの差は非常に小さく、演算量の違いにさほど差がでないためである。これに対し、時相演算子の場合、繰り返し処理があるため、書き換えによって演算量に大きな違いがでる場合がある。   Note that the processing of the present embodiment is performed only in the case of a temporal operator in step S411. In the case of a logical operator, even if rewriting is performed, the difference in processing cost is very small, and the difference in the amount of computation is very small. This is because there is no difference. On the other hand, in the case of a temporal operator, since there is an iterative process, there may be a large difference in the amount of calculation by rewriting.

また下記の処理の記述においてステップS414で行う部分論理式の構文木の生成は、構文解析手段12を用いて行ってもよいし、生成済みの構文木の一部を利用して生成してもよい。

処理3-0: 再利用可能性の反映 <<"★"は実施例2との差分>>
loop (ノード <構文木のトップから葉に向けて全ノードを走査) {
処理3-0-0: 検索履歴を分析
if (ノードの論理式が既に検索されている場合) {
処理3-0-1: 構文木上の全子孫を削除
処理3-0-2: ノード論理式を、処理3-0-0で見つけた"SRCHID"への参照で置換
exit loop
} else {
if (ノード == 演算子) {
処理3-0-3: 等価な論理式を生成
処理3-0-4: (生成した論理式に関して)検索履歴を分析
if (生成した論理式の内、既に検索されたものが存在する場合) {
処理3-0-5: 構文木上の全子孫を削除
処理3-0-6: ノード論理式を、処理3-0-0で見つけた"SRCHID"への参照で置換
exit loop
}

★ else {
★ if (ノード == 時相演算子) {
★ 処理3-0-7: (対象ノードの論理式の部分論理式の)検索履歴を分析
★ if (論理式が検索されていない場合) {
★ 処理3-0-8: 部分論理式に関する検索を実施
★ }
★ 処理3-0-9: RDBのResultを用いて、部分論理式を満たす集合のサイズを計算
★ 処理3-0-10: 時相演算子の種別と、入力される論理式(部分論理式)の充足集合のサイズを元に、検索対象集合のサイズに基づいて処理コストを分析する。 (検索処理コスト分析)
★ 処理3-0-11: 対象ノードを、全書き換え候補の中で、処理コストが最小である書き換え候補に書き換える。
★ exit loop
★ }
★ }
}
}
}

処理3-0-8
入力: 構文木 (部分論理式をルートとする構文木)
出力: 部分論理式の検索結果を参照するSRCHID
副作用: RDBのResult, History
処理説明: 部分論理式をルートとする構文木に関して、再帰的に処理3-0、図9の処理4および処理5を呼び出す。結果として、部分論理式の検索結果がRDBのResultに保存され、またそれを参照するSRCHIDを返す。

処理3-0-10 (検索処理コスト分析)
入力: 時相演算子、演算子への入力となる論理式(部分論理式)の充足集合のサイズ
出力: 処理コスト
担当手段: 「検索処理コスト分析」
処理説明: 検索対象集合のサイズに基づいて、処理コストを分析する。算出規則は巻末の「補足説明1: 時相演算子の計算方法」を参照されたい。
In the description of the processing below, the syntax tree of the partial logical expression performed in step S414 may be generated using the syntax analysis unit 12, or may be generated using a part of the generated syntax tree. Good.

Process 3-0: Reflection of reusability <<"★" is the difference from Example 2 >>
loop (node <scan all nodes from top of syntax tree to leaf) {
Process 3-0-0: Analyze search history
if (if the node's logical expression has already been searched) {
Process 3-0-1: Delete all descendants on syntax tree
Process 3-0-2: Replace node logical expression with reference to "SRCHID" found in process 3-0-0
exit loop
} else {
if (node == operator) {
Process 3-0-3: Generate equivalent logical expression
Process 3-0-4: Analyze search history (with respect to generated formula)
if (if a generated logical expression already exists) {
Process 3-0-5: Delete all descendants on the syntax tree
Process 3-0-6: Replace node logical expression with reference to "SRCHID" found in process 3-0-0
exit loop
}

★ else {
★ if (node == temporal operator) {
★ Process 3-0-7: Analyzing the search history (of the sub-expression of the target node's logical expression) ★ if (if the logical expression has not been searched) {
★ Process 3-0-8: Search for partial logical expression ★}
★ Process 3-0-9: Use RDB Result to calculate the size of the set that satisfies the partial logical expression ★ Process 3-0-10: Type of temporal operator and input logical expression (partial logical expression ) To analyze the processing cost based on the size of the set to be searched. (Search processing cost analysis)
Process 3-0-11: Rewrites the target node to a rewrite candidate with the lowest processing cost among all rewrite candidates.
★ exit loop
★}
★}
}
}
}

Processing 3-0-8
Input: syntax tree (syntax tree rooted in sub-expression)
Output: SRCHID referring to the search result of the sub-expression
Side effects: RDB Result, History
Process Description: Recursively calls process 3-0, process 4 and process 5 in FIG. As a result, the partial logical expression search result is stored in the RDB Result, and an SRCHID that refers to it is returned.

Processing 3-0-10 (Search processing cost analysis)
Input: Temporal operator, the size of the satisfaction set of the logical expression (partial logical expression) that is input to the operator
Output: Processing cost
Person in charge: "Search processing cost analysis"
Process Description: Analyzes the processing cost based on the size of the search target set. Refer to “Supplementary explanation 1: Calculation method of temporal operator” at the end of the book for the calculation rules.

以下、具体例として、実施例1と同様に、検証条件「p⇒A(pUq)」(p, qは共に原子項)が与えられた場合を想定して、本実施例3の動作 (特に処理3-0)について示す。   Hereinafter, as a specific example, the operation of the third embodiment (particularly, assuming that the verification condition “p => A (pUq)” (p and q are both atomic terms) is given in the same manner as the first embodiment (particularly, Processing 3-0) will be described.

実施例2と同様に、本装置の振る舞いはFSMや検証条件、そしてHistory(検証履歴)の蓄積状況により異なる。本具体例では、FSM、検証条件および検証履歴について、以下を仮定する。

FSM(検査対象)
状態数: 16
状態遷移数: 42
検証履歴
"A(pUq)": 未検査
"E( ¬p W ¬q )": 未検査
"p", "q": 共に検査済み
"¬p", "¬q": 共に検査済み
Similar to the second embodiment, the behavior of this apparatus differs depending on the FSM, verification conditions, and history (verification history) accumulation status. In this specific example, the following is assumed for FSM, verification conditions, and verification history.

FSM (inspection target)
Number of states: 16
Number of state transitions: 42
Verification history
"A (pUq)": not tested
"E (¬p W ¬q)": not tested
"p", "q": both tested
"¬p", "¬q": both tested

Step1:図9の処理1(S301)および処理2(S302)は、実施例1と同じであるため説明を省略する。 Step 1: Processing 1 (S301) and processing 2 (S302) in FIG. 9 are the same as those in the first embodiment, and thus description thereof is omitted.

以下では処理3(S303)で検索手続きの組み立て行う。   In the following, the search procedure is assembled in process 3 (S303).

Step2:図10の処理3-0(S212:再利用可能性の反映)における図14の処理3-0-0(S402)、3-0-3(S407)、3-0-4(S408)は、実施例2と同じであるため説明を省略する。 Step2: Processing 3-0-0 (S402), 3-0-3 (S407), 3-0-4 (S408) in Fig. 14 in processing 3-0 (S212: Reflecting reusability) in Fig. 10 Since this is the same as that of the second embodiment, description thereof is omitted.

Step3:図14の処理3-0-7(S412)で、 部分論理式の検索履歴を分析する。 Step3: In the process 3-0-7 (S412) in Fig. 14, the search history of the partial logical expression is analyzed.

上記した仮定により、"E(¬pW¬q)"の部分論理式である"¬p", "¬q"が共に検査済みであるためこれらの部分論理式を取得する。また"A(pUq)"の部分論理式である"p", "q"が共に検査済みであるためこれらの部分論理式を取得する。   Based on the above assumption, since the partial logical expressions “¬p” and “¬q” of “E (¬pW¬q)” have already been examined, these partial logical expressions are acquired. In addition, since “p” and “q”, which are partial logical expressions of “A (pUq)”, have already been checked, these partial logical expressions are acquired.

Step4:図14の処理3-0-9(S415)では、部分論理式の集合サイズを計算する。 Step 4: In process 3-0-9 (S415) of FIG. 14, the set size of the partial logical expression is calculated.

部分論理式"¬p"および"¬q"のサイズをたとえばResultに基づき計算すると、"¬p"の方は1個、"¬q"の方は、4個となったとする。また部分論理式"p"および"q"のサイズをたとえばResultに基づき計算すると、"p"の方は15個、"¬q"の方は、12個となったとする。なお、("¬p"の状態数)は、全状態数−(pを充足する状態数)に等しく、また("¬q"の状態数)は、 全状態数−(qを充足する状態数)に等しい。   When the sizes of the partial logical expressions “¬p” and “¬q” are calculated based on, for example, Result, it is assumed that the number of “¬p” is one and the number of “¬q” is four. Further, when the sizes of the partial logical expressions “p” and “q” are calculated based on, for example, Result, it is assumed that “p” is 15 and “¬q” is 12. Note that (the number of states in "¬p") is equal to the total number of states-(the number of states satisfying p), and (the number of states in "¬q") is the number of states in total-(a state satisfying q Number).

Step5:図14の処理3-0-10(S416)では、検索処理コストを分析する。"A(pUq) "および"E( ¬p W ¬q ) "のコストはそれぞれ以下のように計算される。

A(pUq) : 7560 (= pを充足する状態数(=15) * 状態遷移数(=42) * qを充足する状態数(=12)
E( ¬p W ¬q ) : 210 (= ¬pを充足する状態数(=1) * 状態遷移数(=42) * [¬pを充足する状態数 + ¬qを充足する状態数](=5))
Step 5: In process 3-0-10 (S416) of FIG. 14, the search processing cost is analyzed. The costs of “A (pUq)” and “E (¬p W ¬q)” are calculated as follows.

A (pUq): 7560 (= number of states satisfying p (= 15) * number of state transitions (= 42) * number of states satisfying q (= 12)
E (¬p W ¬q): 210 (= number of states satisfying ¬p (= 1) * number of state transitions (= 42) * [number of states satisfying ¬p + number of states satisfying ¬q] ( = 5))

両コストを比較して、"E( ¬p W ¬q )"の処理コストの方が小さいことを判定する。なお、"¬E( ¬p W ¬q )"の処理コストを求め、"¬E( ¬p W ¬q )"と"A(pUq) "との処理コストを比較してもよいが、論理演算子(ここでは"¬")の演算量は、時相演算子の演算量に比べてきわめて小さいため、実際上、"E( ¬p W ¬q ) "の処理コストとの比較でも十分である。このため本実施例では"E( ¬p W ¬q ) "の処理コストとの比較を行っている。   The two costs are compared, and it is determined that the processing cost of “E (¬p W ¬q)” is smaller. Note that the processing cost of "¬E (¬p W ¬q)" may be obtained and the processing costs of "¬E (¬p W ¬q)" and "A (pUq)" may be compared. Since the amount of computation of the operator (here "¬") is very small compared to the amount of computation of the temporal operator, it is practically sufficient to compare it with the processing cost of "E (¬p W ¬q)" is there. For this reason, in the present embodiment, a comparison is made with the processing cost of “E (¬p W ¬q)”.

Step6:図14の処理3-0-11(S417)では、ノード論理式を、処理コストが最小のものを参照するように置換する(図15の右側参照)。置換方法の詳細は第2の実施例で説明したとおりである。 Step 6: In the process 3-0-11 (S417) in FIG. 14, the node logical expression is replaced so as to refer to the one having the lowest processing cost (see the right side in FIG. 15). The details of the replacement method are as described in the second embodiment.

Step7:図10の処理3-1(S201)以降は実施例1と同じであるため説明を省略する。
以上のように本実施例によれば、過去に取得された検索結果を利用し、処理コストが最小になるような論理式の書き換えを行うようにしたことにより、よりパフォーマンス特性に優れた検証を行うことができる。
Step 7: Since processing 3-1 (S201) and subsequent steps in FIG. 10 are the same as those in the first embodiment, description thereof is omitted.
As described above, according to the present embodiment, by using a search result acquired in the past and rewriting a logical expression that minimizes the processing cost, verification with better performance characteristics can be performed. It can be carried out.

なお、以上に説明した本発明の実施形態におけるシステム状態検証装置は、例えば、汎用のコンピュータ装置を基本ハードウェアとして用いることでも実現することが可能である。すなわち、図1のシステム状態検証装置における各手段11〜17、21〜26は、上記のコンピュータ装置に搭載されたプロセッサにプログラムを実行させることにより実現することができる。このとき、検証装置は、上記のプログラムをコンピュータ装置にあらかじめインストールすることで実現してもよいし、CD−ROMなどの記憶媒体に記憶して、あるいはネットワークを介して上記のプログラムを配布して、このプログラムをコンピュータ装置に適宜インストールすることで実現してもよい。   Note that the system state verification apparatus according to the embodiment of the present invention described above can also be realized by using, for example, a general-purpose computer apparatus as basic hardware. That is, the units 11 to 17 and 21 to 26 in the system state verification apparatus in FIG. 1 can be realized by causing a processor mounted on the computer apparatus to execute a program. At this time, the verification apparatus may be realized by installing the above program in a computer device in advance, or may be stored in a storage medium such as a CD-ROM or distributed through the network. The program may be implemented by appropriately installing it in a computer device.

[補足説明1: 時相演算子の計算方法]
時相演算子の数学的計算方法と不動点計算コストを説明する。
○記号定義
State: 状態集合
Trans: 状態遷移集合
s: 状態 (∈State)
t: 状態遷移 (∈Trans)
t.src: 状態遷移tの遷移元
t.dst: 状態遷移tの遷移先
Φ、Ψ: CTL式
"s |= Φ" : 状態sでCTL式Φが真
#S: 集合Sのサイズ(要素の個数)


○ AX Φ
数学的定義
S := {s ∈ State | ∀t (∈ Trans, t.src=s) t.dst|=Φ}


○ EX Φ
数学的定義
S := {s ∈ State | ∃t (∈ Trans, t.src=s) ST t.dst|=Φ}


○ AG Φ (最大不動点)
数学的定義
# 集合S0 := 論理式Φを満たす全状態
S0 := {s ∈ State | s|=Φ }

# 集合Sn+1 := 全ての遷移で集合Snへ至る、集合Snの全状態。
Sn+1 := {s ∈ Sn | ∀t (∈ Trans, t.src=s) t.dst ∈ Sn}
※ Sn: 任意のパス上nステップ以内の任意の状態がΦを満たす状態集合 (単調減少)

# 最大不動点計算
S := ∩Sn (nは全ての自然数)

処理コスト(検索対象の大きさ)
Snの場合: #Sn-1 * #Trans * #Sn-1
=> コスト計算式: (#S0)^2 * #Trans


○ EG Φ (最大不動点)
数学的定義
# 集合S0 := 論理式Φを満たす全状態
S0 := {s ∈ State | s|=Φ }

# 集合Sn+1 := 集合Snへ至る遷移が存在する、若しくは遷移が存在しない、集合Snの全状態
Sn+1 := {s ∈ Sn | (∃t (∈ Trans) ST (t.src=s ∧ t.dst ∈ Sn)) ∨ (¬∃t (∈ Trans) ST t.src=s)}
※ Sn: あるパスで、nステップ以内の任意の状態がΦを満たす、状態集合。 (単調減少)

# 最大不動点計算
S := ∩Sn (nは全ての自然数)

処理コスト(検索対象の大きさ)
Snの場合: #Sn * ((#Trans * #Sn) + #Trans)
=> コスト計算式: #S0 * #Trans * (#S0 + 1)


○ AF Φ (最小不動点)
数学的定義
# 集合S0 := 論理式Φを満たす全状態
S0 := {s ∈ State | s|=Φ }

# 集合Sn+1 := 任意の遷移でSnの元に写る状態の集合、若しく集合Snの全状態
Sn+1 := {s ∈ State | ∀t(∈ Trans, t.src=s) t.dst ∈ Sn} ∪ Sn
※ Sn : 任意のパスでnステップ以内にΦを満たす状態の集合 (単調増加)

# 最小不動点計算
S := ∪Sn (nは全ての自然数)

処理コスト(検索対象の大きさ)
Snの場合: #State * #Trans * #Sn
=> コスト計算式: #State * #Trans * #S0


○ EF Φ (最小不動点)
数学的定義
# 集合S0 := 論理式Φを満たす全状態
S0 := {s ∈ State | s|=Φ }

# 集合Sn+1 := ある遷移でSnの元に写る状態の集合、若しく集合Snの全状態
Sn+1 := {s ∈ State | ∃t(∈ Trans, t.src=s) t.dst ∈ Sn} ∪ Sn
※ Sn : あるパスでnステップ以内にΦを満たす状態の集合 (単調増加)

# 最小不動点計算
S := ∪Sn (nは全ての自然数)

処理コスト(検索対象の大きさ)
Snの場合: #State * #Trans * #Sn
=> コスト計算式: #State * #Trans * #S0


○ A(Φ U Ψ) : 最小不動点
数学的定義
T := {s ∈ State | s|=Φ }

# 集合S0 := 論理式Ψを満たす全状態
S0 := {s ∈ State | s|=Ψ }

# 集合Sn+1 := 任意の遷移でSnへ至るTの要素、若しくはSnの全要素。
Sn+1 := {s ∈ T | ∀t(∈ Trans, t.src=s) t.dst ∈ Sn } ∪ Sn
※ Sn : あるパスでnステップ以内にΦを満たす状態の集合 (単調増加)

# 最小不動点計算
S := ∪Sn (nは全ての自然数)

処理コスト(検索対象の大きさ)
Snの場合: #T * #Trans * #Sn
=> コスト計算式: #T * #Trans * #S0


○ E(Φ U Ψ) : 最小不動点
数学的定義
T := {s ∈ State | s|=Φ }

# 集合S0 := 論理式Ψを満たす全状態
S0 := {s ∈ State | s|=Ψ }

# 集合Sn+1 := ある遷移でSnへ至るTの要素、若しくはSnの全要素。
Sn+1 := {s ∈ T | ∃t(∈ Trans, t.src=s) t.dst ∈ Sn } ∪ Sn
※ Sn : あるパスで、nステップ以内にΨが成り立ち、それまではΦが成り立つ集合 (単調増加)

# 最小不動点計算
S := ∪Sn (nは全ての自然数)

処理コスト(検索対象の大きさ)
Snの場合: #T * #Trans * #Sn
=> コスト計算式: #T * #Trans * #S0


○ A(Φ W Ψ) : 最大不動点
数学的定義
T := {s ∈ State | s|=Ψ }

# 集合S0 := 論理式Φを満たす全状態
S0 := {s ∈ State | s|=Φ }

# 集合Sn+1 := 任意の遷移でSnかTへ至る、Snの要素。
Sn+1 := {s ∈ Sn | ∀t(∈ Trans, t.src=s) (t.dst ∈ Sn) or (t.dst ∈ T)}
※ Sn : 任意のパスでnステップ以内に、
Ψが成り立ち、それまではΦが成り立つ or
Ψが成り立たず、全ての状態でΦが成り立つ
状態集合。 (単調減少)

# 最大不動点計算
S := ∩Sn (nは全ての自然数)

処理コスト(検索対象の大きさ)
Snの場合: #Sn * #Trans * (#Sn + #T)
=> コスト計算式: #S0 * #Trans * (#S0 + #T)


○ E(Φ W Ψ) : 最大不動点
数学的定義
T := {s ∈ State | s|=Ψ }

# 集合S0 := 論理式Φを満たす全状態
S0 := {s ∈ State | s|=Φ }

# 集合Sn+1 := ある遷移でSnかTへ至る、Snの要素。
Sn+1 := {s ∈ Sn | ∃t(∈ Trans, t.src=s) (t.dst ∈ Sn) or (t.dst ∈ T)}
※ Sn : あるパスでnステップ以内に、
Ψが成り立ち、それまではΦが成り立つ or
Ψが成り立たず、全ての状態でΦが成り立つ
状態集合。(単調減少)

# 最大不動点計算
S := ∩Sn (nは全ての自然数)

処理コスト(検索対象の大きさ)
Snの場合: #Sn * #Trans * (#Sn + #T)
=> コスト計算式: #S0 * #Trans * (#S0 + #T)
[Supplementary explanation 1: Temporal operator calculation method]
The mathematical calculation method of the temporal operator and the fixed point calculation cost are explained.
○ Symbol definition
State: State set
Trans: State transition set
s: State (∈State)
t: State transition (∈Trans)
t.src: Transition source of state transition t
t.dst: Transition destination of state transition t Φ, Ψ: CTL expression
"s | = Φ": CTL formula Φ is true in state s
#S: Size of set S (number of elements)


○ AX Φ
Mathematical definition
S: = {s ∈ State | ∀t (∈ Trans, t.src = s) t.dst | = Φ}


○ EX Φ
Mathematical definition
S: = {s ∈ State | ∃t (∈ Trans, t.src = s) ST t.dst | = Φ}


○ AG Φ (Maximum fixed point)
Mathematical definition
# Set S0: = all states satisfying the logical expression Φ
S0: = {s ∈ State | s | = Φ}

# Set Sn + 1: = All states of the set Sn that reach all the transitions to the set Sn.
Sn + 1: = {s ∈ Sn | ∀t (∈ Trans, t.src = s) t.dst ∈ Sn}
* Sn: A set of states where any state within n steps on any path satisfies Φ (monotonically decreasing)

# Maximum fixed point calculation
S: = ∩Sn (n is all natural numbers)

Processing cost (size of search target)
For Sn: # Sn-1 * #Trans * # Sn-1
=> Cost formula: (# S0) ^ 2 * #Trans


○ EG Φ (Maximum fixed point)
Mathematical definition
# Set S0: = all states satisfying the logical expression Φ
S0: = {s ∈ State | s | = Φ}

# Set Sn + 1: = all states of set Sn with or without transition to set Sn
Sn + 1: = (s ∈ Sn | (∃t (∈ Trans) ST (t.src = s ∧ t.dst ∈ Sn)) ∨ (¬∃t (∈ Trans) ST t.src = s)}
* Sn: A set of states where any state within n steps satisfies Φ in a path. (Monotonic decrease)

# Maximum fixed point calculation
S: = ∩Sn (n is all natural numbers)

Processing cost (size of search target)
For Sn: #Sn * ((#Trans * #Sn) + #Trans)
=> Cost formula: # S0 * #Trans * (# S0 + 1)


○ AF Φ (Minimum fixed point)
Mathematical definition
# Set S0: = all states satisfying the logical expression Φ
S0: = {s ∈ State | s | = Φ}

# Set Sn + 1: = set of states reflected in Sn at any transition, or all states of set Sn
Sn + 1: = {s ∈ State | ∀t (∈ Trans, t.src = s) t.dst ∈ Sn} ∪ Sn
* Sn: A set of states that satisfy Φ within n steps in an arbitrary path (monotonically increasing)

# Minimum fixed point calculation
S: = ∪Sn (n is all natural numbers)

Processing cost (size of search target)
For Sn: #State * #Trans * #Sn
=> Cost formula: #State * #Trans * # S0


○ EF Φ (Minimum fixed point)
Mathematical definition
# Set S0: = all states satisfying the logical expression Φ
S0: = {s ∈ State | s | = Φ}

# Set Sn + 1: = set of states reflected in Sn at a certain transition, all states of set Sn
Sn + 1: = {s ∈ State | ∃t (∈ Trans, t.src = s) t.dst ∈ Sn} ∪ Sn
* Sn: A set of states that satisfy Φ within n steps in a pass (monotonically increasing)

# Minimum fixed point calculation
S: = ∪Sn (n is all natural numbers)

Processing cost (size of search target)
For Sn: #State * #Trans * #Sn
=> Cost formula: #State * #Trans * # S0


○ A (Φ U Ψ): Minimum fixed point mathematical definition
T: = {s ∈ State | s | = Φ}

# Set S0: = all states satisfying logical expression Ψ
S0: = {s ∈ State | s | = Ψ}

# Set Sn + 1: = Elements of T reaching Sn by any transition, or all elements of Sn.
Sn + 1: = {s ∈ T | ∀t (∈ Trans, t.src = s) t.dst ∈ Sn} ∪ Sn
* Sn: A set of states that satisfy Φ within n steps in a pass (monotonically increasing)

# Minimum fixed point calculation
S: = ∪Sn (n is all natural numbers)

Processing cost (size of search target)
For Sn: #T * #Trans * #Sn
=> Cost formula: #T * #Trans * # S0


○ E (Φ U Ψ): Minimum fixed point mathematical definition
T: = {s ∈ State | s | = Φ}

# Set S0: = all states satisfying logical expression Ψ
S0: = {s ∈ State | s | = Ψ}

# Set Sn + 1: = T elements that reach Sn in a certain transition, or all elements of Sn.
Sn + 1: = {s ∈ T | ∃t (∈ Trans, t.src = s) t.dst ∈ Sn} ∪ Sn
* Sn: A set in which Ψ holds within n steps and Φ holds until then (monotonically increasing)

# Minimum fixed point calculation
S: = ∪Sn (n is all natural numbers)

Processing cost (size of search target)
For Sn: #T * #Trans * #Sn
=> Cost formula: #T * #Trans * # S0


○ A (Φ W Ψ): Maximum fixed point mathematical definition
T: = {s ∈ State | s | = Ψ}

# Set S0: = all states satisfying the logical expression Φ
S0: = {s ∈ State | s | = Φ}

# Set Sn + 1: = An element of Sn that reaches Sn or T at any transition.
Sn + 1: = {s ∈ Sn | ∀t (∈ Trans, t.src = s) (t.dst ∈ Sn) or (t.dst ∈ T)}
* Sn: Within n steps in any pass,
Ψ holds, until then Φ holds or
Ψ does not hold and Φ holds in all states
State set. (Monotonic decrease)

# Maximum fixed point calculation
S: = ∩Sn (n is all natural numbers)

Processing cost (size of search target)
For Sn: #Sn * #Trans * (#Sn + #T)
=> Cost formula: # S0 * #Trans * (# S0 + #T)


○ E (Φ W Ψ): Maximum fixed point mathematical definition
T: = {s ∈ State | s | = Ψ}

# Set S0: = all states satisfying the logical expression Φ
S0: = {s ∈ State | s | = Φ}

# Set Sn + 1: = An element of Sn that reaches Sn or T in a certain transition.
Sn + 1: = {s ∈ Sn | ∃t (∈ Trans, t.src = s) (t.dst ∈ Sn) or (t.dst ∈ T)}
* Sn: Within n steps in a pass,
Ψ holds, until then Φ holds or
Ψ does not hold and Φ holds in all states
State set. (Monotonic decrease)

# Maximum fixed point calculation
S: = ∩Sn (n is all natural numbers)

Processing cost (size of search target)
For Sn: #Sn * #Trans * (#Sn + #T)
=> Cost formula: # S0 * #Trans * (# S0 + #T)

[補足説明2: 論理演算の等価書換え規則]
○ 時相演算の同値関係
AFΦ = ¬EG¬Φ
EFΦ = ¬AG¬Φ
AXΦ = ¬EX¬Φ

A(Φ U Ψ) = ¬E(Φ V Ψ)
E(Φ U Ψ) = ¬A(Φ V Ψ)

○ 時相演算の書換え規則
※ 書換え候補は「検索履歴分析手段」で検索する論理式のテンプレートである。一般的に否定を含めて、2つの候補が存在する。また、右側に書かれた書換え規則は、その書換え候補で元の論理式を等価性を保ちながら置換する場合の置換規則である。

Next
AX
=> 書換え候補: ¬EX¬ (書換え規則 "¬EX¬")
=> 書換え候補: EX¬ (書換え規則 "¬EX¬")
EX
=> 書換え候補: ¬AX¬ (書換え規則 "¬AX¬")
=> 書換え候補: AX¬ (書換え規則 "¬AX¬")

Finally
AF
=> 書換え候補: ¬EG¬ (書換え規則 "¬EG¬")
=> 書換え候補: EG¬ (書換え規則 "¬EG¬")

EF
=> 書換え候補: ¬AG¬ (書換え規則 "¬AG¬")
=> 書換え候補: AG¬ (書換え規則 "¬AG¬")

Globally
AG
=> 書換え候補: ¬EF¬ (書換え規則 "¬EF¬")
=> 書換え候補: EF¬ (書換え規則 "¬EF¬")

EG
=> 書換え候補: ¬AF¬ (書換え規則 "¬AF¬")
=> 書換え候補: AF¬ (書換え規則 "¬AF¬")

Until
A(Φ U Ψ)
=> 書換え候補: ¬E(¬Φ W ¬Ψ) (書換え規則 "¬E(¬Φ W ¬Ψ)")
=> 書換え候補: E(¬Φ W ¬Ψ) (書換え規則 "¬E(¬Φ W ¬Ψ)")

E(Φ U Ψ)
=> 書換え候補: ¬A(¬Φ W ¬Ψ) (書換え規則 "¬A(¬Φ W ¬Ψ)")
=> 書換え候補: A(¬Φ W ¬Ψ) (書換え規則 "¬A(¬Φ W ¬Ψ)")

Weak Until
A(Φ W Ψ)
=> 書換え候補: ¬E(¬Φ U ¬Ψ) (書換え規則 "¬E(¬Φ U ¬Ψ)")
=> 書換え候補: E(¬Φ U ¬Ψ) (書換え規則 "¬E(¬Φ U ¬Ψ)")

E(Φ W Ψ)
=> 書換え候補: ¬A(¬Φ U ¬Ψ) (書換え規則 "¬A(¬Φ U ¬Ψ)")
=> 書換え候補: A(¬Φ U ¬Ψ) (書換え規則 "¬A(¬Φ U ¬Ψ)")
[Supplementary explanation 2: Equivalent rewriting rules for logical operations]
○ Equivalent relation of time phase calculation
AFΦ = ¬EG¬Φ
EFΦ = ¬AG¬Φ
AXΦ = ¬EX¬Φ

A (Φ U Ψ) = ¬E (Φ V Ψ)
E (Φ U Ψ) = ¬A (Φ V Ψ)

○ Temporal operation rewrite rules * Rewrite candidates are templates for logical expressions that are searched by "search history analysis means". There are generally two candidates, including negation. The rewrite rule written on the right side is a replacement rule when replacing the original logical expression with the rewrite candidate while maintaining equivalence.

Next
AX
=> Rewrite candidate: ¬EX¬ (Rewrite rule "¬EX¬")
=> Rewrite candidate: EX¬ (Rewrite rule "¬EX¬")
EX
=> Rewrite candidate: ¬AX¬ (Rewrite rule "¬AX¬")
=> Rewrite candidate: AX¬ (Rewrite rule "¬AX¬")

Finally
AF
=> Rewrite candidate: ¬EG¬ (Rewrite rule "¬EG¬")
=> Rewrite candidate: EG¬ (Rewrite rule "¬EG¬")

EF
=> Rewrite candidate: ¬AG¬ (Rewrite rule "¬AG¬")
=> Rewrite candidate: AG¬ (Rewrite rule "¬AG¬")

Globally
AG
=> Rewrite candidate: ¬EF¬ (Rewrite rule "¬EF¬")
=> Rewrite candidate: EF¬ (Rewrite rule "¬EF¬")

EG
=> Rewrite candidate: ¬AF¬ (Rewrite rule "¬AF¬")
=> Rewrite candidate: AF¬ (Rewrite rule "¬AF¬")

Until
A (Φ U Ψ)
=> Rewrite candidate: ¬E (¬Φ W ¬Ψ) (Rewrite rule "¬E (¬Φ W ¬Ψ)")
=> Rewrite candidate: E (¬Φ W ¬Ψ) (Rewrite rule "¬E (¬Φ W ¬Ψ)")

E (Φ U Ψ)
=> Rewrite candidate: ¬A (¬Φ W ¬Ψ) (Rewrite rule "¬A (¬Φ W ¬Ψ)")
=> Rewrite candidate: A (¬Φ W ¬Ψ) (Rewrite rule "¬A (¬Φ W ¬Ψ)")

Weak Until
A (Φ W Ψ)
=> Rewrite candidate: ¬E (¬Φ U ¬Ψ) (Rewrite rule "¬E (¬Φ U ¬Ψ)")
=> Rewrite candidate: E (¬Φ U ¬Ψ) (Rewrite rule "¬E (¬Φ U ¬Ψ)")

E (Φ W Ψ)
=> Rewrite candidate: ¬A (¬Φ U ¬Ψ) (Rewrite rule "¬A (¬Φ U ¬Ψ)")
=> Rewrite candidate: A (¬Φ U ¬Ψ) (Rewrite rule "¬A (¬Φ U ¬Ψ)")

本発明の一実施の形態としてのシステム状態検証装置のブロック図。1 is a block diagram of a system state verification device as one embodiment of the present invention. FSMの一例を示す図。The figure which shows an example of FSM. 検証条件1を満たす状態の例を示す図。FIG. 5 is a diagram showing an example of a state that satisfies verification condition 1; 検証条件2を満たす状態の例を示す図。FIG. 6 is a diagram showing an example of a state that satisfies verification condition 2. 検証条件3を満たす状態の例を示す図。FIG. 6 is a diagram showing an example of a state that satisfies verification condition 3. 実施例1の全体の処理の流れを示すフローチャート。3 is a flowchart showing the overall processing flow of the first embodiment. 実施例1における検索手続きの組み立て処理の流れを示すフローチャート。3 is a flowchart showing a flow of assembly processing of a search procedure according to the first embodiment. 実施例1の具体例を説明する図。FIG. 3 is a diagram illustrating a specific example of the first embodiment. 実施例2における全体の処理の流れを示すフローチャート。9 is a flowchart showing the overall processing flow in Embodiment 2. 実施例2における検索手続きの組み立て処理の流れを示すフローチャート。9 is a flowchart illustrating a flow of search procedure assembly processing according to the second embodiment. 実施例2における再利用可能性の反映処理の流れを示すフローチャート。9 is a flowchart illustrating a flow of reusability reflection processing according to the second embodiment. 実施例2の具体例を説明する図。FIG. 6 is a diagram illustrating a specific example of the second embodiment. 実施例2の他の具体例を説明する図。FIG. 6 is a diagram illustrating another specific example of the second embodiment. 実施例3の再利用可能性の反映処理の流れを示すフローチャート。10 is a flowchart illustrating a flow of reusability reflection processing according to the third embodiment. 実施例3の具体例を説明する図。FIG. 6 is a diagram illustrating a specific example of Example 3.

符号の説明Explanation of symbols

11:検証条件入力手段
12:構文解析手段
13:検索手続き組立て手段
14:リレーショナルデータベース(第1および第2のリレーショナルデータベース)
15:検索手続き実行手段
16:検索履歴保存手段
17:検査結果出力手段
21:論理式の書き換え候補生成手段
22:検索履歴分析手段
23:検索処理コスト分析手段
24:原子項に関する検索文生成手段
25:論理演算子に関する検索文生成手段
26:時相演算子に関する検索文生成手段
11: Verification condition input means 12: Syntax analysis means 13: Search procedure assembly means 14: Relational database (first and second relational databases)
15: search procedure execution means 16: search history storage means 17: inspection result output means 21: logical expression rewrite candidate generation means 22: search history analysis means 23: search processing cost analysis means 24: search sentence generation means 25 for atomic terms : Retrieval sentence generation means 26 relating to logical operators 26: Retrieval sentence generation means relating to temporal operators

Claims (11)

複数の状態間の遷移を表現した状態遷移モデルを記憶した第1のリレーショナルデータベースと、
計算木論理(CTL:Computational Tree Logic)式により記述した、前記状態遷移モデルの検証条件の入力を受け付ける検証条件受付手段と、
前記検証条件受付手段に入力された前記検証条件を解析することにより、それぞれ論理式が対応付けられた複数のノードを含む構文木を生成し、親ノードの論理式は、子ノードに対応する論理式と、前記親ノードに割り当てられた演算子とに基づいて定義される、構文解析手段と、
前記構文木の各ノードに対応する論理式を充足する状態を検索する検索文を、前記親ノードの検索文が、前記親ノードの前記子ノードに対応する論理式の出力を引数とするように生成する検索文生成手段と、
前記第1のリレーショナルデータベースに対して、前記検索文生成手段により生成された各検索文を、前記構文木における葉ノードからルートノードへ向けて階層の深いノード順に実行することにより、各前記検索文に対応する状態をそれぞれ検索結果として取得する検索実行手段と、
少なくとも前記構文木のルートノードに対応する検索結果を出力する検索結果出力手段と、
を備えた検証装置。
A first relational database storing a state transition model expressing transitions between a plurality of states;
A verification condition accepting means for accepting an input of a verification condition of the state transition model described by a computational tree logic (CTL) expression;
By analyzing the verification condition input to the verification condition receiving unit, a syntax tree including a plurality of nodes each associated with a logical expression is generated, and the logical expression of the parent node is a logical expression corresponding to the child node. A parser means defined based on an expression and an operator assigned to the parent node;
A search statement for searching for a state satisfying a logical expression corresponding to each node of the syntax tree is set such that the search statement of the parent node uses an output of a logical expression corresponding to the child node of the parent node as an argument. A search statement generation means for generating;
By executing each search statement generated by the search statement generation means with respect to the first relational database in the order of nodes in the hierarchy from the leaf node to the root node in the syntax tree, Search execution means for acquiring the corresponding states as search results,
Search result output means for outputting a search result corresponding to at least a root node of the syntax tree;
Verification device with
各前記検索文に対する検索結果を、各前記検索文に対応する論理式または前記論理式の識別子と関連づけて記憶する第2のリレーショナルデータベースをさらに備え、
前記検索文生成手段は、
前記構文木のノードをルートから葉へ向けて階層が浅い順番に読み取り、読み取ったノードに対応する対象論理式またはその識別子が前記第2のリレーショナルデータベースに記憶されているか否かを検査し、
記憶されているときは、前記読み取ったノードの子孫を削除し、前記読み取ったノードに対応する前記対象論理式を、前記対象論理式に関連づけられた前記検索結果への参照に更新し、
前記検索実行手段は、前記検索結果への参照へ更新されたノードについては、前記第2のリレーショナルデータベースを参照することにより前記検索結果を取得する、
ことを特徴とする請求項1に記載の検証装置。
A second relational database for storing a search result for each of the search sentences in association with a logical expression corresponding to each of the search sentences or an identifier of the logical expression;
The search sentence generation means
Read the nodes of the syntax tree from the root to the leaves in order of shallowness, and check whether the target logical expression corresponding to the read node or its identifier is stored in the second relational database,
When stored, delete the descendants of the read node, update the target logical expression corresponding to the read node to a reference to the search result associated with the target logical expression,
The search execution unit acquires the search result by referring to the second relational database for the node updated to the reference to the search result.
The verification apparatus according to claim 1.
前記論理式をドモルガンの法則に基づく書き換え規則により書き換えることにより前記論理式の第1等価式および前記論理式の否定の第2等価式を生成する論理式生成手段をさらに備え、
前記検索文生成手段は、前記対象論理式またはその識別子が記憶されていないとき
(1)前記対象論理式の第1等価式が前記第2のリレーショナルデータベースに記憶されているときは、前記読み取ったノードの子孫を削除しかつ前記対象論理式を前記対象論理式の第1等価式の検索結果への参照に置換し、
(2)前記対象論理式の第1等価式が記憶されておらずかつ前記対象論理式の第2等価式が記憶されているときは、前記読み取ったノードの子孫を削除し、前記読み取ったノードに対応する前記対象論理式を前記第1等価式に置換しかつ前記読み取ったノードの子として前記対象論理式の第2等価式の検索結果への参照を示す第2ノードを追加する、
ことを特徴とする請求項2に記載の検証装置。
A logical expression generation means for generating a first equivalent expression of the logical expression and a negative second equivalent expression of the logical expression by rewriting the logical expression by a rewriting rule based on Domorgan's law;
When the target logical expression or its identifier is not stored (1) when the first equivalent expression of the target logical expression is stored in the second relational database, the search sentence generation means reads Deleting a descendant of the node and replacing the target logical expression with a reference to the search result of the first equivalent expression of the target logical expression;
(2) When the first equivalent expression of the target logical expression is not stored and the second equivalent expression of the target logical expression is stored, the descendants of the read node are deleted, and the read node Replacing the target logical expression corresponding to the first equivalent expression and adding a second node indicating a reference to the search result of the second equivalent expression of the target logical expression as a child of the read node;
The verification apparatus according to claim 2.
前記検索文生成手段は、前記読み取ったノードに割り当てられた演算子が否定演算子と異なるときのみ前記(2)の処理を行うことを特徴とする請求項3に記載の検証装置。   The verification device according to claim 3, wherein the search sentence generation unit performs the process (2) only when an operator assigned to the read node is different from a negation operator. 再帰制御手段をさらに備え、
前記検索文生成手段は、前記(1)および(2)のいずれの条件も満たされないときは、
前記対象論理式に含まれる部分論理式が前記第2のリレーショナルデータベースに記憶されているかどうかを検査し、記憶されているときは前記部分論理式に対応する検索結果を参照することにより前記部分論理式を満たす状態数を取得し、前記読み取ったノードに割り当てられた演算子と、取得した状態数とに基づいて前記対象論理式の処理コストを計算し、
前記第1等価式または前記第2等価式についてもその部分論理式が前記第2のリレーショナルデータベースに記憶されているときは前記対象論理式と同様にしてその処理コストを計算し、
前記第1等価式または第2等価式の処理コストの方が前記対象論理式の処理コストよりも小さいときは、前記(1)または(2)と同様にして、前記構文木を更新し、
前記再帰制御手段は、前記対象論理式、第1等価式および第2等価式のうち、前記第2のリレーショナルデータベースに記憶されていないために処理コストが計算されなかった第2の対象論理式については、前記第2の対象論理式の部分論理式をルートに割り当てた構文木を取得し、取得した構文木に対して再帰的に前記検索文生成手段による処理を行うように制御し、
前記検索文生成手段は、再帰処理の後、前記第2のリレーショナルデータベースにアクセスして前記第2の対象論理式に対応する検索結果を参照することにより前記第2の対象論理式を満たす状態数を取得する
ことを特徴とする請求項3または4に記載の検証装置。
Further comprising recursive control means,
When the search sentence generation means does not satisfy any of the conditions (1) and (2),
It is checked whether or not a partial logical expression included in the target logical expression is stored in the second relational database. When the partial logical expression is stored, the partial logical expression is referred to by referring to a search result corresponding to the partial logical expression. Obtain the number of states that satisfy the expression, calculate the processing cost of the target logical expression based on the operator assigned to the read node and the obtained number of states,
For the first equivalent expression or the second equivalent expression, when the partial logical expression is stored in the second relational database, the processing cost is calculated in the same manner as the target logical expression,
When the processing cost of the first equivalent expression or the second equivalent expression is smaller than the processing cost of the target logical expression, the syntax tree is updated in the same manner as (1) or (2),
The recursive control unit is configured to select a second target logical formula for which a processing cost is not calculated because the target logical formula, the first equivalent formula, and the second equivalent formula are not stored in the second relational database. Acquires a syntax tree in which a partial logical expression of the second target logical expression is assigned to a root, and controls the acquired syntax tree to be recursively processed by the search statement generation unit;
The search statement generation means, after recursion processing, accesses the second relational database and refers to a search result corresponding to the second target logical expression to satisfy the second target logical expression The verification device according to claim 3, wherein the verification device is acquired.
複数の状態間の遷移を表現した状態遷移モデルを記憶した第1のリレーショナルデータベースを準備する準備ステップと、
計算木論理(CTL:Computational Tree Logic)式により記述した、前記状態遷移モデルの検証条件の入力を受け付ける検証条件受付ステップと、
前記検証条件受付ステップで入力された前記検証条件を解析することにより、それぞれ論理式が対応付けられた複数のノードを含む構文木を生成し、親ノードの論理式は、子ノードに対応する論理式と、前記親ノードに割り当てられた演算子とに基づいて定義される、構文解析ステップと、
前記構文木の各ノードに対応する論理式を充足する状態を検索する検索文を、前記親ノードの検索文が、前記親ノードの前記子ノードに対応する論理式の出力を引数とするように生成する検索文生成ステップと、
前記第1のリレーショナルデータベースに対して、前記検索文生成ステップにより生成された各検索文を、前記構文木における葉ノードからルートノードへ向けて階層の深いノード順に実行することにより、各前記検索文に対応する状態をそれぞれ検索結果として取得する検索実行ステップと、
少なくとも前記構文木のルートノードに対応する検索結果を出力する検索結果出力ステップと
を備えた検証方法。
Preparing a first relational database storing a state transition model expressing transitions between a plurality of states;
A verification condition receiving step for receiving an input of a verification condition of the state transition model described by a computational tree logic (CTL) expression;
By analyzing the verification condition input in the verification condition receiving step, a syntax tree including a plurality of nodes each associated with a logical expression is generated, and the logical expression of the parent node is the logical expression corresponding to the child node. A parsing step defined based on an expression and an operator assigned to the parent node;
A search statement for searching for a state satisfying a logical expression corresponding to each node of the syntax tree is set such that the search statement of the parent node uses an output of a logical expression corresponding to the child node of the parent node as an argument. A search statement generation step to generate,
By executing each search sentence generated by the search sentence generation step with respect to the first relational database in the order of nodes in the hierarchy from the leaf node to the root node in the syntax tree, each search sentence is executed. A search execution step for acquiring the states corresponding to each as a search result,
A search result output step for outputting a search result corresponding to at least a root node of the syntax tree.
各前記検索文に対する検索結果を、各前記検索文に対応する論理式または前記論理式の識別子と関連づけて第2のリレーショナルデータベースに記憶する記憶ステップと、をさらに備え、
前記検索文生成ステップは、
前記構文木のノードをルートから葉へ向けて階層が浅い順番に読み取り、読み取ったノードに対応する対象論理式またはその識別子が前記第2のリレーショナルデータベースに記憶されているか否かを検査し、
記憶されているときは、前記読み取ったノードの子孫を削除し、前記読み取ったノードに対応する前記対象論理式を、前記対象論理式に関連づけられた前記検索結果への参照に更新し、
前記検索実行ステップは、前記検索結果への参照へ更新されたノードについては、前記第2のリレーショナルデータベースを参照することにより前記検索結果を取得する、
ことを特徴とする請求項6に記載の検証方法。
Storing a search result for each of the search sentences in a second relational database in association with a logical expression corresponding to each of the search sentences or an identifier of the logical expression;
The search sentence generation step includes:
Read the nodes of the syntax tree from the root to the leaves in order of shallowness, and check whether the target logical expression corresponding to the read node or its identifier is stored in the second relational database,
When stored, delete the descendants of the read node, update the target logical expression corresponding to the read node to a reference to the search result associated with the target logical expression,
The search execution step acquires the search result by referring to the second relational database for the node updated to the reference to the search result.
The verification method according to claim 6.
前記論理式をドモルガンの法則に基づく書き換え規則により書き換えることにより前記論理式の第1等価式および前記論理式の否定の第2等価式を生成する論理式生成ステップをさらに備え、
前記検索文生成ステップは、前記対象論理式またはその識別子が記憶されていないとき
(1)前記対象論理式の第1等価式が前記第2のリレーショナルデータベースに記憶されているときは、前記読み取ったノードの子孫を削除しかつ前記対象論理式を前記対象論理式の第1等価式の検索結果への参照に置換し、
(2)前記対象論理式の第1等価式が記憶されておらずかつ前記対象論理式の第2等価式が記憶されているときは、前記読み取ったノードの子孫を削除し、前記読み取ったノードに対応する前記対象論理式を前記第1等価式に置換しかつ前記読み取ったノードの子として前記対象論理式の第2等価式の検索結果への参照を示す第2ノードを追加する、
ことを特徴とする請求項7に記載の検証方法。
A logical expression generation step of generating a first equivalent expression of the logical expression and a negative second equivalent expression of the logical expression by rewriting the logical expression according to a rewrite rule based on Domorgan's law;
In the search statement generation step, when the target logical expression or its identifier is not stored, (1) when the first equivalent expression of the target logical expression is stored in the second relational database, the read Deleting a descendant of the node and replacing the target logical expression with a reference to the search result of the first equivalent expression of the target logical expression;
(2) When the first equivalent expression of the target logical expression is not stored and the second equivalent expression of the target logical expression is stored, the descendants of the read node are deleted, and the read node Replacing the target logical expression corresponding to the first equivalent expression and adding a second node indicating a reference to the search result of the second equivalent expression of the target logical expression as a child of the read node;
The verification method according to claim 7.
前記検索文生成ステップは、前記読み取ったノードに割り当てられた演算子が否定演算子と異なるときのみ前記(2)の処理を行うことを特徴とする請求項8に記載の検証方法。   9. The verification method according to claim 8, wherein the search sentence generation step performs the process (2) only when an operator assigned to the read node is different from a negation operator. 再帰制御ステップをさらに備え、
前記検索文生成ステップは、前記(1)および(2)のいずれの条件も満たされないときは、
前記対象論理式に含まれる部分論理式が前記第2のリレーショナルデータベースに記憶されているかどうかを検査し、記憶されているときは前記部分論理式に対応する検索結果を参照することにより前記部分論理式を満たす状態数を取得し、前記読み取ったノードに割り当てられた演算子と、取得した状態数とに基づいて前記対象論理式の処理コストを計算し、
前記第1等価式または前記第2等価式についてもその部分論理式が前記第2のリレーショナルデータベースに記憶されているときは前記対象論理式と同様にしてその処理コストを計算し、
前記第1等価式または第2等価式の処理コストの方が前記対象論理式の処理コストよりも小さいときは、前記(1)または(2)と同様にして、前記構文木を更新し、
前記再帰制御ステップは、前記対象論理式、第1等価式および第2等価式のうち、前記第2のリレーショナルデータベースに記憶されていないために処理コストが計算されなかった第2の対象論理式については、前記第2の対象論理式の部分論理式をルートに割り当てた構文木を取得し、取得した構文木に対して再帰的に前記検索文生成ステップによる処理を行うように制御し、
前記検索文生成ステップは、再帰処理の後、前記第2のリレーショナルデータベースにアクセスして前記第2の対象論理式に対応する検索結果を参照することにより前記第2の対象論理式を満たす状態数を取得する
ことを特徴とする請求項8または9に記載の検証方法。
Further comprising a recursive control step,
In the search sentence generation step, when neither of the conditions (1) and (2) is satisfied,
It is checked whether or not a partial logical expression included in the target logical expression is stored in the second relational database. When the partial logical expression is stored, the partial logical expression is referred to by referring to a search result corresponding to the partial logical expression. Obtain the number of states that satisfy the expression, calculate the processing cost of the target logical expression based on the operator assigned to the read node and the obtained number of states,
For the first equivalent expression or the second equivalent expression, when the partial logical expression is stored in the second relational database, the processing cost is calculated in the same manner as the target logical expression,
When the processing cost of the first equivalent expression or the second equivalent expression is smaller than the processing cost of the target logical expression, the syntax tree is updated in the same manner as (1) or (2),
In the recursive control step, a second target logical formula whose processing cost is not calculated because it is not stored in the second relational database among the target logical formula, the first equivalent formula, and the second equivalent formula. Acquires a syntax tree in which a partial logical expression of the second target logical expression is assigned to a root, and controls to perform the processing by the search statement generation step recursively on the acquired syntax tree;
In the retrieval sentence generation step, after recursion processing, the number of states satisfying the second target logical expression by accessing the second relational database and referring to a search result corresponding to the second target logical expression The verification method according to claim 8, wherein the verification method is acquired.
請求項6ないし10のいずれか一項に記載の各ステップをコンピュータに実行させるための検証プログラム。   The verification program for making a computer perform each step as described in any one of Claims 6 thru | or 10.
JP2008115597A 2008-04-25 2008-04-25 Inspection device, verification method and verification program Pending JP2009265996A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008115597A JP2009265996A (en) 2008-04-25 2008-04-25 Inspection device, verification method and verification program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008115597A JP2009265996A (en) 2008-04-25 2008-04-25 Inspection device, verification method and verification program

Publications (1)

Publication Number Publication Date
JP2009265996A true JP2009265996A (en) 2009-11-12

Family

ID=41391763

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008115597A Pending JP2009265996A (en) 2008-04-25 2008-04-25 Inspection device, verification method and verification program

Country Status (1)

Country Link
JP (1) JP2009265996A (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015510181A (en) * 2012-01-25 2015-04-02 マイクロソフト コーポレーション Graphical representation of operator precedence
CN109992584A (en) * 2019-03-26 2019-07-09 吕新民 A kind of storage method of data-structure tree that using for reference go layout
JP7477084B1 (en) 2023-09-14 2024-05-01 タオ・エンジニアリング株式会社 Organic waste treatment information management device, organic waste treatment information acquisition device, organic waste treatment information management method, and organic waste treatment information acquisition method

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015510181A (en) * 2012-01-25 2015-04-02 マイクロソフト コーポレーション Graphical representation of operator precedence
CN109992584A (en) * 2019-03-26 2019-07-09 吕新民 A kind of storage method of data-structure tree that using for reference go layout
CN109992584B (en) * 2019-03-26 2023-09-22 吕新民 Storage method of data structure tree for reference of Weiqi layout
JP7477084B1 (en) 2023-09-14 2024-05-01 タオ・エンジニアリング株式会社 Organic waste treatment information management device, organic waste treatment information acquisition device, organic waste treatment information management method, and organic waste treatment information acquisition method

Similar Documents

Publication Publication Date Title
JP7090778B2 (en) Impact analysis
US10437573B2 (en) General purpose distributed data parallel computing using a high level language
US8566787B2 (en) System and method for improving modularity of large legacy software systems
Kaliszyk et al. Holstep: A machine learning dataset for higher-order logic theorem proving
Göde et al. Studying clone evolution using incremental clone detection
Göde et al. Incremental clone detection
Kumar et al. Design and management of flexible process variants using templates and rules
Wahler et al. Clone detection in source code by frequent itemset techniques
US10885050B2 (en) Altering in-flight streamed data from a relational database
US11281864B2 (en) Dependency graph based natural language processing
US10025826B2 (en) Querying in-flight streamed data from a relational database
Delfmann et al. The generic model query language GMQL–Conceptual specification, implementation, and runtime evaluation
CN115543402B (en) Software knowledge graph increment updating method based on code submission
US20210089284A1 (en) Method and system for using subroutine graphs for formal language processing
US11144549B2 (en) Dynamic generation of join statements for database operations
CN109885585A (en) Support the distributed data base system and method for storing process, trigger and view
CN107818181A (en) Indexing means and its system based on Plcient interactive mode engines
US10901987B2 (en) Dynamic automatic generation of database views
Zou et al. Lachesis: automatic partitioning for UDF-centric analytics
JP2009265996A (en) Inspection device, verification method and verification program
JP6229454B2 (en) Software asset management device, software asset management method, and software asset management program
CN110990423A (en) SQL statement execution method, device, equipment and storage medium
Tukaram Design and development of software tool for code clone search, detection, and analysis
CN113176999A (en) Software testing method and system based on distributed application program
Grossniklaus et al. Towards a benchmark for graph data management and processing