Make.ProgramSourcetype program = {rules : Rule.Rules.t Predicate.PredMap.t;edb : ASPred.pred_id list;edb_facts : Predicate.FactSet.t Predicate.PredMap.t;idb : ASPred.pred_id list;pred_table : ASPred.PredIdTable.table;const_table : Datalog_AbstractSyntax.ConstGen.Table.table;rule_id_gen : UtilsLib.IdGenerator.IntIdGen.t;}val temp_facts :
Rule.rule ->
Rule.FactArray.row Predicate.PredMap.t ->
Rule.FactArray.row Predicate.PredMap.t ->
Rule.FactArray.row Predicate.PredMap.t ->
Rule.FactArray.row Predicate.PredMap.t ->
((ASPred.predicate * Predicate.FactSet.elt list) -> Rule.rule -> 'a -> 'a) ->
'a ->
ASPred.PredIdTable.table ->
Datalog_AbstractSyntax.ConstGen.Table.table ->
'aval p_semantics_for_predicate :
Predicate.PredMap.key ->
program ->
Rule.FactArray.row Predicate.PredMap.t ->
Rule.FactArray.row Predicate.PredMap.t ->
Rule.FactArray.row Predicate.PredMap.t ->
Rule.FactArray.row Predicate.PredMap.t ->
Predicate.PremiseSet.t Predicate.PredicateMap.t ->
Predicate.FactSet.t * Predicate.PremiseSet.t Predicate.PredicateMap.tval seminaive :
program ->
Rule.FactArray.row Predicate.PredMap.t
* Predicate.PremiseSet.t Predicate.PredicateMap.tval add_e_facts :
program ->
(ASRule.rule list
* Datalog_AbstractSyntax.ConstGen.Table.table
* UtilsLib.IdGenerator.IntIdGen.t) ->
programadd_rule i r p adds a ASRule.rule to a Datalog.Program with the assumption that it will not change the 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.
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 build_forest :
?query:Datalog_AbstractSyntax.AbstractSyntax.Predicate.predicate ->
Predicate.PremiseSet.t Predicate.PredicateMap.t ->
program ->
int UtilsLib.SharedForest.SharedForest.tree list list