Abstract Categorial Grammar development toolkit
Library acgtkLib.datalogLib
val empty : program
val make_program : ASProg.program -> program
val to_abstract : program -> ASProg.program
val extend : program -> ASProg.modifier -> program

add_rule i r p adds a ASRule.rule to a Datalog.Program with the assumption that it will not change the m nature of any predicate (that is making it change from extensional to intensional). If i is set to true, then the rule concerns an intensional predicate. If it is set to false then it concerns an extensional predicate and the rhs of the rule should be empty.

val add_rule : intensional:bool -> ASRule.rule -> program -> program
val remove_rule : int -> ASPred.pred_id -> program -> program

remove_rule id p returns the program p from which the rule with id id has been removed.

IMPORTANT: This function only deals with rules introducing intensional predicate, because it is used when a constant is given several interpretations in a lexicon.

val get_fresh_rule_id : program -> int * program
val get_fresh_cst_id : string -> program -> * program
val add_pred_sym : string -> program -> ASPred.pred_id * program
val edb_to_buffer : program -> Buffer.t
val edb_to_log : Logs.src -> Logs.level -> program -> unit