279 research outputs found
New results on rewrite-based satisfiability procedures
Program analysis and verification require decision procedures to reason on
theories of data structures. Many problems can be reduced to the satisfiability
of sets of ground literals in theory T. If a sound and complete inference
system for first-order logic is guaranteed to terminate on T-satisfiability
problems, any theorem-proving strategy with that system and a fair search plan
is a T-satisfiability procedure. We prove termination of a rewrite-based
first-order engine on the theories of records, integer offsets, integer offsets
modulo and lists. We give a modularity theorem stating sufficient conditions
for termination on a combinations of theories, given termination on each. The
above theories, as well as others, satisfy these conditions. We introduce
several sets of benchmarks on these theories and their combinations, including
both parametric synthetic benchmarks to test scalability, and real-world
problems to test performances on huge sets of literals. We compare the
rewrite-based theorem prover E with the validity checkers CVC and CVC Lite.
Contrary to the folklore that a general-purpose prover cannot compete with
reasoners with built-in theories, the experiments are overall favorable to the
theorem prover, showing that not only the rewriting approach is elegant and
conceptually simple, but has important practical implications.Comment: To appear in the ACM Transactions on Computational Logic, 49 page
Compilation and Equivalence of Imperative Objects (Revised Report)
We adopt the untyped imperative object calculus of Abadi andCardelli as a minimal setting in which to study problems of compilationand program equivalence that arise when compiling object orientedlanguages. We present both a big-step and a small-stepsubstitution-based operational semantics for the calculus. Our firsttwo results are theorems asserting the equivalence of our substitution based semantics with a closure-based semantics like that given by Abadi and Cardelli. Our third result is a direct proof of the correctness of compilation to a stack-based abstract machine via a small-step decompilation algorithm. Our fourth result is that contextual equivalence of objects coincides with a form of Mason and Talcott's CIUequivalence; the latter provides a tractable means of establishing operational equivalences. Finally, we prove correct an algorithm, used inour prototype compiler, for statically resolving method offsets. This isthe first study of correctness of an object-oriented abstract machine,and of operational equivalence for the imperative object calculus
One Quantifier Alternation in First-Order Logic with Modular Predicates
Adding modular predicates yields a generalization of first-order logic FO
over words. The expressive power of FO[<,MOD] with order comparison and
predicates for has been investigated by Barrington,
Compton, Straubing and Therien. The study of FO[<,MOD]-fragments was initiated
by Chaubard, Pin and Straubing. More recently, Dartois and Paperman showed that
definability in the two-variable fragment FO2[<,MOD] is decidable. In this
paper we continue this line of work.
We give an effective algebraic characterization of the word languages in
Sigma2[<,MOD]. The fragment Sigma2 consists of first-order formulas in prenex
normal form with two blocks of quantifiers starting with an existential block.
In addition we show that Delta2[<,MOD], the largest subclass of Sigma2[<,MOD]
which is closed under negation, has the same expressive power as two-variable
logic FO2[<,MOD]. This generalizes the result FO2[<] = Delta2[<] of Therien and
Wilke to modular predicates. As a byproduct, we obtain another decidable
characterization of FO2[<,MOD]
How TRAF-NETSIM Works.
This paper describes how TRAF-NETSIM works in detail. It is a review of the TRAF-NETSIM micro-simulation model, for use in the research topic "The Development of Queueing Simulation Procedures for Traffic in Bangkok". TRAF-NETSIM is a computer program for modelling of traffic in urban networks. It is written in the FORTRAN 77 computer language. It uses bit-manipulation mechanisms for "packing" and "unpacking" data and a program overlay structure to reduce the computer memory requirements of the program. The model is based on a fixed time, and discrete event simulation approach. The periodic scan method is used in the model with a time interval of one second. In the model, up to 16 different vehicle types with 4 different vehicle categories (car, carpool, bus and truck) can be identified. Also, the driver's behaviour (passive, normal, aggressive), pedestrians' movement, parking and blocking (eg a broken-down car) can be simulated. Moreover, it has the capability to simulate the effects of traffic control ranging from a simple stop sign controlled junction to a dynamic/real time control system. The effects of spillbacks can be simulated in detail. The estimation of fuel consumption and vehicle emissions are optional simulations. Car following and lane changing models are incorporated into TRAF-NETSIM. The outputs can be shown in US standard units, Metric units, or both
A formally verified compiler back-end
This article describes the development and formal verification (proof of
semantic preservation) of a compiler back-end from Cminor (a simple imperative
intermediate language) to PowerPC assembly code, using the Coq proof assistant
both for programming the compiler and for proving its correctness. Such a
verified compiler is useful in the context of formal methods applied to the
certification of critical software: the verification of the compiler guarantees
that the safety properties proved on the source code hold for the executable
compiled code as well
Separation Logic for Small-step Cminor
Cminor is a mid-level imperative programming language; there are
proved-correct optimizing compilers from C to Cminor and from Cminor to machine
language. We have redesigned Cminor so that it is suitable for Hoare Logic
reasoning and we have designed a Separation Logic for Cminor. In this paper, we
give a small-step semantics (instead of the big-step of the proved-correct
compiler) that is motivated by the need to support future concurrent
extensions. We detail a machine-checked proof of soundness of our Separation
Logic. This is the first large-scale machine-checked proof of a Separation
Logic w.r.t. a small-step semantics. The work presented in this paper has been
carried out in the Coq proof assistant. It is a first step towards an
environment in which concurrent Cminor programs can be verified using
Separation Logic and also compiled by a proved-correct compiler with formal
end-to-end correctness guarantees.Comment: Version courte du rapport de recherche RR-613
Recommended from our members
Incremental closure for systems of two variables per inequality
Subclasses of linear inequalities where each inequality has at most two vari- ables are popular in abstract interpretation and model checking, because they strike a balance between what can be described and what can be efficiently computed. This paper focuses on the TVPI class of inequalities, for which each coefficient of each two variable inequality is unrestricted. An implied TVPI in- equality can be generated from a pair of TVPI inequalities by eliminating a given common variable (echoing resolution on clauses). This operation, called result , can be applied to derive TVPI inequalities which are entailed (implied) by a given TVPI system. The key operation on TVPI is calculating closure: satisfiability can be observed from a closed system and a closed system also simplifies the calculation of other operations. A closed system can be derived by repeatedly applying the result operator. The process of adding a single TVPI inequality to an already closed input TVPI system and then finding the closure of this augmented system is called incremental closure. This too can be calcu- lated by the repeated application of the result operator. This paper studies the calculus defined by result , the structure of result derivations, and how deriva- tions can be combined and controlled. A series of lemmata on derivations are presented that, collectively, provide a pathway for synthesising an algorithm for incremental closure. The complexity of the incremental closure algorithm is analysed and found to be O (( n 2 + m 2 )lg( m )), where n is the number of variables and m the number of inequalities of the input TVPI system
A Formally Verified Floating-Point Implementation of the Compact Position Reporting Algorithm
The Automatic Dependent Surveillance-Broadcast (ADS-B) system allows aircraft to communicate their current state, including position and velocity information, to other aircraft in their vicinity and to ground stations. The Compact Position Reporting (CPR) algorithm is the ADS-B module responsible for the encoding and decoding of aircraft positions. CPR is highly sensitive to computer arithmetic since it heavily relies on functions that are intrinsically unstable such as floor and modulo. In this paper, a formally-verified double-precision floating-point implementation of the CPR algorithm is presented. The verification proceeds in three steps. First, an alternative version of CPR, which reduces the floating-point rounding error is proposed. Then, the Prototype Verification System (PVS) is used to formally prove that the ideal real-number counterpart of the improved algorithm is mathematically equivalent to the standard CPR definition. Finally, the static analyzer Frama-C is used to verify that the double-precision implementation of the improved algorithm is correct with respect to its operational requirement. The alternative algorithm is currently being considered for inclusion in the revised version of the ADS-B standards document as the reference implementation of the CPR algorithm
- …