269,784 research outputs found

    Finding The Lazy Programmer's Bugs

    Get PDF
    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

    Full text link
    Let FF be the function field of an elliptic curve XX over \F_q. In this paper, we calculate explicit formulas for unramified Hecke operators acting on automorphic forms over FF. We determine these formulas in the language of the graph of an Hecke operator, for which we use its interpretation in terms of 1\P^1-bundles on XX. This allows a purely geometric approach, which involves, amongst others, a classification of the 1\P^1-bundles on XX. 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 1\P^1-bundle. Further, we determine the space of unramified FF'-toroidal automorphic forms where FF' is the quadratic constant field extension of FF. It does not contain non-trivial cusp forms. An investigation of zeros of certain Hecke LL-series leads to the conclusion that the space of unramified toroidal automorphic forms is spanned by the Eisenstein series E(\blanc,s) where s+1/2s+1/2 is a zero of the zeta function of XX---with one possible exception in the case that qq is even and the class number hh equals q+1q+1.Comment: 26 page

    Sphere packing bounds in the Grassmann and Stiefel manifolds

    Full text link
    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

    Get PDF
    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
    corecore