package datalog
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=13ca520bddf4f0c44d1468bc89347be72ec543be58fff29469a0da24956be541
sha512=25d6e9cb5abe8aa1110730d884abb9e51ae78bf681b3f21709efa32359b9cbdd97d9076761c91562580c090cbce12ce159c97533ae5d9d427c24cb329e950793
doc/datalog.top_down/Datalog_top_down/Default/index.html
Module Datalog_top_down.Default
Source
include S with type Const.t = const
Terms
Literals
Clauses
Substs
This module is used for variable bindings.
Unification, matching...
For unify
and match_
, the optional parameter oc
is used to enable or disable occur-check. It is disabled by default.
Unify the two terms.
match_ a sa b sb
matches the pattern a
in scope sa
with term b
in scope sb
.
Test for alpha equivalence.
Special version of alpha_equiv
, using distinct scopes for the two terms to test, and discarding the result
Special built-in functions
The built-in functions are symbols that have a special meaning. The meaning is given by a set of OCaml functions that can evaluate applications of the function symbol to arguments.
For instance, sum
is a special built-in function that tries to add its arguments if those are constants.
Note that a constant will never be interpreted.
The following hashtables use alpha-equivalence checking instead of regular, syntactic equality
Index
An index is a specialized data structured that is used to efficiently store and retrieve data by a key, where the key is a term. Retrieval involves finding all data associated with terms that match, or unify with, a given term.
Rewriting
Rewriting consists in having a set of rules, oriented from left to right, that we will write l -> r
(say "l rewrites to r"). Any term t that l matches is rewritten into r by replacing it by sigma(r), where sigma(l) = t.
DB
A DB stores facts and clauses, that constitute a logic program. Facts and clauses can only be added.
Non-stratified programs will be rejected with NonStratifiedProgram.
Query
Returns the answers to a query in a given DB. Additional facts and rules can be added in a local scope.
val ask_lits :
?oc:bool ->
?with_rules:C.t list ->
?with_facts:T.t list ->
DB.t ->
T.t list ->
Lit.t list ->
T.t list
Extension of ask
, where the query ranges over the list of variables (the term list), all of which must be bound in the list of literals that form a constraint.
ask_lits db vars lits
queries over variables vars
with the constraints given by lits
.
Conceptually, the query adds a clause (v1, ..., vn) :- lits, which should respect the same safety constraint as other clauses.
List of default interpreters for some symbols, mostly infix predicates
Default builtin functions
Load the default interpreters and builtin functions into the DB