module TranslateFormula:sig..end
val no_root_predicates : bool Pervasives.refno_root_predicates := true will violate correctness of
some translations.type transl_data = {
|
f_paths : |
(* | fluent paths | *) |
|
c_paths : |
(* | coordinate paths | *) |
|
all_paths : |
(* | sum of f_paths and c_paths | *) |
|
root_reps : |
(* | root terms | *) |
|
counters : |
|||
|
num_functions : |
|||
|
defined_rels : |
|||
|
argpaths : |
(* | Left argpaths are coordinating relation argument paths, Right
argpaths is fact relation argument partition. | *) |
|
term_arities : |
val blank_out : transl_data -> GDL.term -> GDL.termval var_of_term : transl_data -> GDL.term -> Formula.const_or_fo_varval empty_transl_data : transl_dataval separate_disj : string list ->
GDL.literal list list ->
(GDL.literal list * GDL.literal list * GDL.literal list) listval translate : ?counter_guard:bool ->
?ctx_terms:GDL.term list ->
transl_data -> GDL.literal list list -> Formula.formulacounter_guard is set to false, do not introduce
"gdl__counter(gdl__counter)" atom.
ctx_terms is additional state terms for translating a formula
with a broader context (e.g. the update condition in the context
of rewrite rule application).
val build_defrels : transl_data ->
GDL.clause list -> (string * (string list * Formula.formula)) list