269,784 research outputs found
Finding The Lazy Programmer's Bugs
Traditionally developers and testers created huge numbers of explicit tests, enumerating interesting cases, perhaps
biased by what they believe to be the current boundary conditions of the function being tested. Or at
least, they were supposed to.
A major step forward was the development of property testing. Property testing requires the user to write a few
functional properties that are used to generate tests, and requires an external library or tool to create test data
for the tests. As such many thousands of tests can be created for a single property. For the purely functional
programming language Haskell there are several such libraries; for example QuickCheck [CH00], SmallCheck
and Lazy SmallCheck [RNL08].
Unfortunately, property testing still requires the user to write explicit tests. Fortunately, we note there are
already many implicit tests present in programs. Developers may throw assertion errors, or the compiler may
silently insert runtime exceptions for incomplete pattern matches.
We attempt to automate the testing process using these implicit tests. Our contributions are in four main
areas: (1) We have developed algorithms to automatically infer appropriate constructors and functions needed
to generate test data without requiring additional programmer work or annotations. (2) To combine the
constructors and functions into test expressions we take advantage of Haskell's lazy evaluation semantics by
applying the techniques of needed narrowing and lazy instantiation to guide generation. (3) We keep the type
of test data at its most general, in order to prevent committing too early to monomorphic types that cause
needless wasted tests. (4) We have developed novel ways of creating Haskell case expressions to inspect elements
inside returned data structures, in order to discover exceptions that may be hidden by laziness, and to make
our test data generation algorithm more expressive.
In order to validate our claims, we have implemented these techniques in Irulan, a fully automatic tool for
generating systematic black-box unit tests for Haskell library code. We have designed Irulan to generate high
coverage test suites and detect common programming errors in the process
Automorphic forms for elliptic function fields
Let be the function field of an elliptic curve over \F_q. In this
paper, we calculate explicit formulas for unramified Hecke operators acting on
automorphic forms over . We determine these formulas in the language of the
graph of an Hecke operator, for which we use its interpretation in terms of
-bundles on . This allows a purely geometric approach, which involves,
amongst others, a classification of the -bundles on .
We apply the computed formulas to calculate the dimension of the space of
unramified cusp forms and the support of a cusp form. We show that a cuspidal
Hecke eigenform does not vanish in the trivial -bundle. Further, we
determine the space of unramified -toroidal automorphic forms where is
the quadratic constant field extension of . It does not contain non-trivial
cusp forms. An investigation of zeros of certain Hecke -series leads to the
conclusion that the space of unramified toroidal automorphic forms is spanned
by the Eisenstein series E(\blanc,s) where is a zero of the zeta
function of ---with one possible exception in the case that is even and
the class number equals .Comment: 26 page
Sphere packing bounds in the Grassmann and Stiefel manifolds
Applying the Riemann geometric machinery of volume estimates in terms of
curvature, bounds for the minimal distance of packings/codes in the Grassmann
and Stiefel manifolds will be derived and analyzed. In the context of
space-time block codes this leads to a monotonically increasing minimal
distance lower bound as a function of the block length. This advocates large
block lengths for the code design.Comment: Replaced with final version, 11 page
Short-term or long-term contracts? - A rent-seeking perspective
In this paper, .rms engage in rent seeking in order to be assigned a governmental contract. We analyze how a change in the contract length a¤ects the .rms. rent-seeking behavior. A longer contract leads to more rent seeking at a contract assignment stage, as the .rms value the contract higher. On the other hand, the contract has to be assigned less often, which of course leads to less rent seeking. Finally, a longer contract makes a possible cooperation between the .rms solving the rent-seeking problem more difficult to sustain
- …