15 research outputs found

    On Fast Large-Scale Program Analysis in Datalog

    Get PDF
    Designing and crafting a static program analysis is challenging due to the complexity of the task at hand. Among the challenges are modelling the semantics of the input language, finding suitable abstractions for the analysis, and handwriting efficient code for the analysis in a traditional imperative language such as C++. Hence, the development of static program analysis tools is costly in terms of development time and resources for real world languages. To overcome, or at least alleviate the costs of developing a static program analysis, Datalog has been proposed as a domain specific language (DSL).With Datalog, a designer expresses a static program analysis in the form of a logical specification. While a domain specific language approach aids in the ease of development of program analyses, it is commonly accepted that such an approach has worse runtime performance than handcrafted static analysis tools. In this work, we introduce a new program synthesis methodology for Datalog specifications to produce highly efficient monolithic C++ analyzers. The synthesis technique requires the re-interpretation of the semi-naïve evaluation as a scaffolding for translation using partial evaluation. To achieve high-performance, we employ staged compilation techniques and specialize the underlying relational data structures for a given Datalog specification. Experimentation on benchmarks for large-scale program analysis validates the superior performance of our approach over available Datalog tools and demonstrates our competitiveness with state-of-the-art handcrafted tools

    ProvMark:A Provenance Expressiveness Benchmarking System

    Get PDF
    System level provenance is of widespread interest for applications such as security enforcement and information protection. However, testing the correctness or completeness of provenance capture tools is challenging and currently done manually. In some cases there is not even a clear consensus about what behavior is correct. We present an automated tool, ProvMark, that uses an existing provenance system as a black box and reliably identifies the provenance graph structure recorded for a given activity, by a reduction to subgraph isomorphism problems handled by an external solver. ProvMark is a beginning step in the much needed area of testing and comparing the expressiveness of provenance systems. We demonstrate ProvMark's usefuless in comparing three capture systems with different architectures and distinct design philosophies.Comment: To appear, Middleware 201

    Incremental Static Analysis with Differential Datalog

    Get PDF
    Πολλές εφαρμογές ενημερώνουν τον κώδικα τους με αρκετούς μετασχηματισμούς συντήρησης καθ 'όλη τη διάρκεια ζωής της εφαρμογής. Επομένως, τα αποτελέσματα της ανάλυσης μιας εφαρμογής μπορεί να χρειαστεί να αξιολογηθούν σταδιακά. Στην παρούσα πτυχιακή, διερευνούμε τις δυνατότητες σταδιακής αύξησης της στατικής ανάλυσης προγράμματος, χρησιμοποιώντας τη βιβλιοθήκη Doop και τη μηχανή Datalog της DDlog. Το Doop είναι ένα στατικό πλαίσιο ανάλυσης και η DDlog (Differential Datalog) είναι ένας μηχανισμός για αυξητική αξιολόγηση Datalog, βασισμένη σε μια βιβλιοθήκη παραλληλισμού δεδομένων, Differential Dataflow. Διαπιστώνουμε ότι οι στατικές αναλύσεις που βασίζονται σε Doop μπορούν να αξιολογηθούν αυξητικά μέσω της DDlog, η οποία απαιτεί ελάχιστες παρεμβάσεις στη λογική ανάλυσης. Παρουσιάζουμε την απόδοση της DDlog σε σύγκριση με το μηχανισμό Soufflé Datalog που το Doop ενσωματώνει.Many applications have their code updated by several maintenance transformations throughout the application's functioning lifetime. Therefore, the results of analyzing an application may need to be evaluated incrementally. In this thesis, we explore the possibilities of incrementality in static program analysis, using the Doop framework and the DDlog incremental Datalog engine. Doop is a static analysis framework and DDlog (Differential Datalog) is an engine for incremental Datalog evaluation, based on a data-parallel library, Differential Dataflow. We find that Doop-based static analyses can be incrementally evaluated via DDlog requiring minimum interventions to the analysis logic. We illustrate DDlog's performance compared to the Soufflé Datalog engine that Doop integrates

    Incorporating Stratified Negation into Query-Subquery Nets for Evaluating Queries to Stratified Deductive Databases

    Get PDF
    Most of the previously known evaluation methods for deductive databases are either breadth-first or depth-first (and recursive). There are cases when these strategies are not the best ones. It is desirable to have an evaluation framework for stratified DatalogN that is goal-driven, set-at-a-time (as opposed to tuple-at-a-time) and adjustable w.r.t. flow-of-control strategies. These properties are important for efficient query evaluation on large and complex deductive databases. In this paper, by incorporating stratified negation into so-called query-subquery nets, we develop an evaluation framework, called QSQNSTR, with such properties for evaluating queries to stratified DatalogN databases. A variety of flow-of-control strategies can be used for QSQNSTR. The generic evaluation method QSQNSTR for stratified DatalogN is sound, complete and has a PTIME data complexity

    Eine deskriptive Anfrageschnittstelle für Hydra.PowerGraph

    Get PDF
    Im Feld der Datenbankforschung stellen Graphdatenbanken eine große Innovation der letzten Jahre dar. Durch ihre Möglichkeit, hochgradig vernetzte Daten effizient darstellen und auswerten zu können, eignen sich solche Systeme für viele Anwendungsfälle, in denen das bisher vorherrschende Konzept der relationalen Datenbanken an seine praktischen Grenzen stößt. Allerdings hat dieses System den Graphdatenbanken eine wichtige Entwicklung voraus: eine einheitliche Anfragesprache fundiert auf einer soliden theoretischen Grundlage. Bei der Internationalen Organisation für Standardisierung (ISO) befindet sich ein solcher sprachstandard, genannt GQL, gerade in der Entwicklung. Dieser ist allerdings nur für eine spezielle Art von Graphdatenbankmodell, dem Property-Graph-Modell, entworfen. Ein anderes Modell, das Hypergraphenmodell, kann unangepasst nicht mit GQL verwendet werden. Diese Bachelorarbeit erarbeitet die Grundlagen, auf denen sich eine solche Anpassung an eine spezielle Art von Hypergraphdatenbankmodell, dem WossiDiA-PowerGraph-Modell, vornehmen lässt. Es wird eine theoretisch solide Grundlage, namentlich eine Graphenalgebra für Hypergraphen, erarbeitet, die sich mit der relationalen Algebra für relationale Datenbanken vergleichen lässt. Anschließend wird ein Vorschlag gegeben, wie diese Hypergraphenalgebra auf eine angepasste Version von GQL, HyperGQL, abgebildet werden kann. Dieser Vorschlag wird schließlich durch eine Implementation getestet und seine Tauglichkeit für Anfragen an die Datenbank untersucht. Dabei wird eine REST-Schnittstelle des WossiDiA-Systems verwendet, welche öffentlich bereitgestellt ist
    corecore