LogicBlox

Last updated
LogiQL
Paradigms Declarative, Logic programming
Family Datalog
Typing discipline Static
License Commercial
Website logicblox.com
Influenced by
Datalog

The LogicBlox system is a commercial, declarative, incremental logic programming language and deductive database inspired by Datalog. The LogiQL programming language extends Datalog with several features, including stratified negation, aggregation, and a module system. LogicBlox has been used to build pointer analyses for Java. [1]

Contents

Features

Related Research Articles

Logic programming is a programming paradigm which is largely based on formal logic. Any program written in a logic programming language is a set of sentences in logical form, expressing facts and rules about some problem domain. Major logic programming language families include Prolog, answer set programming (ASP) and Datalog. In all of these languages, rules are written in the form of clauses:

Prolog is a logic programming language associated with artificial intelligence and computational linguistics.

Inductive logic programming (ILP) is a subfield of symbolic artificial intelligence which uses logic programming as a uniform representation for examples, background knowledge and hypotheses. Given an encoding of the known background knowledge and a set of examples represented as a logical database of facts, an ILP system will derive a hypothesised logic program which entails all the positive and none of the negative examples.

In computer science, a binary decision diagram (BDD) or branching program is a data structure that is used to represent a Boolean function. On a more abstract level, BDDs can be considered as a compressed representation of sets or relations. Unlike other compressed representations, operations are performed directly on the compressed representation, i.e. without decompression.

Datalog is a declarative logic programming language. While it is syntactically a subset of Prolog, Datalog generally uses a bottom-up rather than top-down evaluation model. This difference yields significantly different behavior and properties from Prolog. It is often used as a query language for deductive databases. Datalog has been applied to problems in data integration, networking, program analysis, and more.

A deductive database is a database system that can make deductions based on rules and facts stored in the (deductive) database. Datalog is the language typically used to specify facts, rules and queries in deductive databases. Deductive databases have grown out of the desire to combine logic programming with relational databases to construct systems that support a powerful formalism and are still fast and able to deal with very large datasets. Deductive databases are more expressive than relational databases but less expressive than logic programming systems. In recent years, deductive databases such as Datalog have found new application in data integration, information extraction, networking, program analysis, security, and cloud computing.

F-logic is a knowledge representation and ontology language. F-logic combines the advantages of conceptual modeling with object-oriented, frame-based languages and offers a declarative, compact and simple syntax, as well as the well-defined semantics of a logic-based language.

Logtalk is an object-oriented logic programming language that extends and leverages the Prolog language with a feature set suitable for programming in the large. It provides support for encapsulation and data hiding, separation of concerns and enhanced code reuse. Logtalk uses standard Prolog syntax with the addition of a few operators and directives.

In computer science, pointer analysis, or points-to analysis, is a static code analysis technique that establishes which pointers, or heap references, can point to which variables, or storage locations. It is often a component of more complex analyses such as escape analysis. A closely related technique is shape analysis.

<span class="mw-page-title-main">Georg Gottlob</span> Austrian computer scientist

Georg Gottlob FRS is an Austrian computer scientist who works in the areas of database theory, logic, and artificial intelligence and is Professor of Informatics at the University of Oxford.

<span class="mw-page-title-main">Incremental computing</span> Software feature

Incremental computing, also known as incremental computation, is a software feature which, whenever a piece of data changes, attempts to save time by only recomputing those outputs which depend on the changed data. When incremental computing is successful, it can be significantly faster than computing new outputs naively. For example, a spreadsheet software package might use incremental computation in its recalculation feature, to update only those cells containing formulas which depend on the changed cells.

Infer, sometimes referred to as "Facebook Infer", is a static code analysis tool developed by an engineering team at Facebook along with open-source contributors. It provides support for Java, C, C++, and Objective-C, and is deployed at Facebook in the analysis of its Android and iOS apps.

Boon Thau Loo is a Singaporean-American computer scientist, college administrator, and technology entrepreneur. He is currently the RCA professor in the Computer and Information Science department at the University of Pennsylvania where he leads a research lab working on distributed systems, and serves as the Associate Dean for Graduate Programs at the University of Pennsylvania School of Engineering and Applied Science.

Flix is a functional, imperative, and logic programming language developed at Aarhus University, with funding from the Independent Research Fund Denmark, and by a community of open source contributors. The Flix language supports algebraic data types, pattern matching, parametric polymorphism, currying, higher-order functions, extensible records, channel and process-based concurrency, and tail call elimination. Two notable features of Flix are its type and effect system and its support for first-class Datalog constraints.

The Vadalog system is a Knowledge Graph Management System (KGMS) that offers a language for performing complex logic reasoning tasks over knowledge graphs. At the same time, Vadalog delivers a platform to support the entire spectrum of data science tasks: data integration, pre-processing, statistical analysis, machine learning, algorithmic modeling, probabilistic reasoning and temporal reasoning. Its language is based on an extension of the rule-based language Datalog, Warded Datalog±, a high-performance language using an aggressive termination control strategy. Vadalog can support the entire spectrum of data science activities and tools. The system can read from and connect to multiple sources, from relational databases, such as PostgreSQL and MySQL, to graph databases, such as Neo4j, as well as make use of machine learning tools, and a web data extraction tool, OXPath. Additional Python libraries and extensions can also be easily integrated into the system.

