00001 /* --------------------------------------------------------------------------- 00002 00003 00004 This file is part of the ``prop'' package of NuSMV version 2. 00005 Copyright (C) 2013 by FBK-irst. 00006 00007 NuSMV version 2 is free software; you can redistribute it and/or 00008 modify it under the terms of the GNU Lesser General Public 00009 License as published by the Free Software Foundation; either 00010 version 2 of the License, or (at your option) any later version. 00011 00012 NuSMV version 2 is distributed in the hope that it will be useful, 00013 but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00015 Lesser General Public License for more details. 00016 00017 You should have received a copy of the GNU Lesser General Public 00018 License along with this library; if not, write to the Free Software 00019 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. 00020 00021 For more information on NuSMV see <http://nusmv.fbk.eu> 00022 or email to <nusmv-users@fbk.eu>. 00023 Please report bugs to <nusmv-users@fbk.eu>. 00024 00025 To contact the NuSMV development board, email to <nusmv@fbk.eu>. 00026 00027 -----------------------------------------------------------------------------*/ 00028 00039 #ifndef __NUSMV_CORE_PROP_PROP_REWRITER_PRIVATE_H__ 00040 #define __NUSMV_CORE_PROP_PROP_REWRITER_PRIVATE_H__ 00041 00042 #include "nusmv/core/prop/Prop_Rewriter.h" 00043 #include "nusmv/core/utils/EnvObject.h" 00044 #include "nusmv/core/utils/EnvObject_private.h" 00045 #include "nusmv/core/utils/defs.h" 00046 #include "nusmv/core/prop/Prop.h" 00047 00063 typedef Prop_ptr (*Prop_Rewriter_rewrite_method)(Prop_Rewriter_ptr); 00064 00065 typedef struct Prop_Rewriter_TAG 00066 { 00067 /* this MUST stay on the top */ 00068 INHERITS_FROM(EnvObject); 00069 00070 /* -------------------------------------------------- */ 00071 /* Private members */ 00072 /* -------------------------------------------------- */ 00073 /* references */ 00074 Prop_ptr original; 00075 WffRewriteMethod method; 00076 WffRewriterExpectedProperty expprop; 00077 SymbTable_ptr symb_table; 00078 boolean is_status_consistent; /* this forces the developers to call 00079 update_original_property before destroy */ 00080 SymbLayer_ptr layer; 00081 BddEnc_ptr bddenc; 00082 FsmType fsm_type; 00083 00084 /* Whether the monitor variables will be visible in the traces or 00085 not. By default they are not visible. */ 00086 boolean monitor_visible_in_traces; 00087 /* When the WFF_REWRITE_METHOD_DEADLOCK_FREE is selected, then 00088 initialize_monitor_to_true control the value the monitor variable 00089 is initialized to. I.e. if true it is initialized to TRUE, else 00090 to FALSE. By default it is initialized to TRUE */ 00091 boolean monitor_variable_initialized_to_true; 00092 00093 /* When true, the invariant for the property is negated before being 00094 converted */ 00095 boolean ltl2invar_negate_property; 00096 /* owned */ 00097 Prop_ptr rewritten; 00098 00099 /* -------------------------------------------------- */ 00100 /* Virtual methods */ 00101 /* -------------------------------------------------- */ 00102 Prop_Rewriter_rewrite_method rewrite; 00103 00104 } Prop_Rewriter; 00105 00106 00107 00108 /* ---------------------------------------------------------------------- */ 00109 /* Private methods to be used by derivated and friend classes only */ 00110 /* ---------------------------------------------------------------------- */ 00111 00120 void prop_rewriter_init(Prop_Rewriter_ptr self, 00121 NuSMVEnv_ptr env, 00122 Prop_ptr original, 00123 WffRewriteMethod method, 00124 WffRewriterExpectedProperty expprop, 00125 FsmType fsm_type, 00126 BddEnc_ptr enc, 00127 SymbLayer_ptr layer); 00128 00137 void prop_rewriter_deinit(Prop_Rewriter_ptr self); 00138 00146 Prop_ptr prop_rewriter_rewrite(Prop_Rewriter_ptr self); 00147 00148 00149 00150 00151 #endif /* __NUSMV_CORE_PROP_PROP_REWRITER_PRIVATE_H__ */