package datalog
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=13ca520bddf4f0c44d1468bc89347be72ec543be58fff29469a0da24956be541
sha512=25d6e9cb5abe8aa1110730d884abb9e51ae78bf681b3f21709efa32359b9cbdd97d9076761c91562580c090cbce12ce159c97533ae5d9d427c24cb329e950793
doc/datalog.unix/Datalog_unix/Make/argument-1-TD/index.html
Parameter Make.TD
module Const : Datalog_top_down.CONST
type const = Const.t
Terms
module T : sig ... end
Literals
module Lit : sig ... end
Clauses
module C : sig ... end
Substs
This module is used for variable bindings.
module Subst : sig ... end
Unification, matching...
type scope = Subst.scope
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.
module BuiltinFun : sig ... end
The following hashtables use alpha-equivalence checking instead of regular, syntactic equality
module TVariantTbl : Hashtbl.S with type key = T.t
module CVariantTbl : Hashtbl.S with type key = C.t
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.
module Index (Data : Hashtbl.HashedType) : sig ... end
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.
module Rewriting : sig ... end
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.
module DB : sig ... end
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.