AbstractSyntax.Programtype 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;}val make_program : Proto_Program.t -> programval extend : program -> Proto_Program.t -> programval is_in_idb : Predicate.predicate -> program -> boolis_in_idb pred prog returns true if the predicate pred is an intensional predicate for the program prog
val is_head : Predicate.predicate -> Rule.rule -> boolis_head pred rule returns true if the predicate pred matches with the head of the rule rule
val match_rules : Predicate.predicate -> program -> Rule.Rules.tmatch_rules pred prog returns the set of rules of program prog whose heads match with pred
val get_rule_by_id : program -> int -> Rule.Rules.eltget_rule_by_id program id Get the rule matching the id
val pp :
?with_position:bool ->
?with_id:bool ->
Stdlib.Format.formatter ->
program ->
unit