42 research outputs found
Extensions to the CEGAR approach on Petri nets
Formal verification is becoming more prevalent and often compulsory in the safety-critical system and software development processes. Reachability analysis can provide information about safety and invariant properties of the developed system. However, checking the reachability is a computationally hard problem, especially in the case of asynchronous or infinite state systems. Petri nets are widely used for the modeling and verification of such systems. In this paper we examine a recently published approach for the reachability checking of Petri net markings. We give proofs concerning the completeness and the correctness properties of the algorithm, and we introduce algorithmic improvements. We also extend the algorithm to handle new classes of problems: submarking coverability and reachability of Petri nets with inhibitor arcs
Activity-Based Abstraction Refinement for Timed Systems
Formal analysis of real time systems is important as they are widely used in safety critical domains. Such systems combine discrete behaviours represented by locations and timed behaviours represented by clock variables. The counterexample-guided abstraction refinement (CEGAR) algorithm utilizes the fundamental technique of abstraction to system verification. We propose a CEGAR-based algorithm for reachability analysis of timed systems. The algorithm is specialized to handle the time related behaviours efficiently by introducing a refinement technique tailored specially to clock variables. The performance of the presented algorithm is demonstrated by runtime measurements on models commonly used for benchmarking such algorithms
A Preliminary Analysis on the Effect of Randomness in a CEGAR Framework
Formal verification techniques can check the correctness of systems in a mathematically precise way. Counterexample-Guided Abstraction Refinement (CEGAR) is an automatic algorithm that reduces the complexity of systems by constructing and refining abstractions. CEGAR is a generic approach, having many variants and strategies developed over the years. However, as the variants become more and more advanced, one may not be sure whether the performance of a strategy can be attributed to the strategy itself or to other, unintentional factors. In this paper we perform an experiment by evaluating the performance of different strategies while randomizing certain external factors such as the search strategy and variable naming. We show that randomization introduces a great variation in the output metrics, and that in several cases this might even influence whether the algorithm successfully terminates
SMT-Friendly Formalization of the Solidity Memory Model
Solidity is the dominant programming language for Ethereum smart contracts.
This paper presents a high-level formalization of the Solidity language with a
focus on the memory model. The presented formalization covers all features of
the language related to managing state and memory. In addition, the
formalization we provide is effective: all but few features can be encoded in
the quantifier-free fragment of standard SMT theories. This enables precise and
efficient reasoning about the state of smart contracts written in Solidity. The
formalization is implemented in the solc-verify verifier and we provide an
extensive set of tests that covers the breadth of the required semantics. We
also provide an evaluation on the test set that validates the semantics and
shows the novelty of the approach compared to other Solidity-level contract
analysis tools.Comment: Authors' manuscript. Published in P. M\"uller (Ed.): ESOP 2020, LNCS
12075, 2020. The final publication is available at Springer via
https://doi.org/10.1007/978-3-030-44914-8_
Exploratory Analysis of the Performance of a Configurable CEGAR Framework
Formal verification techniques can check the correctness of systems in a mathematically precise way. However, their computational complexity often prevents their successful application. The counterexample-guided abstraction refinement (CEGAR) algorithm aims to overcome this problem by automatically building abstractions for the system to reduce its complexity. Previously, we developed a generic CEGAR framework, which incorporates many configurations of the algorithm. In this paper we focus on an exploratory analysis of our framework. We identify parameters of the systems and algorithm configurations, overview some possible analysis methods and present preliminary results. We show that different variants are more efficient for certain tasks and we also describe how the properties of the system and parameters of the algorithm affect the success of verification
Exploiting Hierarchy in the Abstraction-Based Verification of Statecharts Using SMT Solvers
Statecharts are frequently used as a modeling formalism in the design of
state-based systems. Formal verification techniques are also often applied to
prove certain properties about the behavior of the system. One of the most
efficient techniques for formal verification is Counterexample-Guided
Abstraction Refinement (CEGAR), which reduces the complexity of systems by
automatically building and refining abstractions. In our paper we present a
novel adaptation of the CEGAR approach to hierarchical statechart models. First
we introduce an encoding of the statechart to logical formulas that preserves
information about the state hierarchy. Based on this encoding we propose
abstraction and refinement techniques that utilize the hierarchical structure
of statecharts and also handle variables in the model. The encoding allows us
to use SMT solvers for the systematic exploration and verification of the
abstract model, including also bounded model checking. We demonstrate the
applicability and efficiency of our abstraction techniques with measurements on
an industry-motivated example.Comment: In Proceedings FESCA 2017, arXiv:1703.0659
Backward Reachability Analysis for Timed Automata with Data Variables
Efficient techniques for reachability analysis of timed automata are zone-based methods that explore the reachable state space from the initial state, and SMT-based methods that perform backward search from the target states. It is also possible to perform backward exploration based on zones, but calculating predecessor states for systems with data variables is computationally expensive, prohibiting the successful application of this approach so far. In this paper we overcome this limitation by combining zone-based backward exploration with the weakest precondition operation for data variables. This combination allows us to handle diagonal constraints efficiently as opposed to zone-based forward search where most approaches require additional operations to ensure correctness. We demonstrate the applicability and compare the efficiency of the algorithm to existing forward exploration approaches by measurements performed on industrial case studies. Although the large number of states often prevents successful verification, we show that data variables can be efficienlty handled by the weakest precondition operation. This way our new approach complements existing techniques