Krzysztof R. Apt is a Polish computer scientist. He defended his PhD in mathematical logic in Warsaw, Poland in 1974. His research interests include program correctness and semantics, use of logic as a programming language, distributed computing, and game theory. Besides his own research, he has been heavily involved in service to the computing community, notably by promoting the use of logic in computer science and by advocating open access to scientific literature.

Soufflé is an open source parallel logic programming language, influenced by Datalog. Soufflé includes both an interpreter and a compiler that targets parallel C++. Soufflé has been used to build static analyzers, disassemblers, and tools for binary reverse engineering. Soufflé is considered by academic researchers to be high-performance and "state of the art," and is often used in benchmarks in academic papers.

Logic programming is a programming paradigm that includes languages based on formal logic, including Datalog and Prolog. This article describes the syntax and semantics of the purely declarative subset of these languages. Confusingly, the name "logic programming" also refers to a specific programming language that roughly corresponds to the declarative subset of Prolog. Unfortunately, the term must be used in both senses in this article.

<span class="mw-page-title-main">Worst-case optimal join algorithm</span> Algorithm for computing relational joins

A worst-case optimal join algorithm is an algorithm for computing relational joins with a runtime that is bounded by the worst-case output size of the join. Traditional binary join algorithms such as hash join operate over two relations at a time; joins between more than two relations are implemented by repeatedly applying binary joins. Worst-case optimal join algorithms are asymptotically faster in worst case than any join algorithm based on such iterated binary joins.

DatalogZ is an extension of Datalog with integer arithmetic and comparisons. The decision problem of whether or not a given ground atom (fact) is entailed by a Datalog program is RE-complete, which can be shown by a reduction to diophantine equations.

References

Notes

  1. Antoniadis, Tony; Triantafyllou, Konstantinos; Smaragdakis, Yannis (2017-06-18). "Porting doop to Soufflé: a tale of inter-engine portability for Datalog-based analyses". Proceedings of the 6th ACM SIGPLAN International Workshop on State of the Art in Program Analysis. SOAP 2017. New York, NY, USA: Association for Computing Machinery: 25–30. doi:10.1145/3088515.3088522. ISBN   978-1-4503-5072-3. S2CID   3074689.
  2. "6.4. Negation - LogicBlox 3.10 Reference Manual". developer.logicblox.com. Retrieved 2023-03-04. "Additionally, negation is only allowed when the platform can determine a way to stratify all rules and constraints that use negation."
  3. "Chapter 7. Rules - LogicBlox 3.10 Reference Manual". developer.logicblox.com. Retrieved 2023-03-04.
  4. Veldhuizen, Todd L. (2013-12-20). "Leapfrog Triejoin: a worst-case optimal join algorithm". arXiv: 1210.0481 [cs.DB].
  5. Aberger, Christopher R.; Tu, Susan; Olukotun, Kunle; Ré, Christopher (May 2016). "Old techniques for new join algorithms: A case study in RDF processing". 2016 IEEE 32nd International Conference on Data Engineering Workshops (ICDEW): 97–102. doi:10.1109/ICDEW.2016.7495625. ISBN   978-1-5090-2109-3. S2CID   10016546.
  6. Zook, David; Pasalic, Emir; Sarna-Starosta, Beata (2009). Gill, Andy; Swift, Terrance (eds.). "Typed Datalog". Practical Aspects of Declarative Languages. Lecture Notes in Computer Science. Berlin, Heidelberg: Springer. 5418: 168–182. doi:10.1007/978-3-540-92995-6_12. ISBN   978-3-540-92995-6. "Our type system has been implemented as a part of the LogicBlox development environment."
  7. Singh, Shikha; Madaminov, Sergey; Bender, Michael A.; Ferdman, Michael; Johnson, Ryan; Moseley, Benjamin; Ngo, Hung; Nguyen, Dung; Olesen, Soeren; Stirewalt, Kurt; Washburn, Geoffrey (May 2020). "A Scheduling Approach to Incremental Maintenance of Datalog Programs". 2020 IEEE International Parallel and Distributed Processing Symposium (IPDPS): 864–873. doi:10.1109/IPDPS47924.2020.00093. ISBN   978-1-7281-6876-0. S2CID   216513350.
  8. Köhler, Sven; Ludäscher, Bertram; Smaragdakis, Yannis (2012). Barceló, Pablo; Pichler, Reinhard (eds.). "Declarative Datalog Debugging for Mere Mortals". Datalog in Academia and Industry. Lecture Notes in Computer Science. Berlin, Heidelberg: Springer. 7494: 111–122. doi:10.1007/978-3-642-32925-8_12. ISBN   978-3-642-32925-8.
  9. "Chapter 17. Provenance". LogicBlox 3.10 Reference Manual. Retrieved 2023-03-11.

Sources

Further reading

See also