Section: Scientific Foundations
Underlying models
The formal models we use are mainly automata-like structures such as
labelled transition systems (LTS) and some of their extensions: an
LTS is a tuple
To model reactive systems in the testing context, we use Input/Output
labeled transition systems (IOLTS for short). In this setting, the
interactions between the system and its environment (where the tester
lies) must be partitioned into inputs (controlled by the environment),
outputs (observed by the environment), and internal (non observable)
events modeling the internal behavior of the system. The alphabet
In the controller synthesis theory, we also distinguish between
controllable and uncontrollable events (
In the context of verification, we also use Timed Automata. A timed
automaton is a tuple
Also, for verification purposes, we use graph grammars that are a general tool to define families of graphs. Such grammars are formed by a set of rules whose left-hand sides are hyperedges and right-hand sides are hypergraphs. For graphs with finite degree, these grammars characterise transition graphs of pushdown automata (the correspondence between graphs generated by grammars and transition graphs of pushdown automata is bijective). Graph grammars provide a simple yet powerful setting to define and study infinite state systems.
In order to cope with models closer to practical specification
languages, we also need higher level models encompassing both control
and data aspects. We defined (input-output) symbolic transition
systems ((IO)STS), which are extensions of (IO)LTS that convey or
operate on data (i.e., program variables, communication parameters,
symbolic constants) through message passing, guards, and assignments.
Formally, an IOSTS is a tuple
Our research is based on well established theories: conformance testing, supervisory control, abstract interpretation, and theorem proving. Most of the algorithms that we employ take their origins in these theories:
graph traversal algorithms (breadth first, depth first, strongly connected components, ...). We use these algorithms for verification as well as test generation and control synthesis.
BDDs (Binary Decision Diagrams) algorithms, for manipulating Boolean formulae, and their MTBDDs (Multi-Terminal Decision Diagrams) extension for manipulating more general functions. We use these algorithms for verification, test generation and control.
abstract interpretation algorithms, specifically in the abstract domain of convex polyhedra (for example, Chernikova's algorithm for the computation of dual forms). Such algorithms are used in verification and test generation.
logical decision algorithms, such as satisfiability of formulas in Presburger arithmetics. We use these algorithms during generation and execution of symbolic test cases.