470 research outputs found
SAT Modulo Linear Arithmetic for Solving Polynomial
Polynomial constraint solving plays a prominent role in several areas of
hardware and software analysis and verification, e.g., termination proving, program
invariant generation and hybrid system verification, to name a few. In this paper we
propose a new method for solving non-linear constraints based on encoding the problem
into an SMT problem considering only linear arithmetic. Unlike other existing methods,
our method focuses on proving satisfiability of the constraints rather than on proving
unsatisfiability, which is more relevant in several applications as we illustrate with
several examples. Nevertheless, we also present new techniques based on the analysis
of unsatisfiable cores that allow one to efficiently prove unsatisfiability too for a broad
class of problems. The power of our approach is demonstrated by means of extensive
experiments comparing our prototype with state-of-the-art tools on benchmarks taken
both from the academic and the industrial world
Deciding Predicate Logical Theories Of Real-Valued Functions
The notion of a real-valued function is central to mathematics, computer science, and many other scientific fields. Despite this importance, there are hardly any positive results on decision procedures for predicate logical theories that reason about real-valued functions. This paper defines a first-order predicate language for reasoning about multi-dimensional smooth real-valued functions and their derivatives, and demonstrates that - despite the obvious undecidability barriers - certain positive decidability results for such a language are indeed possible
Flow Logic
Flow networks have attracted a lot of research in computer science. Indeed,
many questions in numerous application areas can be reduced to questions about
flow networks. Many of these applications would benefit from a framework in
which one can formally reason about properties of flow networks that go beyond
their maximal flow. We introduce Flow Logics: modal logics that treat flow
functions as explicit first-order objects and enable the specification of rich
properties of flow networks. The syntax of our logic BFL* (Branching Flow
Logic) is similar to the syntax of the temporal logic CTL*, except that atomic
assertions may be flow propositions, like or , for
, which refer to the value of the flow in a vertex, and
that first-order quantification can be applied both to paths and to flow
functions. We present an exhaustive study of the theoretical and practical
aspects of BFL*, as well as extensions and fragments of it. Our extensions
include flow quantifications that range over non-integral flow functions or
over maximal flow functions, path quantification that ranges over paths along
which non-zero flow travels, past operators, and first-order quantification of
flow values. We focus on the model-checking problem and show that it is
PSPACE-complete, as it is for CTL*. Handling of flow quantifiers, however,
increases the complexity in terms of the network to , even
for the LFL and BFL fragments, which are the flow-counterparts of LTL and CTL.
We are still able to point to a useful fragment of BFL* for which the
model-checking problem can be solved in polynomial time. Finally, we introduce
and study the query-checking problem for BFL*, where under-specified BFL*
formulas are used for network exploration
Deciding Predicate Logical Theories of Real-Valued Functions
The notion of a real-valued function is central to mathematics, computer
science, and many other scientific fields. Despite this importance, there are
hardly any positive results on decision procedures for predicate logical
theories that reason about real-valued functions. This paper defines a
first-order predicate language for reasoning about multi-dimensional smooth
real-valued functions and their derivatives, and demonstrates that - despite
the obvious undecidability barriers - certain positive decidability results for
such a language are indeed possible
Foundational issues in implementing constraint logic programming systems
AbstractImplementations of Constraint Logic Programming (CLP) systems are often incomplete with respect to the theories they are intended to implement. This paper studies two issues that arise in dealing with these incomplete implementations. First, the notion of “satisfiability function” (the analogue of unification) is formally defined, and the question of which such functions are reasonable is studied. Second, techniques are given, based on the notion of satisfiability function, for formally (proof-theoretically) specifying an intended CLP theory or characterizing an existing CLP system. Such proof-theoretic characterizations have applications in proving soundness and completeness results, and proving properties of programs. Notions from substructural logic and the notion of Henkinness of the theory are shown to be important here
When Less Is More: Consequence-Finding in a Weak Theory of Arithmetic
This paper presents a theory of non-linear integer/real arithmetic and
algorithms for reasoning about this theory. The theory can be conceived as an
extension of linear integer/real arithmetic with a weakly-axiomatized
multiplication symbol, which retains many of the desirable algorithmic
properties of linear arithmetic. In particular, we show that the conjunctive
fragment of the theory can be effectively manipulated (analogously to the usual
operations on convex polyhedra, the conjunctive fragment of linear arithmetic).
As a result, we can solve the following consequence-finding problem: given a
ground formula F, find the strongest conjunctive formula that is entailed by F.
As an application of consequence-finding, we give a loop invariant generation
algorithm that is monotone with respect to the theory and (in a sense)
complete. Experiments show that the invariants generated from the consequences
are effective for proving safety properties of programs that require non-linear
reasoning
- …