2,456 research outputs found

    Solving Functional Constraints by Variable Substitution

    Full text link
    Functional constraints and bi-functional constraints are an important constraint class in Constraint Programming (CP) systems, in particular for Constraint Logic Programming (CLP) systems. CP systems with finite domain constraints usually employ CSP-based solvers which use local consistency, for example, arc consistency. We introduce a new approach which is based instead on variable substitution. We obtain efficient algorithms for reducing systems involving functional and bi-functional constraints together with other non-functional constraints. It also solves globally any CSP where there exists a variable such that any other variable is reachable from it through a sequence of functional constraints. Our experiments on random problems show that variable elimination can significantly improve the efficiency of solving problems with functional constraints

    Learning Robust Search Strategies Using a Bandit-Based Approach

    Full text link
    Effective solving of constraint problems often requires choosing good or specific search heuristics. However, choosing or designing a good search heuristic is non-trivial and is often a manual process. In this paper, rather than manually choosing/designing search heuristics, we propose the use of bandit-based learning techniques to automatically select search heuristics. Our approach is online where the solver learns and selects from a set of heuristics during search. The goal is to obtain automatic search heuristics which give robust performance. Preliminary experiments show that our adaptive technique is more robust than the original search heuristics. It can also outperform the original heuristics.Comment: Published at the Proceedings of 32th AAAI Conference on Artificial Intelligence (AAAI'18

    Stochastic Database Cracking: Towards Robust Adaptive Indexing in Main-Memory Column-Stores

    Get PDF
    Modern business applications and scientific databases call for inherently dynamic data storage environments. Such environments are characterized by two challenging features: (a) they have little idle system time to devote on physical design; and (b) there is little, if any, a priori workload knowledge, while the query and data workload keeps changing dynamically. In such environments, traditional approaches to index building and maintenance cannot apply. Database cracking has been proposed as a solution that allows on-the-fly physical data reorganization, as a collateral effect of query processing. Cracking aims to continuously and automatically adapt indexes to the workload at hand, without human intervention. Indexes are built incrementally, adaptively, and on demand. Nevertheless, as we show, existing adaptive indexing methods fail to deliver workload-robustness; they perform much better with random workloads than with others. This frailty derives from the inelasticity with which these approaches interpret each query as a hint on how data should be stored. Current cracking schemes blindly reorganize the data within each query's range, even if that results into successive expensive operations with minimal indexing benefit. In this paper, we introduce stochastic cracking, a significantly more resilient approach to adaptive indexing. Stochastic cracking also uses each query as a hint on how to reorganize data, but not blindly so; it gains resilience and avoids performance bottlenecks by deliberately applying certain arbitrary choices in its decision-making. Thereby, we bring adaptive indexing forward to a mature formulation that confers the workload-robustness previous approaches lacked. Our extensive experimental study verifies that stochastic cracking maintains the desired properties of original database cracking while at the same time it performs well with diverse realistic workloads.Comment: VLDB201

    Engineering Dehydrated Amino Acid Residues in the Antimicrobial Peptide Nisin

    Get PDF
    The small antimicrobial peptide nisin, produced by Lactococcus lactis, contains the uncommon amino acid residues dehydroalanine and dehydrobutyrine and five thio ether bridges. Since these structures are posttranslationally formed from Ser, Thr, and Cys residues, it is feasible to study their role in nisin function and biosynthesis by protein engineering. Here we report the development of an expression system for mutated nisin Z (nisZ) genes, using nisin A producing L. lactis as a host. Replacement by site-directed mutagenesis of the Ser-5 codon in nisZ by a Thr codon, led to a mutant with a dehydrobutyrine instead of a dehydroalanine residue at position 5, as shown by NMR. Its antimicrobial activity was 2-10-fold lower relative to wild-type nisin Z, depending on the indicator strain used. In another mutagenesis study a double mutation was introduced in the nisZ gene by replacing the codons for Met-17 and Gly-18 by codons for Gln and Thr, respectively, as in the third lanthionine ring of the related antimicrobial peptide subtilin from Bacillus subtilis. This resulted in the simultaneous production of two mutant species, one containing a Thr residue and the other containing a dehydrobutyrine residue at position 18, both having different bacteriocidal properties.

    Maintaining Arc Consistency with Multiple Residues

    Get PDF
    International audienceExploiting residual supports (or residues) has proved to be one of the most cost-effective approaches for Maintaining Arc Consistency during search (MAC). While MAC based on optimal AC algorithm may have better theoretical time complexity in some cases, in practice the overhead for maintaining required data structure during search outweighs the benefit, not to mention themore complicated implementation. Implementing MAC with residues, on the other hand, is trivial. In this paper we extend previous work on residues and investigate the use of multiple residues during search. We first give a theoretical analysis of residue-based algorithms that explains their good practical performance. We then propose several heuristics on how to deal with multiple residues. Finally, our empirical study shows that with a proper and limited number of residues, many constraint checks can be saved. When the constraint check is expensive or a problem is hard, the multiple residues approach is competitive in both the number of constraint checks and cpu time

    LIPIcs, Volume 280, CP 2023, Complete Volume

    Get PDF
    LIPIcs, Volume 280, CP 2023, Complete Volum

    Benchmarking Symbolic Execution Using Constraint Problems -- Initial Results

    Full text link
    Symbolic execution is a powerful technique for bug finding and program testing. It is successful in finding bugs in real-world code. The core reasoning techniques use constraint solving, path exploration, and search, which are also the same techniques used in solving combinatorial problems, e.g., finite-domain constraint satisfaction problems (CSPs). We propose CSP instances as more challenging benchmarks to evaluate the effectiveness of the core techniques in symbolic execution. We transform CSP benchmarks into C programs suitable for testing the reasoning capabilities of symbolic execution tools. From a single CSP P, we transform P depending on transformation choice into different C programs. Preliminary testing with the KLEE, Tracer-X, and LLBMC tools show substantial runtime differences from transformation and solver choice. Our C benchmarks are effective in showing the limitations of existing symbolic execution tools. The motivation for this work is we believe that benchmarks of this form can spur the development and engineering of improved core reasoning in symbolic execution engines

    Stack Object Protection with Low Fat Pointers

    Get PDF
    Object bounds overflow errors are a common source of security vulnerabilities. In principle, bounds check instrumentation eliminates the problem, but this introduces high overheads and is further hampered by limited compatibility against un-instrumented code. On 64-bit systems, low-fat pointers are a recent scheme for implementing efficient and compatible bounds checking by transparently encoding meta information within the native pointer representation itself. However, low-fat pointers are traditionally used for heap objects only, where the allocator has sufficient control over object location necessary for the encoding. This is a problem for stack allocation, where there exist strong constraints regarding the location of stack objects that is apparently incompatible with the low-fat pointer approach. To address this problem, we present an extension of low-fat pointers to stack objects by using a collection of techniques, such as pointer mirroring and memory aliasing, thereby allowing stack objects to enjoy bounds error protection from instrumented code. Our extension is compatible with common special uses of the stack, such as alloca, setjmp and longjmp, exceptions, and multi-threading, which rely on direct manipulation of the stack pointer. Our experiments show that we successfully extend the advantages of the low-fat pointer encoding to stack objects. The end result is a competitive bounds checking instrumentation for the stack and heap with low memory and runtime overheads, and high compatibility with un-instrumented legacy code
    corecore