Datalog.ASProgSourcetype program = Datalog_AbstractSyntax.AbstractSyntax.Program.program = {rules : Datalog_AbstractSyntax.AbstractSyntax.Rule.Rules.t;pred_table : Datalog_AbstractSyntax.AbstractSyntax.Predicate.PredIdTable.table;const_table : Datalog_AbstractSyntax.ConstGen.Table.table;i_preds : Datalog_AbstractSyntax.AbstractSyntax.Predicate.PredIds.t;rule_id_gen : UtilsLib.IdGenerator.IntIdGen.t;head_to_rules : Datalog_AbstractSyntax.AbstractSyntax.Rule.Rules.t
Datalog_AbstractSyntax.AbstractSyntax.Predicate.PredIdMap.t;e_pred_to_rules : Datalog_AbstractSyntax.AbstractSyntax.Rule.Rules.t
Datalog_AbstractSyntax.AbstractSyntax.Predicate.PredIdMap.t;}type modifier = {modified_rules : Datalog_AbstractSyntax.AbstractSyntax.Rule.Rules.t;new_pred_table : Datalog_AbstractSyntax.AbstractSyntax.Predicate.PredIdTable.table;new_const_table : Datalog_AbstractSyntax.ConstGen.Table.table;new_i_preds : Datalog_AbstractSyntax.AbstractSyntax.Predicate.PredIds.t;new_e_preds : Datalog_AbstractSyntax.AbstractSyntax.Predicate.PredIds.t;new_rule_id_gen : UtilsLib.IdGenerator.IntIdGen.t;}is_in_idb pred prog returns true if the predicate pred is an intensional predicate for the program prog
val is_head :
Datalog_AbstractSyntax.AbstractSyntax.Predicate.predicate ->
Datalog_AbstractSyntax.AbstractSyntax.Rule.rule ->
boolis_head pred rule returns true if the predicate pred matches with the head of the rule rule
val match_rules :
Datalog_AbstractSyntax.AbstractSyntax.Predicate.predicate ->
program ->
Datalog_AbstractSyntax.AbstractSyntax.Rule.Rules.tmatch_rules pred prog returns the set of rules of program prog whose heads match with pred
get_rule_by_id program id Get the rule matching the id