137,973 research outputs found
Testing primitivity on partial words
Primitive words, or strings over a finite alphabet that cannot be written as a power of another string, play an important role in numerous research areas including formal language theory, coding theory, and combinatorics on words. Testing whether or not a word is primitive can be done in linear time in the length of the word. Indeed, a word is primitive if and only if it is not an inside factor of its square. In this paper, we describe a linear time algorithm to test primitivity on partial words which are strings that may contain a number of ?do not know? symbols. Our algorithm is based on the combinatorial result that under some condition, a partial word is primitive if and only if it is not compatible with an inside factor of its square. The concept of special, related to commutativity on partial words, is foundational in the design of our algorithm. A World Wide Web server interface at http://www.uncg.edu/mat/primitive/ has been established for automated use of the program
Deriving Laws for Developing Concurrent Programs in a Rely-Guarantee Style
In this paper we present a theory for the refinement of shared-memory
concurrent algorithms from specifications. Our approach avoids restrictive
atomicity contraints. It provides a range of constructs for specifying
concurrent programs and laws for refining these to code. We augment pre and
post condition specifications with Jones' rely and guarantee conditions, which
we encode as commands within a wide-spectrum language. Program components are
specified using either partial and total correctness versions of end-to-end
specifications. Operations on shared data structures and atomic machine
operations (e.g. compare-and-swap) are specified using an atomic specification
command. All the above constructs are defined in terms of a simple core
language, based on four primitive commands and a handful of operators, and for
which we have developed an extensive algebraic theory in Isabelle/HOL. For
shared memory programs, expression evaluation is subject to fine-grained
interference and we have avoided atomicity restrictions other than for read and
write of primitive types (words). Expression evaluation and assignment commands
are also defined in terms of our core language primitives, allowing laws for
reasoning about them to be proven in the theory. Control structures such as
conditionals, recursion and loops are all defined in terms of the core
language. In developing the laws for refining to such structures from
specifications we have taken care to develop laws that are as general as
possible; our laws are typically more general than those found in the
literature. In developing our concurrent refinement theory we have taken care
to focus on the algebraic properties of our commands and operators, which has
allowed us to reuse algebraic theories, including well-known theories, such as
lattices and boolean algebra, as well as programming-specific algebras, such as
our synchronous algebra
Forward Analysis and Model Checking for Trace Bounded WSTS
We investigate a subclass of well-structured transition systems (WSTS), the
bounded---in the sense of Ginsburg and Spanier (Trans. AMS 1964)---complete
deterministic ones, which we claim provide an adequate basis for the study of
forward analyses as developed by Finkel and Goubault-Larrecq (Logic. Meth.
Comput. Sci. 2012). Indeed, we prove that, unlike other conditions considered
previously for the termination of forward analysis, boundedness is decidable.
Boundedness turns out to be a valuable restriction for WSTS verification, as we
show that it further allows to decide all -regular properties on the
set of infinite traces of the system
Cinnamons: A Computation Model Underlying Control Network Programming
We give the easily recognizable name "cinnamon" and "cinnamon programming" to
a new computation model intended to form a theoretical foundation for Control
Network Programming (CNP). CNP has established itself as a programming paradigm
combining declarative and imperative features, built-in search engine, powerful
tools for search control that allow easy, intuitive, visual development of
heuristic, nondeterministic, and randomized solutions. We define rigorously the
syntax and semantics of the new model of computation, at the same time trying
to keep clear the intuition behind and to include enough examples. The
purposely simplified theoretical model is then compared to both WHILE-programs
(thus demonstrating its Turing-completeness), and the "real" CNP. Finally,
future research possibilities are mentioned that would eventually extend the
cinnamon programming into the directions of nondeterminism, randomness, and
fuzziness.Comment: 7th Intl Conf. on Computer Science, Engineering & Applications
(ICCSEA 2017) September 23~24, 2017, Copenhagen, Denmar
Deciding KAT and Hoare Logic with Derivatives
Kleene algebra with tests (KAT) is an equational system for program
verification, which is the combination of Boolean algebra (BA) and Kleene
algebra (KA), the algebra of regular expressions. In particular, KAT subsumes
the propositional fragment of Hoare logic (PHL) which is a formal system for
the specification and verification of programs, and that is currently the base
of most tools for checking program correctness. Both the equational theory of
KAT and the encoding of PHL in KAT are known to be decidable. In this paper we
present a new decision procedure for the equivalence of two KAT expressions
based on the notion of partial derivatives. We also introduce the notion of
derivative modulo particular sets of equations. With this we extend the
previous procedure for deciding PHL. Some experimental results are also
presented.Comment: In Proceedings GandALF 2012, arXiv:1210.202
- …