4,859 research outputs found
Circular Languages Generated by Complete Splicing Systems and Pure Unitary Languages
Circular splicing systems are a formal model of a generative mechanism of
circular words, inspired by a recombinant behaviour of circular DNA. Some
unanswered questions are related to the computational power of such systems,
and finding a characterization of the class of circular languages generated by
circular splicing systems is still an open problem. In this paper we solve this
problem for complete systems, which are special finite circular splicing
systems. We show that a circular language L is generated by a complete system
if and only if the set Lin(L) of all words corresponding to L is a pure unitary
language generated by a set closed under the conjugacy relation. The class of
pure unitary languages was introduced by A. Ehrenfeucht, D. Haussler, G.
Rozenberg in 1983, as a subclass of the class of context-free languages,
together with a characterization of regular pure unitary languages by means of
a decidable property. As a direct consequence, we characterize (regular)
circular languages generated by complete systems. We can also decide whether
the language generated by a complete system is regular. Finally, we point out
that complete systems have the same computational power as finite simple
systems, an easy type of circular splicing system defined in the literature
from the very beginning, when only one rule is allowed. From our results on
complete systems, it follows that finite simple systems generate a class of
context-free languages containing non-regular languages, showing the
incorrectness of a longstanding result on simple systems
Splicing Systems from Past to Future: Old and New Challenges
A splicing system is a formal model of a recombinant behaviour of sets of
double stranded DNA molecules when acted on by restriction enzymes and ligase.
In this survey we will concentrate on a specific behaviour of a type of
splicing systems, introduced by P\u{a}un and subsequently developed by many
researchers in both linear and circular case of splicing definition. In
particular, we will present recent results on this topic and how they stimulate
new challenging investigations.Comment: Appeared in: Discrete Mathematics and Computer Science. Papers in
Memoriam Alexandru Mateescu (1952-2005). The Publishing House of the Romanian
Academy, 2014. arXiv admin note: text overlap with arXiv:1112.4897 by other
author
Splicing systems and the Chomsky hierarchy
In this paper, we prove decidability properties and new results on the
position of the family of languages generated by (circular) splicing systems
within the Chomsky hierarchy. The two main results of the paper are the
following. First, we show that it is decidable, given a circular splicing
language and a regular language, whether they are equal. Second, we prove the
language generated by an alphabetic splicing system is context-free. Alphabetic
splicing systems are a generalization of simple and semi-simple splicin systems
already considered in the literature
Combining Insertion and Deletion in RNA-editing Preserves Regularity
Inspired by RNA-editing as occurs in transcriptional processes in the living
cell, we introduce an abstract notion of string adjustment, called guided
rewriting. This formalism allows simultaneously inserting and deleting
elements. We prove that guided rewriting preserves regularity: for every
regular language its closure under guided rewriting is regular too. This
contrasts an earlier abstraction of RNA-editing separating insertion and
deletion for which it was proved that regularity is not preserved. The
particular automaton construction here relies on an auxiliary notion of slice
sequence which enables to sweep from left to right through a completed rewrite
sequence.Comment: In Proceedings MeCBIC 2012, arXiv:1211.347
Array operators using multiple dispatch: a design methodology for array implementations in dynamic languages
Arrays are such a rich and fundamental data type that they tend to be built
into a language, either in the compiler or in a large low-level library.
Defining this functionality at the user level instead provides greater
flexibility for application domains not envisioned by the language designer.
Only a few languages, such as C++ and Haskell, provide the necessary power to
define -dimensional arrays, but these systems rely on compile-time
abstraction, sacrificing some flexibility. In contrast, dynamic languages make
it straightforward for the user to define any behavior they might want, but at
the possible expense of performance.
As part of the Julia language project, we have developed an approach that
yields a novel trade-off between flexibility and compile-time analysis. The
core abstraction we use is multiple dispatch. We have come to believe that
while multiple dispatch has not been especially popular in most kinds of
programming, technical computing is its killer application. By expressing key
functions such as array indexing using multi-method signatures, a surprising
range of behaviors can be obtained, in a way that is both relatively easy to
write and amenable to compiler analysis. The compact factoring of concerns
provided by these methods makes it easier for user-defined types to behave
consistently with types in the standard library.Comment: 6 pages, 2 figures, workshop paper for the ARRAY '14 workshop, June
11, 2014, Edinburgh, United Kingdo
Type Generic Observing
Observing intermediate values helps to understand what is going on when your program runs.
Gill presented an observation method for lazy functional languages that
preserves the program's semantics.
However, users need to define for each type how its values are observed:
a laborious task and strictness of the program can easily be affected.
Here we define how any value can be observed based on the structure of its type
by applying generic programming frameworks.
Furthermore we present an extension to specify per observation point how much to observe of a value.
We discuss especially functional values and behaviour based on class membership
in generic programming frameworks
- …