00001
00002
00003
00004
00005
00006
00007
00008
00009
00019 #ifndef __NUSMV_CORE_WFF_WFF_REWRITE_H__
00020 #define __NUSMV_CORE_WFF_WFF_REWRITE_H__
00021
00022 #include "nusmv/core/utils/defs.h"
00023 #include "nusmv/core/utils/Pair.h"
00024 #include "nusmv/core/compile/FlatHierarchy.h"
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00041 enum WffRewriteFormulaKind_TAG {
00042 WFF_REWRITE_FORMULA_KIND_FIRST = 0,
00043 WFF_REWRITE_FORMULA_KIND_STATE = 1,
00044
00045 WFF_REWRITE_FORMULA_KIND_INPUT = 1 << 1,
00046 WFF_REWRITE_FORMULA_KIND_NEXT = 1 << 2,
00047 WFF_REWRITE_FORMULA_KIND_INPUT_NEXT =
00048 WFF_REWRITE_FORMULA_KIND_INPUT |
00049 WFF_REWRITE_FORMULA_KIND_NEXT,
00050
00051 WFF_REWRITE_FORMULA_KIND_TEMP = 1 << 3,
00052
00053 WFF_REWRITE_FORMULA_KIND_LAST = 1 << 4
00054 };
00055 typedef enum WffRewriteFormulaKind_TAG WffRewriteFormulaKind;
00056
00116 typedef enum {
00117 WFF_REWRITE_METHOD_STANDARD,
00118 WFF_REWRITE_METHOD_DEADLOCK_FREE,
00119 } WffRewriteMethod;
00120
00121
00130 typedef enum {
00131 WFF_REWRITER_REWRITE_INPUT_NEXT,
00132 WFF_REWRITER_LTL_2_INVAR
00133 } WffRewriterExpectedProperty;
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00152
00153
00154
00155
00168 Pair_ptr Wff_Rewrite_rewrite_formula(NuSMVEnv_ptr const env,
00169 const WffRewriteMethod method,
00170 const WffRewriterExpectedProperty eproptype,
00171 SymbLayer_ptr layer,
00172 FlatHierarchy_ptr outfh,
00173 node_ptr const spec,
00174 const short int spec_type);
00175
00190 Pair_ptr Wff_Rewrite_rewrite_formula_generic(NuSMVEnv_ptr const env,
00191 const WffRewriteMethod method,
00192 const WffRewriterExpectedProperty eproptype,
00193 SymbLayer_ptr layer,
00194 FlatHierarchy_ptr outfh,
00195 node_ptr const spec,
00196 const short int spec_type,
00197 const boolean initialize_monitor_to_true,
00198 const boolean ltl2invar_negate_property);
00199
00205 boolean Wff_Rewrite_is_rewriting_needed(SymbTable_ptr st, node_ptr wff,
00206 node_ptr context);
00207
00208
00211 #endif