module TranslateFormula:sig
..end
val no_root_predicates : bool Pervasives.ref
no_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.term
val var_of_term : transl_data -> GDL.term -> Formula.const_or_fo_var
val empty_transl_data : transl_data
val separate_disj : string list ->
GDL.literal list list ->
(GDL.literal list * GDL.literal list * GDL.literal list) list
val translate : ?counter_guard:bool ->
?ctx_terms:GDL.term list ->
transl_data -> GDL.literal list list -> Formula.formula
counter_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