4,186 research outputs found
Automatic Sequences and Zip-Specifications
We consider infinite sequences of symbols, also known as streams, and the
decidability question for equality of streams defined in a restricted format.
This restricted format consists of prefixing a symbol at the head of a stream,
of the stream function `zip', and recursion variables. Here `zip' interleaves
the elements of two streams in alternating order, starting with the first
stream. For example, the Thue-Morse sequence is obtained by the
`zip-specification' {M = 0 : X, X = 1 : zip(X,Y), Y = 0 : zip(Y,X)}. Our
analysis of such systems employs both term rewriting and coalgebraic
techniques. We establish decidability for these zip-specifications, employing
bisimilarity of observation graphs based on a suitably chosen cobasis. The
importance of zip-specifications resides in their intimate connection with
automatic sequences. We establish a new and simple characterization of
automatic sequences. Thus we obtain for the binary zip that a stream is
2-automatic iff its observation graph using the cobasis (hd,even,odd) is
finite. The generalization to zip-k specifications and their relation to
k-automaticity is straightforward. In fact, zip-specifications can be perceived
as a term rewriting syntax for automatic sequences. Our study of
zip-specifications is placed in an even wider perspective by employing the
observation graphs in a dynamic logic setting, leading to an alternative
characterization of automatic sequences. We further obtain a natural extension
of the class of automatic sequences, obtained by `zip-mix' specifications that
use zips of different arities in one specification. We also show that
equivalence is undecidable for a simple extension of the zip-mix format with
projections like even and odd. However, it remains open whether zip-mix
specifications have a decidable equivalence problem
Stream Productivity by Outermost Termination
Streams are infinite sequences over a given data type. A stream specification
is a set of equations intended to define a stream. A core property is
productivity: unfolding the equations produces the intended stream in the
limit. In this paper we show that productivity is equivalent to termination
with respect to the balanced outermost strategy of a TRS obtained by adding an
additional rule. For specifications not involving branching symbols
balancedness is obtained for free, by which tools for proving outermost
termination can be used to prove productivity fully automatically
Well-definedness of Streams by Transformation and Termination
Streams are infinite sequences over a given data type. A stream specification
is a set of equations intended to define a stream. We propose a transformation
from such a stream specification to a term rewriting system (TRS) in such a way
that termination of the resulting TRS implies that the stream specification is
well-defined, that is, admits a unique solution. As a consequence, proving
well-definedness of several interesting stream specifications can be done fully
automatically using present powerful tools for proving TRS termination. In
order to increase the power of this approach, we investigate transformations
that preserve semantics and well-definedness. We give examples for which the
above mentioned technique applies for the ransformed specification while it
fails for the original one
Programming Not Only by Example
In recent years, there has been tremendous progress in automated synthesis
techniques that are able to automatically generate code based on some intent
expressed by the programmer. A major challenge for the adoption of synthesis
remains in having the programmer communicate their intent. When the expressed
intent is coarse-grained (for example, restriction on the expected type of an
expression), the synthesizer often produces a long list of results for the
programmer to choose from, shifting the heavy-lifting to the user. An
alternative approach, successfully used in end-user synthesis is programming by
example (PBE), where the user leverages examples to interactively and
iteratively refine the intent. However, using only examples is not expressive
enough for programmers, who can observe the generated program and refine the
intent by directly relating to parts of the generated program.
We present a novel approach to interacting with a synthesizer using a
granular interaction model. Our approach employs a rich interaction model where
(i) the synthesizer decorates a candidate program with debug information that
assists in understanding the program and identifying good or bad parts, and
(ii) the user is allowed to provide feedback not only on the expected output of
a program, but also on the underlying program itself. That is, when the user
identifies a program as (partially) correct or incorrect, they can also
explicitly indicate the good or bad parts, to allow the synthesizer to accept
or discard parts of the program instead of discarding the program as a whole.
We show the value of our approach in a controlled user study. Our study shows
that participants have strong preference to using granular feedback instead of
examples, and are able to provide granular feedback much faster
Encoding TLA+ set theory into many-sorted first-order logic
We present an encoding of Zermelo-Fraenkel set theory into many-sorted
first-order logic, the input language of state-of-the-art SMT solvers. This
translation is the main component of a back-end prover based on SMT solvers in
the TLA+ Proof System
- …