AbstractSyntax.ProgramSourcetype program = {rules : Rule.Rules.t;pred_table : Predicate.PredIdTable.table;const_table : ConstGen.Table.table;i_preds : Predicate.PredIds.t;rule_id_gen : UtilsLib.IdGenerator.IntIdGen.t;head_to_rules : Rule.Rules.t Predicate.PredIdMap.t;e_pred_to_rules : Rule.Rules.t Predicate.PredIdMap.t;}type modifier = {modified_rules : Rule.Rules.t;new_pred_table : Predicate.PredIdTable.table;new_const_table : ConstGen.Table.table;new_i_preds : Predicate.PredIds.t;new_e_preds : 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
is_head pred rule returns true if the predicate pred matches with the head of the rule rule
match_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