519 research outputs found
Proving Skipping Refinement with ACL2s
We describe three case studies illustrating the use of ACL2s to prove the
correctness of optimized reactive systems using skipping refinement. Reasoning
about reactive systems using refinement involves defining an abstract,
high-level specification system and a concrete, low-level system. Next, one
shows that the behaviors of the implementation system are allowed by the
specification system. Skipping refinement allows us to reason about
implementation systems that can "skip" specification states due to
optimizations that allow the implementation system to take several
specification steps at once. Skipping refinement also allows implementation
systems to, i.e., to take several steps before completing a specification step.
We show how ACL2s can be used to prove skipping refinement theorems by modeling
and proving the correctness of three systems: a JVM-inspired stack machine, a
simple memory controller, and a scalar to vector compiler transformation.Comment: In Proceedings ACL2 2015, arXiv:1509.05526. arXiv admin note: text
overlap with arXiv:1502.0294
Partial Quantifier Elimination
We consider the problem of Partial Quantifier Elimination (PQE). Given
formula exists(X)[F(X,Y) & G(X,Y)], where F, G are in conjunctive normal form,
the PQE problem is to find a formula F*(Y) such that F* & exists(X)[G] is
logically equivalent to exists(X)[F & G]. We solve the PQE problem by
generating and adding to F clauses over the free variables that make the
clauses of F with quantified variables redundant. The traditional Quantifier
Elimination problem (QE) is a special case of PQE where G is empty so all
clauses of the input formula with quantified variables need to be made
redundant. The importance of PQE is twofold. First, many problems are more
naturally formulated in terms of PQE rather than QE. Second, in many cases PQE
can be solved more efficiently than QE. We describe a PQE algorithm based on
the machinery of dependency sequents and give experimental results showing the
promise of PQE
ILP Modulo Data
The vast quantity of data generated and captured every day has led to a
pressing need for tools and processes to organize, analyze and interrelate this
data. Automated reasoning and optimization tools with inherent support for data
could enable advancements in a variety of contexts, from data-backed decision
making to data-intensive scientific research. To this end, we introduce a
decidable logic aimed at database analysis. Our logic extends quantifier-free
Linear Integer Arithmetic with operators from Relational Algebra, like
selection and cross product. We provide a scalable decision procedure that is
based on the BC(T) architecture for ILP Modulo Theories. Our decision procedure
makes use of database techniques. We also experimentally evaluate our approach,
and discuss potential applications.Comment: FMCAD 2014 final version plus proof
Skipping Refinement
We introduce skipping refinement, a new notion of correctness for reasoning
about optimized reactive systems. Reasoning about reactive systems using
refinement involves defining an abstract, high-level specification system and a
concrete, low-level implementation system. One then shows that every behavior
allowed by the implementation is also allowed by the specification. Due to the
difference in abstraction levels, it is often the case that the implementation
requires many steps to match one step of the specification, hence, it is quite
useful for refinement to directly account for stuttering. Some optimized
implementations, however, can actually take multiple specification steps at
once. For example, a memory controller can buffer the commands to the memory
and at a later time simultaneously update multiple memory locations, thereby
skipping several observable states of the abstract specification, which only
updates one memory location at a time. We introduce skipping simulation
refinement and provide a sound and complete characterization consisting of
"local" proof rules that are amenable to mechanization and automated
verification. We present case studies that highlight the applicability of
skipping refinement: a JVM-inspired stack machine, a simple memory controller
and a scalar to vector compiler transformation. Our experimental results
demonstrate that current model-checking and automated theorem proving tools
have difficultly automatically analyzing these systems using existing notions
of correctness, but they can analyze the systems if we use skipping refinement.Comment: Submitted to CAV 201
Data Definitions in the ACL2 Sedan
We present a data definition framework that enables the convenient
specification of data types in ACL2s, the ACL2 Sedan. Our primary motivation
for developing the data definition framework was pedagogical. We were teaching
undergraduate students how to reason about programs using ACL2s and wanted to
provide them with an effective method for defining, testing, and reasoning
about data types in the context of an untyped theorem prover. Our framework is
now routinely used not only for pedagogical purposes, but also by advanced
users.
Our framework concisely supports common data definition patterns, e.g. list
types, map types, and record types. It also provides support for polymorphic
functions. A distinguishing feature of our approach is that we maintain both a
predicative and an enumerative characterization of data definitions.
In this paper we present our data definition framework via a sequence of
examples. We give a complete characterization in terms of tau rules of the
inclusion/exclusion relations a data definition induces, under suitable
restrictions. The data definition framework is a key component of
counterexample generation support in ACL2s, but can be independently used in
ACL2, and is available as a community book.Comment: In Proceedings ACL2 2014, arXiv:1406.123
Verification of Sequential Circuits by Tests-As-Proofs Paradigm
We introduce an algorithm for detection of bugs in sequential circuits. This
algorithm is incomplete i.e. its failure to find a bug breaking a property P
does not imply that P holds. The appeal of incomplete algorithms is that they
scale better than their complete counterparts. However, to make an incomplete
algorithm effective one needs to guarantee that the probability of finding a
bug is reasonably high. We try to achieve such effectiveness by employing the
Test-As-Proofs (TAP) paradigm. In our TAP based approach, a counterexample is
built as a sequence of states extracted from proofs that some local variations
of property P hold. This increases the probability that a) a representative set
of states is examined and that b) the considered states are relevant to
property P.
We describe an algorithm of test generation based on the TAP paradigm and
give preliminary experimental results
Size-Change Abstraction and Max-Plus Automata
Max-plus automata (over ℕ ∪ − ∞) are finite devices that map input words to non-negative integers or − ∞. In this paper we present (a) an algorithm allowing to compute the asymptotic behaviour of max-plus automata, and (b) an application of this technique to the evaluation of the computational time complexity of programs
- …
