AbstractSyntax.Proto_Programtype t = {rules : Proto_Rule.t list;pred_table : Predicate.PredIdTable.table;const_table : ConstGen.Table.table;i_preds : Predicate.PredIds.t;rule_id_gen : UtilsLib.IdGenerator.IntIdGen.t;pred_to_rules : UtilsLib.Utils.IntSet.t Predicate.PredIdMap.t;}type tables =
Predicate.PredIdTable.table * (VarGen.Table.table * ConstGen.Table.table)val empty : tval extension :
Predicate.PredIdTable.table ->
ConstGen.Table.table ->
UtilsLib.IdGenerator.IntIdGen.t ->
textension pred_table const_table id_gen returns an almost empty proto program. This almost empty proto program is meant to serve as extension of an actual program
val add_proto_rule :
((tables ->
Predicate.predicate * tables)
* (tables ->
Predicate.predicate list * tables)) ->
t ->
t