package datalog

  1. Overview
  2. Docs
type 'a t
val name : _ t -> string

Name of the relation

val create : ?k:'a Univ.key -> string -> 'a t

New relation, with given name and argument

val get : 'a t -> Logic.T.t -> 'a option

Check whether this term is a "R(t)" with t an object packed with the appropriate key, and "R" the name of the given relation

val make : 'a t -> 'a -> Logic.T.t

Create a term from this relation description

val apply : 'a t -> Logic.T.t -> Logic.T.t

apply the relation symbol to some term

val find : Logic.DB.t -> 'a t -> 'a list

Iterate on all instances of the relation present in the DB

val subset : Logic.DB.t -> 'a t -> 'a t -> unit

subset db r1 r2 adds to db the axiom that r2(X) :- r1(X); in other words, r1 is a subset of r2 as a relation

val from_fun : Logic.DB.t -> 'a t -> ('a -> bool) -> unit

The given function decides of the given relation (if it returns true for a constant, then the relation holds for this constant)

val add_list : Logic.DB.t -> 'a t -> 'a list -> unit

Add given list of axioms

val to_string : _ t -> string
val fmt : Format.formatter -> _ t -> unit