sig
val approximate_monotonic : bool Pervasives.ref
val prune_indef_vars : bool Pervasives.ref
type matching = (string * int) list
type matchings = Assignments.assignment_set
type struc_rule = {
lhs_struc : Structure.structure;
rhs_struc : Structure.structure;
emb_rels : string list;
rule_s : (int * int) list;
pre : Formula.formula * (string * bool) list;
}
type var_tuples = string array list
type rule = {
struc_rule : DiscreteRule.struc_rule option;
lhs_vars : string list;
match_formula : Formula.formula;
rhs_vars : string list;
add_tuples : (string * DiscreteRule.var_tuples) list;
del_tuples : (string * DiscreteRule.var_tuples) list;
rlmap : (string * string) list option;
}
val empty_rule : DiscreteRule.rule
val fluents :
DiscreteRule.rule list -> Aux.Strings.t * Aux.Strings.t * Aux.Strings.t
val fluents_make :
?only_pos:bool -> (string -> int -> 'a) -> DiscreteRule.rule -> 'a list
val fluent_preconds :
DiscreteRule.rule list ->
(string -> int) ->
Aux.Strings.t ->
Aux.Strings.t ->
Aux.Strings.t -> (string * (string list * Formula.formula)) list
val map_to_formulas :
(Formula.formula -> Formula.formula) ->
DiscreteRule.rule -> DiscreteRule.rule
val fold_over_formulas :
(Formula.formula -> 'a -> 'a) -> DiscreteRule.rule -> 'a -> 'a
val map_to_structures :
(Structure.structure -> Structure.structure) ->
DiscreteRule.rule -> DiscreteRule.rule
val orig_rel_of : string -> string
val special_rel_of : string -> string option
val find_matchings :
Structure.structure -> DiscreteRule.rule -> DiscreteRule.matchings
val choose_match :
Structure.structure ->
DiscreteRule.rule -> DiscreteRule.matchings -> DiscreteRule.matching
val enumerate_matchings :
Structure.structure ->
DiscreteRule.rule -> DiscreteRule.matchings -> DiscreteRule.matching list
val rewrite_single :
Structure.structure ->
DiscreteRule.matching -> DiscreteRule.rule -> Structure.structure
val compile_rule :
(string * int) list ->
(string * (string list * Formula.formula)) list ->
DiscreteRule.struc_rule -> DiscreteRule.rule
val compile_formula_rule :
(string * int) list ->
(string * (string list * Formula.formula)) list ->
Formula.formula ->
(string list * (string * string list) list) option ->
((string * string option) list * (string * string list) list) option ->
(Formula.formula * (string * bool) list) option -> DiscreteRule.rule
val changeable_rels : DiscreteRule.rule list -> string list
val translate_from_precond :
precond:Formula.formula ->
add:(string * string array) list ->
?del:(string * string array) list ->
nondistinct:string array list ->
emb_rels:string list ->
signat:(string * int) list ->
struc_elems:string list -> DiscreteRule.struc_rule
val matching_str : DiscreteRule.matching -> string
val rule_str : DiscreteRule.rule -> string
val rule_obj_str : DiscreteRule.rule -> string
val fprint_full : bool -> Format.formatter -> DiscreteRule.rule -> unit
val fprint_rule : Format.formatter -> DiscreteRule.rule -> unit
val print_rule : DiscreteRule.rule -> unit
val sprint_rule : DiscreteRule.rule -> string
val is_alpha_identity : DiscreteRule.struc_rule -> bool
val build_rule_s :
?rule_s:(string * string) list ->
Structure.structure -> Structure.structure -> (int * int) list
val compare_diff :
?cmp_funs:(float -> float -> bool) ->
DiscreteRule.struc_rule -> DiscreteRule.struc_rule -> bool * string
end