svf-tools 1.0.418 → 1.0.419

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (253) hide show
  1. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +9 -9
  2. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +1 -1
  3. package/SVF-doxygen/html/html/Conditions_8cpp.html +0 -1
  4. package/SVF-doxygen/html/html/Conditions_8cpp_source.html +58 -49
  5. package/SVF-doxygen/html/html/Conditions_8h.html +6 -2
  6. package/SVF-doxygen/html/html/Conditions_8h_source.html +68 -60
  7. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +2 -2
  8. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +1 -1
  9. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +1 -1
  10. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +9 -9
  11. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +3 -3
  12. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +2 -2
  13. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +7 -7
  14. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +1 -1
  15. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +1 -1
  16. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +1 -1
  17. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +1 -1
  18. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +1 -1
  19. package/SVF-doxygen/html/html/MHP_8cpp_source.html +1 -1
  20. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +1 -1
  21. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +1 -1
  22. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +1 -1
  23. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +1 -1
  24. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +2 -2
  25. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +6 -6
  26. package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +1 -1
  27. package/SVF-doxygen/html/html/Options_8cpp_source.html +114 -113
  28. package/SVF-doxygen/html/html/Options_8h.html +1 -0
  29. package/SVF-doxygen/html/html/Options_8h_source.html +117 -115
  30. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +2 -2
  31. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +41 -23
  32. package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +74 -74
  33. package/SVF-doxygen/html/html/PathDPItem_8h_source.html +7 -7
  34. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +4 -4
  35. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +12 -12
  36. package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +1 -1
  37. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +1 -1
  38. package/SVF-doxygen/html/html/ProgSlice_8h_source.html +13 -13
  39. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +5 -5
  40. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +4 -4
  41. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +1 -1
  42. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +3 -3
  43. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
  44. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +1 -1
  45. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +1 -1
  46. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +4 -4
  47. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +3 -3
  48. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +3 -3
  49. package/SVF-doxygen/html/html/TCT_8cpp_source.html +1 -1
  50. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +1 -1
  51. package/SVF-doxygen/html/html/VFG_8cpp_source.html +1 -1
  52. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +3 -3
  53. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +4 -4
  54. package/SVF-doxygen/html/html/annotated.html +7 -5
  55. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +1 -1
  56. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +5 -5
  57. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +6 -6
  58. package/SVF-doxygen/html/html/classSVF_1_1BDDExpr-members.html +92 -0
  59. package/SVF-doxygen/html/html/classSVF_1_1BDDExpr.html +304 -0
  60. package/SVF-doxygen/html/html/classSVF_1_1BDDExpr.png +0 -0
  61. package/SVF-doxygen/html/html/classSVF_1_1BDDManager-members.html +124 -0
  62. package/SVF-doxygen/html/html/classSVF_1_1BDDManager.html +1139 -0
  63. package/SVF-doxygen/html/html/classSVF_1_1BDDManager.png +0 -0
  64. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +5 -5
  65. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +1 -1
  66. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +1 -1
  67. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +1 -1
  68. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
  69. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +1 -1
  70. package/SVF-doxygen/html/html/classSVF_1_1CondExpr-members.html +5 -8
  71. package/SVF-doxygen/html/html/classSVF_1_1CondExpr.html +22 -151
  72. package/SVF-doxygen/html/html/classSVF_1_1CondExpr.png +0 -0
  73. package/SVF-doxygen/html/html/classSVF_1_1CondManager-members.html +25 -36
  74. package/SVF-doxygen/html/html/classSVF_1_1CondManager.html +276 -605
  75. package/SVF-doxygen/html/html/classSVF_1_1CondManager.png +0 -0
  76. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +1 -1
  77. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +1 -1
  78. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +1 -1
  79. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +9 -9
  80. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +1 -1
  81. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +1 -1
  82. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +9 -9
  83. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +7 -7
  84. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +1 -1
  85. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +1 -1
  86. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +1 -1
  87. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +1 -1
  88. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +2 -2
  89. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +1 -1
  90. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +1 -1
  91. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +1 -1
  92. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +1 -1
  93. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +1 -1
  94. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +1 -1
  95. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +4 -4
  96. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +3 -3
  97. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +6 -6
  98. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +1 -1
  99. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +2 -2
  100. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator.html +1 -1
  101. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +6 -6
  102. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
  103. package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +1 -1
  104. package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +103 -102
  105. package/SVF-doxygen/html/html/classSVF_1_1Options.html +141 -115
  106. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +3 -3
  107. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator-members.html +1 -1
  108. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +189 -196
  109. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +1 -1
  110. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +13 -13
  111. package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +1 -1
  112. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +20 -20
  113. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
  114. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +5 -5
  115. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +5 -5
  116. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +4 -4
  117. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +5 -5
  118. package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +1 -1
  119. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +8 -8
  120. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +1 -1
  121. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +3 -3
  122. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +5 -5
  123. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +2 -2
  124. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
  125. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
  126. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +1 -1
  127. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +1 -1
  128. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +1 -1
  129. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +1 -1
  130. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +3 -3
  131. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +11 -11
  132. package/SVF-doxygen/html/html/classSVF_1_1Z3Expr-members.html +95 -0
  133. package/SVF-doxygen/html/html/classSVF_1_1Z3Expr.html +396 -0
  134. package/SVF-doxygen/html/html/classSVF_1_1Z3Expr.png +0 -0
  135. package/SVF-doxygen/html/html/classSVF_1_1Z3Manager-members.html +122 -0
  136. package/SVF-doxygen/html/html/classSVF_1_1Z3Manager.html +1066 -0
  137. package/SVF-doxygen/html/html/classSVF_1_1Z3Manager.png +0 -0
  138. package/SVF-doxygen/html/html/classes.html +12 -11
  139. package/SVF-doxygen/html/html/functions_0x7e.html +9 -3
  140. package/SVF-doxygen/html/html/functions_a.html +4 -6
  141. package/SVF-doxygen/html/html/functions_b.html +33 -34
  142. package/SVF-doxygen/html/html/functions_c.html +43 -32
  143. package/SVF-doxygen/html/html/functions_d.html +5 -4
  144. package/SVF-doxygen/html/html/functions_e.html +8 -7
  145. package/SVF-doxygen/html/html/functions_enum.html +3 -0
  146. package/SVF-doxygen/html/html/functions_eval_b.html +6 -3
  147. package/SVF-doxygen/html/html/functions_eval_z.html +79 -0
  148. package/SVF-doxygen/html/html/functions_f.html +3 -3
  149. package/SVF-doxygen/html/html/functions_func.html +8 -7
  150. package/SVF-doxygen/html/html/functions_func_0x7e.html +9 -3
  151. package/SVF-doxygen/html/html/functions_func_b.html +10 -10
  152. package/SVF-doxygen/html/html/functions_func_c.html +23 -20
  153. package/SVF-doxygen/html/html/functions_func_d.html +5 -4
  154. package/SVF-doxygen/html/html/functions_func_e.html +3 -2
  155. package/SVF-doxygen/html/html/functions_func_g.html +33 -24
  156. package/SVF-doxygen/html/html/functions_func_i.html +17 -11
  157. package/SVF-doxygen/html/html/functions_func_n.html +4 -3
  158. package/SVF-doxygen/html/html/functions_func_o.html +4 -3
  159. package/SVF-doxygen/html/html/functions_func_p.html +3 -3
  160. package/SVF-doxygen/html/html/functions_func_s.html +2 -2
  161. package/SVF-doxygen/html/html/functions_func_z.html +79 -0
  162. package/SVF-doxygen/html/html/functions_g.html +35 -26
  163. package/SVF-doxygen/html/html/functions_i.html +30 -15
  164. package/SVF-doxygen/html/html/functions_l.html +8 -8
  165. package/SVF-doxygen/html/html/functions_m.html +1 -1
  166. package/SVF-doxygen/html/html/functions_n.html +4 -3
  167. package/SVF-doxygen/html/html/functions_o.html +9 -14
  168. package/SVF-doxygen/html/html/functions_p.html +10 -10
  169. package/SVF-doxygen/html/html/functions_r.html +7 -7
  170. package/SVF-doxygen/html/html/functions_rela.html +4 -0
  171. package/SVF-doxygen/html/html/functions_s.html +13 -15
  172. package/SVF-doxygen/html/html/functions_t.html +1 -3
  173. package/SVF-doxygen/html/html/functions_type_b.html +5 -6
  174. package/SVF-doxygen/html/html/functions_type_c.html +1 -1
  175. package/SVF-doxygen/html/html/functions_type_i.html +4 -1
  176. package/SVF-doxygen/html/html/functions_type_z.html +77 -0
  177. package/SVF-doxygen/html/html/functions_v.html +3 -3
  178. package/SVF-doxygen/html/html/functions_vars_a.html +0 -3
  179. package/SVF-doxygen/html/html/functions_vars_b.html +6 -9
  180. package/SVF-doxygen/html/html/functions_vars_c.html +5 -2
  181. package/SVF-doxygen/html/html/functions_vars_e.html +1 -1
  182. package/SVF-doxygen/html/html/functions_vars_i.html +6 -0
  183. package/SVF-doxygen/html/html/functions_vars_m.html +1 -1
  184. package/SVF-doxygen/html/html/functions_vars_n.html +1 -1
  185. package/SVF-doxygen/html/html/functions_vars_s.html +1 -1
  186. package/SVF-doxygen/html/html/functions_z.html +16 -0
  187. package/SVF-doxygen/html/html/hierarchy.html +436 -434
  188. package/SVF-doxygen/html/html/menudata.js +5 -2
  189. package/SVF-doxygen/html/html/namespaceSVF.html +8 -4
  190. package/SVF-doxygen/html/html/search/all_1.js +1 -2
  191. package/SVF-doxygen/html/html/search/all_10.js +11 -11
  192. package/SVF-doxygen/html/html/search/all_12.js +1 -1
  193. package/SVF-doxygen/html/html/search/all_13.js +8 -8
  194. package/SVF-doxygen/html/html/search/all_14.js +1 -1
  195. package/SVF-doxygen/html/html/search/all_15.js +1 -1
  196. package/SVF-doxygen/html/html/search/all_16.js +1 -1
  197. package/SVF-doxygen/html/html/search/all_1a.js +5 -0
  198. package/SVF-doxygen/html/html/search/all_1b.js +5 -3
  199. package/SVF-doxygen/html/html/search/all_2.js +10 -9
  200. package/SVF-doxygen/html/html/search/all_3.js +9 -7
  201. package/SVF-doxygen/html/html/search/all_4.js +3 -3
  202. package/SVF-doxygen/html/html/search/all_5.js +2 -2
  203. package/SVF-doxygen/html/html/search/all_6.js +1 -1
  204. package/SVF-doxygen/html/html/search/all_7.js +13 -11
  205. package/SVF-doxygen/html/html/search/all_9.js +8 -6
  206. package/SVF-doxygen/html/html/search/all_c.js +5 -5
  207. package/SVF-doxygen/html/html/search/all_d.js +2 -2
  208. package/SVF-doxygen/html/html/search/all_e.js +4 -4
  209. package/SVF-doxygen/html/html/search/all_f.js +2 -2
  210. package/SVF-doxygen/html/html/search/classes_1.js +2 -2
  211. package/SVF-doxygen/html/html/search/classes_14.html +26 -0
  212. package/SVF-doxygen/html/html/search/classes_14.js +5 -0
  213. package/SVF-doxygen/html/html/search/enums_1.js +1 -0
  214. package/SVF-doxygen/html/html/search/enumvalues_1.js +2 -1
  215. package/SVF-doxygen/html/html/search/enumvalues_14.html +26 -0
  216. package/SVF-doxygen/html/html/search/enumvalues_14.js +5 -0
  217. package/SVF-doxygen/html/html/search/functions_0.js +1 -1
  218. package/SVF-doxygen/html/html/search/functions_1.js +5 -5
  219. package/SVF-doxygen/html/html/search/functions_10.js +2 -2
  220. package/SVF-doxygen/html/html/search/functions_15.js +2 -0
  221. package/SVF-doxygen/html/html/search/functions_16.js +5 -3
  222. package/SVF-doxygen/html/html/search/functions_2.js +5 -5
  223. package/SVF-doxygen/html/html/search/functions_3.js +3 -3
  224. package/SVF-doxygen/html/html/search/functions_4.js +1 -1
  225. package/SVF-doxygen/html/html/search/functions_6.js +13 -11
  226. package/SVF-doxygen/html/html/search/functions_8.js +4 -4
  227. package/SVF-doxygen/html/html/search/functions_c.js +1 -1
  228. package/SVF-doxygen/html/html/search/functions_d.js +1 -1
  229. package/SVF-doxygen/html/html/search/functions_e.js +4 -4
  230. package/SVF-doxygen/html/html/search/related_0.js +2 -1
  231. package/SVF-doxygen/html/html/search/searchdata.js +3 -3
  232. package/SVF-doxygen/html/html/search/typedefs_1.js +2 -2
  233. package/SVF-doxygen/html/html/search/typedefs_16.html +26 -0
  234. package/SVF-doxygen/html/html/search/typedefs_16.js +4 -0
  235. package/SVF-doxygen/html/html/search/typedefs_2.js +1 -1
  236. package/SVF-doxygen/html/html/search/typedefs_8.js +2 -1
  237. package/SVF-doxygen/html/html/search/variables_1.js +0 -1
  238. package/SVF-doxygen/html/html/search/variables_13.js +1 -1
  239. package/SVF-doxygen/html/html/search/variables_14.js +1 -1
  240. package/SVF-doxygen/html/html/search/variables_15.js +1 -1
  241. package/SVF-doxygen/html/html/search/variables_2.js +2 -3
  242. package/SVF-doxygen/html/html/search/variables_3.js +2 -1
  243. package/SVF-doxygen/html/html/search/variables_5.js +1 -1
  244. package/SVF-doxygen/html/html/search/variables_9.js +2 -0
  245. package/SVF-doxygen/html/html/search/variables_d.js +2 -2
  246. package/SVF-doxygen/html/html/search/variables_e.js +3 -3
  247. package/include/SABER/PathCondAllocator.h +2 -3
  248. package/include/Util/Conditions.h +272 -166
  249. package/include/Util/Options.h +4 -0
  250. package/lib/SABER/PathCondAllocator.cpp +3 -0
  251. package/lib/Util/Conditions.cpp +245 -209
  252. package/lib/Util/Options.cpp +11 -0
  253. package/package.json +1 -1
@@ -66,84 +66,92 @@ $(function() {
66
66
  <div class="title">Conditions.h</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="Conditions_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- Conditions.h -- Context/Path BDD conditions----------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-2017&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * Condition.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: Oct 19, 2021</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Yulei and Xiao</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#ifndef BITVECTORCOND_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define BITVECTORCOND_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Util_2BasicTypes_8h.html">Util/BasicTypes.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &lt;cstdio&gt;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="cuddInt_8h.html">CUDD/cuddInt.h</a>&quot;</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &quot;z3++.h&quot;</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;{</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="classSVF_1_1CondExpr.html"> 42</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>{</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classSVF_1_1CondExpr.html#aef2356f5c1c3178a7b54f46b7c2144a6"> 45</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="classSVF_1_1CondExpr.html#aef2356f5c1c3178a7b54f46b7c2144a6">CondExprKind</a></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; {</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classSVF_1_1CondExpr.html#aef2356f5c1c3178a7b54f46b7c2144a6ab2a0481a51dd867e2d2f196556c24521"> 47</a></span>&#160; <a class="code" href="classSVF_1_1CondExpr.html#aef2356f5c1c3178a7b54f46b7c2144a6ab2a0481a51dd867e2d2f196556c24521">BranchK</a></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; };</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classSVF_1_1CondExpr.html#af925a6e646b64db7aacf301b37b89b05"> 50</a></span>&#160; <a class="code" href="classSVF_1_1CondExpr.html#af925a6e646b64db7aacf301b37b89b05">CondExpr</a>(<span class="keyword">const</span> z3::expr &amp;_e, <a class="code" href="classSVF_1_1CondExpr.html#aef2356f5c1c3178a7b54f46b7c2144a6">CondExprKind</a> _k) : <a class="code" href="classSVF_1_1CondExpr.html#aa730ac78b531e785b9c16b62a9cf0fa1">e</a>(_e), <a class="code" href="classSVF_1_1CondExpr.html#aa7cbd249e276b768b22677f5efd83dd1">condExprK</a>(_k) {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; }</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classSVF_1_1CondExpr.html#a034728ff201af843f9ae980bbb872086"> 52</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1CondExpr.html#a034728ff201af843f9ae980bbb872086">~CondExpr</a>(){</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; }</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1CondExpr.html#ac83903c62554c6f91812d79d23ec4e23"> 55</a></span>&#160; <span class="keyword">const</span> z3::expr&amp; <a class="code" href="classSVF_1_1CondExpr.html#ac83903c62554c6f91812d79d23ec4e23">getExpr</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondExpr.html#aa730ac78b531e785b9c16b62a9cf0fa1">e</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classSVF_1_1CondExpr.html#a069c3ac3e7f87250a11f590d23c3a864"> 60</a></span>&#160; <span class="keyword">inline</span> z3::context&amp; <a class="code" href="classSVF_1_1CondExpr.html#a069c3ac3e7f87250a11f590d23c3a864">getContext</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondExpr.html#ac83903c62554c6f91812d79d23ec4e23">getExpr</a>().ctx();</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1CondExpr.html#adef8b04d84d8882a2db68e5acab20438"> 65</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1CondExpr.html#adef8b04d84d8882a2db68e5acab20438">getId</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondExpr.html#ac83903c62554c6f91812d79d23ec4e23">getExpr</a>().id();</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1CondExpr.html#a2ae78bbef9ad2f3c61aafa23111a50ef"> 70</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1CondExpr.html#aef2356f5c1c3178a7b54f46b7c2144a6">CondExprKind</a> <a class="code" href="classSVF_1_1CondExpr.html#a2ae78bbef9ad2f3c61aafa23111a50ef">getCondKind</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondExpr.html#aa7cbd249e276b768b22677f5efd83dd1">condExprK</a>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="classSVF_1_1CondExpr.html#aa730ac78b531e785b9c16b62a9cf0fa1"> 75</a></span>&#160; z3::expr <a class="code" href="classSVF_1_1CondExpr.html#aa730ac78b531e785b9c16b62a9cf0fa1">e</a>;</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1CondExpr.html#aa7cbd249e276b768b22677f5efd83dd1"> 76</a></span>&#160; <a class="code" href="classSVF_1_1CondExpr.html#aef2356f5c1c3178a7b54f46b7c2144a6">CondExprKind</a> <a class="code" href="classSVF_1_1CondExpr.html#aa7cbd249e276b768b22677f5efd83dd1">condExprK</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;};</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchCondExpr.html"> 79</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1BranchCondExpr.html">BranchCondExpr</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>{</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchCondExpr.html#ad90fb1713be8b6a064e2423da5dd98b3"> 82</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="structDdNode.html">DdNode</a> <a class="code" href="classSVF_1_1BranchCondExpr.html#ad90fb1713be8b6a064e2423da5dd98b3">BranchCond</a>;</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchCondExpr.html#a4f34f370563761f8a1b6a3c1239d6979"> 83</a></span>&#160; <a class="code" href="classSVF_1_1BranchCondExpr.html#a4f34f370563761f8a1b6a3c1239d6979">BranchCondExpr</a>(<span class="keyword">const</span> z3::expr&amp; _e, BranchCond* _branchCond): <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>(_e, <a class="code" href="classSVF_1_1CondExpr.html#aef2356f5c1c3178a7b54f46b7c2144a6ab2a0481a51dd867e2d2f196556c24521">BranchK</a>), branchCond(_branchCond){</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchCondExpr.html#acbfed1c7771cdb49237cdd6d3c75d25c"> 87</a></span>&#160; BranchCond* <a class="code" href="classSVF_1_1BranchCondExpr.html#acbfed1c7771cdb49237cdd6d3c75d25c">getBranchCond</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">return</span> branchCond;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchCondExpr.html#a466d24de131d064a74d53783a6664b5e"> 93</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1BranchCondExpr.html#a466d24de131d064a74d53783a6664b5e">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BranchCondExpr.html">BranchCondExpr</a> *)</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchCondExpr.html#a410279631ba4a555a6b823be2465b0de"> 98</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1BranchCondExpr.html#a410279631ba4a555a6b823be2465b0de">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *cond)</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">return</span> cond-&gt;<a class="code" href="classSVF_1_1CondExpr.html#a2ae78bbef9ad2f3c61aafa23111a50ef">getCondKind</a>() == <a class="code" href="classSVF_1_1CondExpr.html#aef2356f5c1c3178a7b54f46b7c2144a6ab2a0481a51dd867e2d2f196556c24521">BranchK</a>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchCondExpr.html#a99b54ea1152131f8e0991374043ffced"> 106</a></span>&#160; BranchCond* <a class="code" href="classSVF_1_1BranchCondExpr.html#a99b54ea1152131f8e0991374043ffced">branchCond</a>;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;};</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchCondManager.html"> 114</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1BranchCondManager.html">BranchCondManager</a></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;{</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchCondManager.html#a37bec50768d5df6317a4ba6c790c569d"> 117</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="structDdNode.html">BranchCondExpr::BranchCond</a> <a class="code" href="classSVF_1_1BranchCondManager.html#a37bec50768d5df6317a4ba6c790c569d">BranchCond</a>;</div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchCondManager.html#af1d01bd350869616c143bf586ef4097e"> 119</a></span>&#160; <a class="code" href="classSVF_1_1BranchCondManager.html#af1d01bd350869616c143bf586ef4097e">BranchCondManager</a>()</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; m_bdd_mgr = <a class="code" href="cudd_8h.html#a72894f8bc06257ab2a667acb742a3ab6">Cudd_Init</a>(0, 0, <a class="code" href="cudd_8h.html#a5898eb92cde4c11e117bb88330b50019">CUDD_UNIQUE_SLOTS</a>, <a class="code" href="cudd_8h.html#ae43ddb042121362b558a2ff66dd829ed">CUDD_CACHE_SLOTS</a>, 0);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchCondManager.html#a44bdc46bc43e657a545a5bedcfcae920"> 125</a></span>&#160; <a class="code" href="classSVF_1_1BranchCondManager.html#a44bdc46bc43e657a545a5bedcfcae920">~BranchCondManager</a>()</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <a class="code" href="cudd_8h.html#a2889ace3fcf7d4e00915de52554fd475">Cudd_Quit</a>(m_bdd_mgr);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchCondManager.html#a6c807df0d5627d3afda2359b658bc97c"> 130</a></span>&#160; BranchCond* <a class="code" href="classSVF_1_1BranchCondManager.html#a6c807df0d5627d3afda2359b658bc97c">createCond</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i)</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">return</span> <a class="code" href="cudd_8h.html#a40fd71665cde402bd5bc4f39015c09ae">Cudd_bddIthVar</a>(m_bdd_mgr, i);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; }</div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchCondManager.html#ac6fb7493ceb44406a4bd6a62a60a6363"> 134</a></span>&#160; <span class="keyword">inline</span> BranchCond* <a class="code" href="classSVF_1_1BranchCondManager.html#ac6fb7493ceb44406a4bd6a62a60a6363">getTrueCond</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">return</span> BddOne();</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; }</div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchCondManager.html#a013eb66493beb2b1d004605c68894a95"> 138</a></span>&#160; <span class="keyword">inline</span> BranchCond* <a class="code" href="classSVF_1_1BranchCondManager.html#a013eb66493beb2b1d004605c68894a95">getFalseCond</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">return</span> BddZero();</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; }</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;</div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchCondManager.html#ab728e3f0906854e94776ff0e6297c181"> 143</a></span>&#160; <span class="keyword">inline</span> std::string <a class="code" href="classSVF_1_1BranchCondManager.html#ab728e3f0906854e94776ff0e6297c181">getMemUsage</a>()</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">return</span> std::to_string(<a class="code" href="cudd_8h.html#a03db7d4ba1119a3cd5843fa7bd3a1a30">Cudd_ReadMemoryInUse</a>(m_bdd_mgr));</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; }</div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchCondManager.html#a07dc09be78c287ac24adb20c54147a46"> 147</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1BranchCondManager.html#a07dc09be78c287ac24adb20c54147a46">getCondNumber</a>()</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">return</span> <a class="code" href="cudd_8h.html#a9ba2c88b8f70df51791c26ffde800fc7">Cudd_ReadNodeCount</a>(m_bdd_mgr);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; BranchCond* AND(BranchCond* lhs, BranchCond* rhs);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; BranchCond* OR(BranchCond* lhs, BranchCond* rhs);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; BranchCond* NEG(BranchCond* lhs);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordtype">void</span> <a class="code" href="cuddInt_8c.html#ab69f928c3cca42f5b1330803de1d9199">ddClearFlag</a>(BranchCond * f) <span class="keyword">const</span>;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordtype">void</span> BddSupportStep( BranchCond * f, <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> &amp;support) <span class="keyword">const</span>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordtype">void</span> extractSubConds( BranchCond * f, <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> &amp;support) <span class="keyword">const</span>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordtype">void</span> dump(BranchCond* lhs, <a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a> &amp; O);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; std::string dumpStr(BranchCond* lhs) <span class="keyword">const</span>;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchCondManager.html#a581c73dc30070db0a278ffb3985519dc"> 169</a></span>&#160; <span class="keyword">inline</span> BranchCond* <a class="code" href="classSVF_1_1BranchCondManager.html#a581c73dc30070db0a278ffb3985519dc">BddOne</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">return</span> <a class="code" href="cudd_8h.html#a2651c953d81570d3f4f794bcbef40afe">Cudd_ReadOne</a>(m_bdd_mgr);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; }</div><div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchCondManager.html#a414483307915f9201e203eae9a07d389"> 173</a></span>&#160; <span class="keyword">inline</span> BranchCond* <a class="code" href="classSVF_1_1BranchCondManager.html#a414483307915f9201e203eae9a07d389">BddZero</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">return</span> <a class="code" href="cudd_8h.html#a1dd42d8cb5c86659170103a3068e13a6">Cudd_ReadLogicZero</a>(m_bdd_mgr);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;</div><div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchCondManager.html#a0c6278a5b4419e16c8fb5d3f8f8162a2"> 178</a></span>&#160; <a class="code" href="structDdManager.html">DdManager</a> *<a class="code" href="classSVF_1_1BranchCondManager.html#a0c6278a5b4419e16c8fb5d3f8f8162a2">m_bdd_mgr</a>;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;};</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html"> 181</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1CondManager.html">CondManager</a>{</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a1e48008a3fe3a562512e253133aa557f"> 184</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classSVF_1_1CondManager.html">CondManager</a>* <a class="code" href="classSVF_1_1CondManager.html#a1e48008a3fe3a562512e253133aa557f">condMgr</a>;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <a class="code" href="classSVF_1_1CondManager.html">CondManager</a>();</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#afb6c29587f01bf5b80878bae0850d2f6"> 190</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="structDdNode.html">BranchCondExpr::BranchCond</a> <a class="code" href="classSVF_1_1CondManager.html#afb6c29587f01bf5b80878bae0850d2f6">BranchCond</a>;</div><div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a3cd3149a0bb5b605e61f0935bd234f3b"> 191</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const CondExpr*, const Instruction* &gt;</a> <a class="code" href="classSVF_1_1CondManager.html#a3cd3149a0bb5b605e61f0935bd234f3b">CondToTermInstMap</a>; <span class="comment">// map a condition to its branch instruction</span></div><div class="line"><a name="l00192"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a7efaeff7229fcfdc6c05d53ee3e1d916"> 192</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1CondManager.html#a7efaeff7229fcfdc6c05d53ee3e1d916">totalCondNum</a>; <span class="comment">// a counter for fresh condition</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00195"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a0128830b629c00d91dc78d348300e7c6"> 195</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classSVF_1_1CondManager.html">CondManager</a>* <a class="code" href="classSVF_1_1CondManager.html#a0128830b629c00d91dc78d348300e7c6">getCondMgr</a>()</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">if</span> (condMgr == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; condMgr = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CondManager.html">CondManager</a>();</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; }</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">return</span> condMgr;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; }</div><div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a2748338b4a5b122b5bbf4a9cb1f54211"> 203</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondManager.html#a2748338b4a5b122b5bbf4a9cb1f54211">releaseCondMgr</a>()</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; {</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keyword">delete</span> condMgr;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; condMgr = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; }</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;</div><div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a1f6aceb4d48a37bcb0e2f1776116b760"> 210</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;u32_t, CondExpr*&gt;</a> <a class="code" href="classSVF_1_1CondManager.html#a1f6aceb4d48a37bcb0e2f1776116b760">IDToCondExprMap</a>;</div><div class="line"><a name="l00211"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#af2cf8e42c15d6a0640f13c55050f616f"> 211</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;BranchCond*, CondExpr*&gt;</a> <a class="code" href="classSVF_1_1CondManager.html#af2cf8e42c15d6a0640f13c55050f616f">BranchCondToCondExprMap</a>;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; ~<a class="code" href="classSVF_1_1CondManager.html">CondManager</a>();</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* createFreshBranchCond(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* getOrAddBranchCond(<span class="keyword">const</span> z3::expr&amp; <a class="code" href="classSVF_1_1CondExpr.html#aa730ac78b531e785b9c16b62a9cf0fa1">e</a>, BranchCond* branchCond);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> getCondNumber();</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc"> 226</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* <a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">return</span> trueCond;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; }</div><div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade"> 231</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* <a class="code" href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade">getFalseCond</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">return</span> falseCond;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; z3::expr simplify(<span class="keyword">const</span> z3::expr&amp; expr) <span class="keyword">const</span>;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* AND(<a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* lhs, <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* rhs);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* OR(<a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* lhs, <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* rhs);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* NEG(<a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* lhs);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; std::string getMemUsage();</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordtype">void</span> printModel();</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordtype">void</span> printDbg(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* <a class="code" href="classSVF_1_1CondExpr.html#aa730ac78b531e785b9c16b62a9cf0fa1">e</a>);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; std::string dumpStr(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* e) <span class="keyword">const</span>;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordtype">void</span> extractSubConds(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* cond, <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> &amp;support) <span class="keyword">const</span>;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordtype">bool</span> isSatisfiable(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* cond);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;</div><div class="line"><a name="l00264"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#adef2474c65a7f9d96b27ee670136a240"> 264</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondManager.html#adef2474c65a7f9d96b27ee670136a240">isEquivalentBranchCond</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* lhs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* rhs)<span class="keyword"> const</span>{</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="classSVF_1_1BranchCondExpr.html">BranchCondExpr</a>&gt;(lhs)-&gt;getBranchCond() ==</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="classSVF_1_1BranchCondExpr.html">BranchCondExpr</a>&gt;(rhs)-&gt;getBranchCond();</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; }</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordtype">bool</span> isAllPathReachable(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* e);</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;</div><div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#ac246b92ebdf6a9635ed79892b81b9ae8"> 272</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* <a class="code" href="classSVF_1_1CondManager.html#ac246b92ebdf6a9635ed79892b81b9ae8">getCond</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <span class="keywordtype">id</span>)<span class="keyword"> const </span>{</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keyword">const</span> IDToCondExprMap::const_iterator it = allocatedConds.find(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it!=allocatedConds.end() &amp;&amp; <span class="stringliteral">&quot;condition not found!&quot;</span>);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; }</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="comment">//{@</span></div><div class="line"><a name="l00280"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a4fac6a918f1f6d09fe1a4ceac7c19428"> 280</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* <a class="code" href="classSVF_1_1CondManager.html#a4fac6a918f1f6d09fe1a4ceac7c19428">getCondInst</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* cond)<span class="keyword"> const</span></div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; CondToTermInstMap::const_iterator it = condToInstMap.find(cond);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it!=condToInstMap.end() &amp;&amp; <span class="stringliteral">&quot;this should be a fresh condition&quot;</span>);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; }</div><div class="line"><a name="l00286"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a1fbf7dd446309e13671d838c91da26bf"> 286</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondManager.html#a1fbf7dd446309e13671d838c91da26bf">setCondInst</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* cond, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst){</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(condToInstMap.find(cond)==condToInstMap.end() &amp;&amp; <span class="stringliteral">&quot;this should be a fresh condition&quot;</span>);</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; condToInstMap[cond] = inst;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; }</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div><div class="line"><a name="l00291"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a049541fec44cac3401a0dc68ff2f0ac1"> 291</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondManager.html#a049541fec44cac3401a0dc68ff2f0ac1">setNegCondInst</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *cond, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst) {</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; setCondInst(cond, inst);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; negConds.set(cond-&gt;<a class="code" href="classSVF_1_1CondExpr.html#adef8b04d84d8882a2db68e5acab20438">getId</a>());</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; }</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;</div><div class="line"><a name="l00296"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#ad1de136dbd62c3b9a7447222bd0890fa"> 296</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondManager.html#ad1de136dbd62c3b9a7447222bd0890fa">isNegCond</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *cond)<span class="keyword"> const </span>{</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">return</span> negConds.test(cond-&gt;<a class="code" href="classSVF_1_1CondExpr.html#adef8b04d84d8882a2db68e5acab20438">getId</a>());</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; }</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00302"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a087773d6ae6ed6af009a356dd7b61e11"> 302</a></span>&#160; z3::context <a class="code" href="classSVF_1_1CondManager.html#a087773d6ae6ed6af009a356dd7b61e11">cxt</a>;</div><div class="line"><a name="l00303"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a771bda4bb55dd8c95a03f1a74a215126"> 303</a></span>&#160; z3::solver <a class="code" href="classSVF_1_1CondManager.html#a771bda4bb55dd8c95a03f1a74a215126">sol</a>;</div><div class="line"><a name="l00304"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#aed854ecc55a568597f7d7f1f78fb92f4"> 304</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* <a class="code" href="classSVF_1_1CondManager.html#aed854ecc55a568597f7d7f1f78fb92f4">trueCond</a>;</div><div class="line"><a name="l00305"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a0ba3cf86743de62bcd5fd38d8166bc90"> 305</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* <a class="code" href="classSVF_1_1CondManager.html#a0ba3cf86743de62bcd5fd38d8166bc90">falseCond</a>;</div><div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a3621c17b2ff1beb7aa4e467ec357713b"> 306</a></span>&#160; IDToCondExprMap <a class="code" href="classSVF_1_1CondManager.html#a3621c17b2ff1beb7aa4e467ec357713b">allocatedConds</a>; </div><div class="line"><a name="l00307"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#afd01891f45e085e990c9dbba5cbf3914"> 307</a></span>&#160; BranchCondToCondExprMap <a class="code" href="classSVF_1_1CondManager.html#afd01891f45e085e990c9dbba5cbf3914">branchCondToCondExpr</a>; </div><div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#ab986c3f6281995e302dabe4776768329"> 308</a></span>&#160; CondToTermInstMap <a class="code" href="classSVF_1_1CondManager.html#ab986c3f6281995e302dabe4776768329">condToInstMap</a>; </div><div class="line"><a name="l00309"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#ac735eb27ed4328f97ced87494683f7f1"> 309</a></span>&#160; <a class="code" href="classSVF_1_1BranchCondManager.html">BranchCondManager</a> <a class="code" href="classSVF_1_1CondManager.html#ac735eb27ed4328f97ced87494683f7f1">branchCondManager</a>; </div><div class="line"><a name="l00310"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#aa5e6dbdb4c88941996f7865a2d3ca314"> 310</a></span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> <a class="code" href="classSVF_1_1CondManager.html#aa5e6dbdb4c88941996f7865a2d3ca314">negConds</a>;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;};</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* BITVECTORCOND_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1BranchCondManager_html_a6c807df0d5627d3afda2359b658bc97c"><div class="ttname"><a href="classSVF_1_1BranchCondManager.html#a6c807df0d5627d3afda2359b658bc97c">SVF::BranchCondManager::createCond</a></div><div class="ttdeci">BranchCond * createCond(u32_t i)</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00130">Conditions.h:130</a></div></div>
70
- <div class="ttc" id="classSVF_1_1CondManager_html_a0ba3cf86743de62bcd5fd38d8166bc90"><div class="ttname"><a href="classSVF_1_1CondManager.html#a0ba3cf86743de62bcd5fd38d8166bc90">SVF::CondManager::falseCond</a></div><div class="ttdeci">static CondExpr * falseCond</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00305">Conditions.h:305</a></div></div>
71
- <div class="ttc" id="classSVF_1_1CondManager_html_afb6c29587f01bf5b80878bae0850d2f6"><div class="ttname"><a href="classSVF_1_1CondManager.html#afb6c29587f01bf5b80878bae0850d2f6">SVF::CondManager::BranchCond</a></div><div class="ttdeci">BranchCondExpr::BranchCond BranchCond</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00190">Conditions.h:190</a></div></div>
72
- <div class="ttc" id="classSVF_1_1BranchCondManager_html_a44bdc46bc43e657a545a5bedcfcae920"><div class="ttname"><a href="classSVF_1_1BranchCondManager.html#a44bdc46bc43e657a545a5bedcfcae920">SVF::BranchCondManager::~BranchCondManager</a></div><div class="ttdeci">~BranchCondManager()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00125">Conditions.h:125</a></div></div>
73
- <div class="ttc" id="classSVF_1_1BranchCondManager_html_af1d01bd350869616c143bf586ef4097e"><div class="ttname"><a href="classSVF_1_1BranchCondManager.html#af1d01bd350869616c143bf586ef4097e">SVF::BranchCondManager::BranchCondManager</a></div><div class="ttdeci">BranchCondManager()</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00119">Conditions.h:119</a></div></div>
74
- <div class="ttc" id="classSVF_1_1BranchCondManager_html_ac6fb7493ceb44406a4bd6a62a60a6363"><div class="ttname"><a href="classSVF_1_1BranchCondManager.html#ac6fb7493ceb44406a4bd6a62a60a6363">SVF::BranchCondManager::getTrueCond</a></div><div class="ttdeci">BranchCond * getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00134">Conditions.h:134</a></div></div>
75
- <div class="ttc" id="classSVF_1_1CondManager_html_a771bda4bb55dd8c95a03f1a74a215126"><div class="ttname"><a href="classSVF_1_1CondManager.html#a771bda4bb55dd8c95a03f1a74a215126">SVF::CondManager::sol</a></div><div class="ttdeci">z3::solver sol</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00303">Conditions.h:303</a></div></div>
76
- <div class="ttc" id="cudd_8h_html_a5898eb92cde4c11e117bb88330b50019"><div class="ttname"><a href="cudd_8h.html#a5898eb92cde4c11e117bb88330b50019">CUDD_UNIQUE_SLOTS</a></div><div class="ttdeci">#define CUDD_UNIQUE_SLOTS</div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00090">cudd.h:90</a></div></div>
69
+ <a href="Conditions_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- Conditions.h -- Context/Path BDD conditions----------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-2017&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * Condition.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: Oct 19, 2021</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Yulei and Xiao</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#ifndef BITVECTORCOND_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define BITVECTORCOND_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Util_2BasicTypes_8h.html">Util/BasicTypes.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &lt;cstdio&gt;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="cuddInt_8h.html">CUDD/cuddInt.h</a>&quot;</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &quot;z3++.h&quot;</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="classSVF_1_1CondExpr.html"> 41</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="classSVF_1_1CondExpr.html#aef2356f5c1c3178a7b54f46b7c2144a6"> 44</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="classSVF_1_1CondExpr.html#aef2356f5c1c3178a7b54f46b7c2144a6">CondExprKind</a> {</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classSVF_1_1CondExpr.html#aef2356f5c1c3178a7b54f46b7c2144a6af0ee682babaa91484a4cd3315b6aba2c"> 45</a></span>&#160; <a class="code" href="classSVF_1_1CondExpr.html#aef2356f5c1c3178a7b54f46b7c2144a6a0e68dccd136b7398316e1e931bef06bb">BDDK</a>, <a class="code" href="classSVF_1_1CondExpr.html#aef2356f5c1c3178a7b54f46b7c2144a6af0ee682babaa91484a4cd3315b6aba2c">Z3K</a></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; };</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classSVF_1_1CondExpr.html#aedb9a777dcea1cebf0266d11599cd14f"> 48</a></span>&#160; <a class="code" href="classSVF_1_1CondExpr.html#aedb9a777dcea1cebf0266d11599cd14f">CondExpr</a>(<a class="code" href="classSVF_1_1CondExpr.html#aef2356f5c1c3178a7b54f46b7c2144a6">CondExprKind</a> _k) : <a class="code" href="classSVF_1_1CondExpr.html#aa7cbd249e276b768b22677f5efd83dd1">condExprK</a>(_k) {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classSVF_1_1CondExpr.html#a034728ff201af843f9ae980bbb872086"> 51</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1CondExpr.html#a034728ff201af843f9ae980bbb872086">~CondExpr</a>() {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classSVF_1_1CondExpr.html#a2ae78bbef9ad2f3c61aafa23111a50ef"> 56</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1CondExpr.html#aef2356f5c1c3178a7b54f46b7c2144a6">CondExprKind</a> <a class="code" href="classSVF_1_1CondExpr.html#a2ae78bbef9ad2f3c61aafa23111a50ef">getCondKind</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondExpr.html#aa7cbd249e276b768b22677f5efd83dd1">condExprK</a>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1CondExpr.html#aa7cbd249e276b768b22677f5efd83dd1"> 61</a></span>&#160; <a class="code" href="classSVF_1_1CondExpr.html#aef2356f5c1c3178a7b54f46b7c2144a6">CondExprKind</a> <a class="code" href="classSVF_1_1CondExpr.html#aa7cbd249e276b768b22677f5efd83dd1">condExprK</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;};</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classSVF_1_1Z3Expr.html"> 64</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classSVF_1_1Z3Expr.html#a4c5d8b4850d005c46dc52b4a448a1235"> 66</a></span>&#160; <span class="keyword">typedef</span> z3::expr <a class="code" href="classSVF_1_1Z3Expr.html#a4c5d8b4850d005c46dc52b4a448a1235">Z3Cond</a>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classSVF_1_1Z3Expr.html#a6d57d4b10076ddf91cf47bf4d8878cd8"> 68</a></span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html#a6d57d4b10076ddf91cf47bf4d8878cd8">Z3Expr</a>(<span class="keyword">const</span> z3::expr &amp;_e) : <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>(<a class="code" href="classSVF_1_1CondExpr.html#aef2356f5c1c3178a7b54f46b7c2144a6af0ee682babaa91484a4cd3315b6aba2c">Z3K</a>), e(_e) {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classSVF_1_1Z3Expr.html#a2abc206f11015c52db2eb189114b0dfc"> 71</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1Z3Expr.html#a2abc206f11015c52db2eb189114b0dfc">~Z3Expr</a>() {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="classSVF_1_1Z3Expr.html#a167a586980be31f4f54884e88f972a04"> 75</a></span>&#160; <span class="keyword">const</span> Z3Cond &amp;<a class="code" href="classSVF_1_1Z3Expr.html#a167a586980be31f4f54884e88f972a04">getExpr</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">return</span> e;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classSVF_1_1Z3Expr.html#a8a2406393ca74c99c8cd24a9fc233e81"> 80</a></span>&#160; <span class="keyword">inline</span> z3::context &amp;<a class="code" href="classSVF_1_1Z3Expr.html#a8a2406393ca74c99c8cd24a9fc233e81">getContext</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">return</span> getExpr().ctx();</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classSVF_1_1Z3Expr.html#a368c3b55b3ac7b71f810d0419e3c6c52"> 85</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1Z3Expr.html#a368c3b55b3ac7b71f810d0419e3c6c52">getId</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">return</span> getExpr().id();</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classSVF_1_1Z3Expr.html#a85fabec3de5b24f46fb8dd9e0e0eb0ca"> 91</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1Z3Expr.html#a85fabec3de5b24f46fb8dd9e0e0eb0ca">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> *) {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classSVF_1_1Z3Expr.html#a2281d8fcaaf17f76df1ac0cfa5215909"> 95</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1Z3Expr.html#a2281d8fcaaf17f76df1ac0cfa5215909">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *cond) {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">return</span> cond-&gt;<a class="code" href="classSVF_1_1CondExpr.html#a2ae78bbef9ad2f3c61aafa23111a50ef">getCondKind</a>() == <a class="code" href="classSVF_1_1CondExpr.html#aef2356f5c1c3178a7b54f46b7c2144a6af0ee682babaa91484a4cd3315b6aba2c">Z3K</a>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="classSVF_1_1Z3Expr.html#a12503523dc2ddbc8cd8ef658de6e3cb0"> 101</a></span>&#160; Z3Cond <a class="code" href="classSVF_1_1Z3Expr.html#a12503523dc2ddbc8cd8ef658de6e3cb0">e</a>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;};</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="classSVF_1_1BDDExpr.html"> 105</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1BDDExpr.html">BDDExpr</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classSVF_1_1BDDExpr.html#a8b8ff2750644582e55ff8a5d39826f9f"> 108</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="structDdNode.html">DdNode</a> <a class="code" href="classSVF_1_1BDDExpr.html#a8b8ff2750644582e55ff8a5d39826f9f">BDDCond</a>;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="classSVF_1_1BDDExpr.html#af82f0f6bc1567f2bd3bbb65b6d6473c1"> 110</a></span>&#160; <a class="code" href="classSVF_1_1BDDExpr.html#af82f0f6bc1567f2bd3bbb65b6d6473c1">BDDExpr</a>(BDDCond *_bddCond) : <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>(<a class="code" href="classSVF_1_1CondExpr.html#aef2356f5c1c3178a7b54f46b7c2144a6a0e68dccd136b7398316e1e931bef06bb">BDDK</a>), bddCond(_bddCond) {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="classSVF_1_1BDDExpr.html#a7bad973d49d3fb4eb3b21475d5d015bf"> 114</a></span>&#160; BDDCond *<a class="code" href="classSVF_1_1BDDExpr.html#a7bad973d49d3fb4eb3b21475d5d015bf">getBDDCond</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">return</span> bddCond;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="classSVF_1_1BDDExpr.html#a1ae5bb0cf2be182eaf38e1f2001f27e7"> 120</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1BDDExpr.html#a1ae5bb0cf2be182eaf38e1f2001f27e7">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BDDExpr.html">BDDExpr</a> *) {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="classSVF_1_1BDDExpr.html#ac66dff68314c2705b5cab7378d672d81"> 124</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1BDDExpr.html#ac66dff68314c2705b5cab7378d672d81">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *cond) {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">return</span> cond-&gt;<a class="code" href="classSVF_1_1CondExpr.html#a2ae78bbef9ad2f3c61aafa23111a50ef">getCondKind</a>() == <a class="code" href="classSVF_1_1CondExpr.html#aef2356f5c1c3178a7b54f46b7c2144a6a0e68dccd136b7398316e1e931bef06bb">BDDK</a>;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="classSVF_1_1BDDExpr.html#ad4aabf0e3cd6004c71aa5528c8ca5731"> 131</a></span>&#160; BDDCond *<a class="code" href="classSVF_1_1BDDExpr.html#ad4aabf0e3cd6004c71aa5528c8ca5731">bddCond</a>;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;};</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html"> 135</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1CondManager.html">CondManager</a> {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a7f7519973f1e0ab8054670a6154bd74f"> 138</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="classSVF_1_1CondManager.html#a7f7519973f1e0ab8054670a6154bd74f">CondMgrKind</a> {</div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a7f7519973f1e0ab8054670a6154bd74fa0d24aacdb91d2684f43135bd654f5780"> 139</a></span>&#160; BDDMgrK, Z3MgrK</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; };</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a1e48008a3fe3a562512e253133aa557f"> 143</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classSVF_1_1CondManager.html">CondManager</a> *<a class="code" href="classSVF_1_1CondManager.html#a1e48008a3fe3a562512e253133aa557f">condMgr</a>;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a692a05088457ba5e4e1b7873c8da411d"> 147</a></span>&#160; <a class="code" href="classSVF_1_1CondManager.html#a692a05088457ba5e4e1b7873c8da411d">CondManager</a>() {}</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a01565ecb4f167283396be0e446b9df0a"> 150</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const CondExpr *, const Instruction *&gt;</a> <a class="code" href="classSVF_1_1CondManager.html#a01565ecb4f167283396be0e446b9df0a">CondToTermInstMap</a>; <span class="comment">// map a condition to its branch instruction</span></div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a7efaeff7229fcfdc6c05d53ee3e1d916"> 151</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1CondManager.html#a7efaeff7229fcfdc6c05d53ee3e1d916">totalCondNum</a>; <span class="comment">// a counter for fresh condition</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keyword">static</span> <a class="code" href="classSVF_1_1CondManager.html">CondManager</a> *getCondMgr(<a class="code" href="classSVF_1_1CondManager.html#a7f7519973f1e0ab8054670a6154bd74f">CondMgrKind</a> _condMgrKind);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;</div><div class="line"><a name="l00156"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a2748338b4a5b122b5bbf4a9cb1f54211"> 156</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondManager.html#a2748338b4a5b122b5bbf4a9cb1f54211">releaseCondMgr</a>() {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keyword">delete</span> condMgr;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; condMgr = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; }</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;</div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#ae17d57a0fdc02a5558120e65e11976d4"> 163</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1CondManager.html#ae17d57a0fdc02a5558120e65e11976d4">~CondManager</a>() {};</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *createFreshBranchCond(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst) = 0;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keyword">virtual</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> getCondNumber() = 0;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div><div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc"> 172</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *<a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">return</span> trueCond;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; }</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;</div><div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade"> 177</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *<a class="code" href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade">getFalseCond</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">return</span> falseCond;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *AND(<a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *lhs, <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *rhs) = 0;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *OR(<a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *lhs, <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *rhs) = 0;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *NEG(<a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *lhs) = 0;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> isNegCond(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *cond) <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> isSatisfiable(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *cond) = 0;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> isEquivalentBranchCond(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *lhs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *rhs) = 0;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordtype">bool</span> isAllPathReachable(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *e);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *getCond(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <span class="keywordtype">id</span>) <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="comment">//{@</span></div><div class="line"><a name="l00206"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a4fac6a918f1f6d09fe1a4ceac7c19428"> 206</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *<a class="code" href="classSVF_1_1CondManager.html#a4fac6a918f1f6d09fe1a4ceac7c19428">getCondInst</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *cond)<span class="keyword"> const </span>{</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; CondToTermInstMap::const_iterator it = condToInstMap.find(cond);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != condToInstMap.end() &amp;&amp; <span class="stringliteral">&quot;this should be a fresh condition&quot;</span>);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; }</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;</div><div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a1fbf7dd446309e13671d838c91da26bf"> 212</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondManager.html#a1fbf7dd446309e13671d838c91da26bf">setCondInst</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *cond, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst) {</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(condToInstMap.find(cond) == condToInstMap.end() &amp;&amp; <span class="stringliteral">&quot;this should be a fresh condition&quot;</span>);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; condToInstMap[cond] = inst;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keyword">virtual</span> std::string getMemUsage() = 0;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keyword">virtual</span> std::string dumpStr(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *e) <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> extractSubConds(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *cond, <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> &amp;support) <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00228"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#aed854ecc55a568597f7d7f1f78fb92f4"> 228</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *<a class="code" href="classSVF_1_1CondManager.html#aed854ecc55a568597f7d7f1f78fb92f4">trueCond</a>;</div><div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a0ba3cf86743de62bcd5fd38d8166bc90"> 229</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *<a class="code" href="classSVF_1_1CondManager.html#a0ba3cf86743de62bcd5fd38d8166bc90">falseCond</a>;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;</div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#ab986c3f6281995e302dabe4776768329"> 233</a></span>&#160; CondToTermInstMap <a class="code" href="classSVF_1_1CondManager.html#ab986c3f6281995e302dabe4776768329">condToInstMap</a>; </div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;};</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;</div><div class="line"><a name="l00240"></a><span class="lineno"><a class="line" href="classSVF_1_1Z3Manager.html"> 240</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1Z3Manager.html">Z3Manager</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1CondManager.html">CondManager</a> {</div><div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="classSVF_1_1Z3Manager.html#a243595beea0081ef5ff38dec8c150651"> 241</a></span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1CondManager.html">CondManager</a>;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="classSVF_1_1Z3Manager.html#aae5b5661f0a34771753648072d6ea20a"> 244</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1Z3Expr.html#a4c5d8b4850d005c46dc52b4a448a1235">Z3Expr::Z3Cond</a> <a class="code" href="classSVF_1_1Z3Manager.html#aae5b5661f0a34771753648072d6ea20a">Z3Cond</a>;</div><div class="line"><a name="l00245"></a><span class="lineno"><a class="line" href="classSVF_1_1Z3Manager.html#aae29d2331b696987a2ca5c349bb8315b"> 245</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;u32_t, Z3Expr *&gt;</a> <a class="code" href="classSVF_1_1Z3Manager.html#aae29d2331b696987a2ca5c349bb8315b">IDToCondExprMap</a>;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <a class="code" href="classSVF_1_1Z3Manager.html">Z3Manager</a>();</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;</div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="classSVF_1_1Z3Manager.html#a72e5e03058e98c4f511ce2bb180f89cf"> 251</a></span>&#160; IDToCondExprMap <a class="code" href="classSVF_1_1Z3Manager.html#a72e5e03058e98c4f511ce2bb180f89cf">idToCondExprMap</a>;</div><div class="line"><a name="l00252"></a><span class="lineno"><a class="line" href="classSVF_1_1Z3Manager.html#ac5968fcdba98bd405509b8abd1997cbc"> 252</a></span>&#160; z3::context <a class="code" href="classSVF_1_1Z3Manager.html#ac5968fcdba98bd405509b8abd1997cbc">cxt</a>;</div><div class="line"><a name="l00253"></a><span class="lineno"><a class="line" href="classSVF_1_1Z3Manager.html#ac6fe9310046274759c45c1435fcc85c6"> 253</a></span>&#160; z3::solver <a class="code" href="classSVF_1_1Z3Manager.html#ac6fe9310046274759c45c1435fcc85c6">sol</a>;</div><div class="line"><a name="l00254"></a><span class="lineno"><a class="line" href="classSVF_1_1Z3Manager.html#abd4a010660942227d7db81533e80b2c3"> 254</a></span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> <a class="code" href="classSVF_1_1Z3Manager.html#abd4a010660942227d7db81533e80b2c3">negConds</a>;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keyword">virtual</span> ~<a class="code" href="classSVF_1_1Z3Manager.html">Z3Manager</a>();</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;</div><div class="line"><a name="l00262"></a><span class="lineno"><a class="line" href="classSVF_1_1Z3Manager.html#a5143c47868ea644735f34ca95400ee42"> 262</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1Z3Manager.html#a5143c47868ea644735f34ca95400ee42">getCondNumber</a>()<span class="keyword"> override </span>{</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">return</span> sol.get_model().size();</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; }</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; z3::expr simplify(<span class="keyword">const</span> z3::expr &amp;expr) <span class="keyword">const</span>;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;</div><div class="line"><a name="l00270"></a><span class="lineno"><a class="line" href="classSVF_1_1Z3Manager.html#aa8ecb34cf54a5defb48747b1278b4764"> 270</a></span>&#160; <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *<a class="code" href="classSVF_1_1Z3Manager.html#aa8ecb34cf54a5defb48747b1278b4764">getCond</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i)<span class="keyword"> const override </span>{</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keyword">auto</span> it = idToCondExprMap.find(i);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != idToCondExprMap.end() &amp;&amp; <span class="stringliteral">&quot;condition not found!&quot;</span>);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; }</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *createFreshBranchCond(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst) <span class="keyword">override</span>;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> *getOrAddZ3Cond(<span class="keyword">const</span> Z3Cond &amp;z3Cond);</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *AND(<a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *lhs, <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *rhs) <span class="keyword">override</span>;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *OR(<a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *lhs, <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *rhs) <span class="keyword">override</span>;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *NEG(<a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *lhs) <span class="keyword">override</span>;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordtype">bool</span> isSatisfiable(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *cond) <span class="keyword">override</span>;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordtype">bool</span> isEquivalentBranchCond(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *lhs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *rhs) <span class="keyword">override</span>;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;</div><div class="line"><a name="l00293"></a><span class="lineno"><a class="line" href="classSVF_1_1Z3Manager.html#a7ec31e7f5d856ac7de8416573aef396f"> 293</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1Z3Manager.html#a7ec31e7f5d856ac7de8416573aef396f">setNegCondInst</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *cond, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst) {</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; setCondInst(cond, inst);</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> *z3CondExpr = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>&gt;(cond);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(z3CondExpr &amp;&amp; <span class="stringliteral">&quot;not z3 condition.&quot;</span>);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; negConds.set(z3CondExpr-&gt;<a class="code" href="classSVF_1_1Z3Expr.html#a368c3b55b3ac7b71f810d0419e3c6c52">getId</a>());</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; }</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;</div><div class="line"><a name="l00300"></a><span class="lineno"><a class="line" href="classSVF_1_1Z3Manager.html#a869828207971498df1fd7c9f29d3e999"> 300</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1Z3Manager.html#a869828207971498df1fd7c9f29d3e999">isNegCond</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *cond)<span class="keyword"> const override </span>{</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> *z3CondExpr = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>&gt;(cond);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(z3CondExpr &amp;&amp; <span class="stringliteral">&quot;not z3 condition.&quot;</span>);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">return</span> negConds.test(z3CondExpr-&gt;<a class="code" href="classSVF_1_1Z3Expr.html#a368c3b55b3ac7b71f810d0419e3c6c52">getId</a>());</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; }</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordtype">void</span> extractSubConds(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *f, <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> &amp;support) <span class="keyword">const override</span>;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; std::string dumpStr(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *e) <span class="keyword">const override</span>;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;</div><div class="line"><a name="l00310"></a><span class="lineno"><a class="line" href="classSVF_1_1Z3Manager.html#aca945ffd7a479fcf4de413a1ddcbf15a"> 310</a></span>&#160; <span class="keyword">inline</span> std::string <a class="code" href="classSVF_1_1Z3Manager.html#aca945ffd7a479fcf4de413a1ddcbf15a">getMemUsage</a>()<span class="keyword"> override </span>{</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; }</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordtype">void</span> printDbg(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *e);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordtype">void</span> printModel();</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;};</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;</div><div class="line"><a name="l00325"></a><span class="lineno"><a class="line" href="classSVF_1_1BDDManager.html"> 325</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1BDDManager.html">BDDManager</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1CondManager.html">CondManager</a> {</div><div class="line"><a name="l00326"></a><span class="lineno"><a class="line" href="classSVF_1_1BDDManager.html#a243595beea0081ef5ff38dec8c150651"> 326</a></span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1CondManager.html">CondManager</a>;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00329"></a><span class="lineno"><a class="line" href="classSVF_1_1BDDManager.html#a7a1692324d6b152588ef4d52013f8d00"> 329</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="structDdNode.html">BDDExpr::BDDCond</a> <a class="code" href="classSVF_1_1BDDManager.html#a7a1692324d6b152588ef4d52013f8d00">BDDCond</a>;</div><div class="line"><a name="l00330"></a><span class="lineno"><a class="line" href="classSVF_1_1BDDManager.html#a54716dd8be2691e3e0dbffc14461c1e8"> 330</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;BDDCond *, BDDExpr *&gt;</a> <a class="code" href="classSVF_1_1BDDManager.html#a54716dd8be2691e3e0dbffc14461c1e8">BDDToBDDCondExpr</a>;</div><div class="line"><a name="l00331"></a><span class="lineno"><a class="line" href="classSVF_1_1BDDManager.html#a33bb37b30e4c7364d6df73d209bd81d0"> 331</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;u32_t, BDDCond *&gt;</a> <a class="code" href="classSVF_1_1BDDManager.html#a33bb37b30e4c7364d6df73d209bd81d0">IndexToBDDCond</a>;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <a class="code" href="classSVF_1_1BDDManager.html">BDDManager</a>();</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;</div><div class="line"><a name="l00338"></a><span class="lineno"><a class="line" href="classSVF_1_1BDDManager.html#a51e174fcf76d5adbf22717c0b95c0286"> 338</a></span>&#160; <span class="keyword">inline</span> BDDCond *<a class="code" href="classSVF_1_1BDDManager.html#a51e174fcf76d5adbf22717c0b95c0286">BddOne</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keywordflow">return</span> <a class="code" href="cudd_8h.html#a2651c953d81570d3f4f794bcbef40afe">Cudd_ReadOne</a>(m_bdd_mgr);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; }</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;</div><div class="line"><a name="l00342"></a><span class="lineno"><a class="line" href="classSVF_1_1BDDManager.html#a22c04e2cf77af9c02755d1544b68e112"> 342</a></span>&#160; <span class="keyword">inline</span> BDDCond *<a class="code" href="classSVF_1_1BDDManager.html#a22c04e2cf77af9c02755d1544b68e112">BddZero</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordflow">return</span> <a class="code" href="cudd_8h.html#a1dd42d8cb5c86659170103a3068e13a6">Cudd_ReadLogicZero</a>(m_bdd_mgr);</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; }</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;</div><div class="line"><a name="l00346"></a><span class="lineno"><a class="line" href="classSVF_1_1BDDManager.html#aae62fd27ddc847758ea67000580efdb8"> 346</a></span>&#160; <a class="code" href="structDdManager.html">DdManager</a> *<a class="code" href="classSVF_1_1BDDManager.html#aae62fd27ddc847758ea67000580efdb8">m_bdd_mgr</a>;</div><div class="line"><a name="l00347"></a><span class="lineno"><a class="line" href="classSVF_1_1BDDManager.html#acb037c79511b40032e523494a804adb3"> 347</a></span>&#160; BDDToBDDCondExpr <a class="code" href="classSVF_1_1BDDManager.html#acb037c79511b40032e523494a804adb3">bddToBddCondExprMap</a>;</div><div class="line"><a name="l00348"></a><span class="lineno"><a class="line" href="classSVF_1_1BDDManager.html#a7b780b30a7c433dcccab1e29b85b7704"> 348</a></span>&#160; IndexToBDDCond <a class="code" href="classSVF_1_1BDDManager.html#a7b780b30a7c433dcccab1e29b85b7704">indexToBddCondMap</a>;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keyword">virtual</span> ~<a class="code" href="classSVF_1_1BDDManager.html">BDDManager</a>();</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;</div><div class="line"><a name="l00355"></a><span class="lineno"><a class="line" href="classSVF_1_1BDDManager.html#a82748f6ae3ea640de7b0755a6eab96d1"> 355</a></span>&#160; BDDCond *<a class="code" href="classSVF_1_1BDDManager.html#a82748f6ae3ea640de7b0755a6eab96d1">createCond</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i) {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(indexToBddCondMap.find(i) == indexToBddCondMap.end() &amp;&amp;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="stringliteral">&quot;This should be fresh index to create new BDD&quot;</span>);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; BDDCond *bddCond = <a class="code" href="cudd_8h.html#a40fd71665cde402bd5bc4f39015c09ae">Cudd_bddIthVar</a>(m_bdd_mgr, i);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keywordflow">return</span> indexToBddCondMap.emplace(i, bddCond).first-&gt;second;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; }</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;</div><div class="line"><a name="l00363"></a><span class="lineno"><a class="line" href="classSVF_1_1BDDManager.html#a6b32e78874429c587de4f0f50dad95ee"> 363</a></span>&#160; <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *<a class="code" href="classSVF_1_1BDDManager.html#a6b32e78874429c587de4f0f50dad95ee">getCond</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i)<span class="keyword"> const override </span>{</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="keyword">auto</span> it = indexToBddCondMap.find(i);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != indexToBddCondMap.end() &amp;&amp; <span class="stringliteral">&quot;condition not found!&quot;</span>);</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keyword">auto</span> it2 = bddToBddCondExprMap.find(it-&gt;second);</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it2 != bddToBddCondExprMap.end() &amp;&amp; <span class="stringliteral">&quot;condition not found!&quot;</span>);</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keywordflow">return</span> it2-&gt;second;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; }</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *createFreshBranchCond(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst) <span class="keyword">override</span>;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;</div><div class="line"><a name="l00373"></a><span class="lineno"><a class="line" href="classSVF_1_1BDDManager.html#a11e62b98370ace84a5370a9ab00a1717"> 373</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1BDDManager.html#a11e62b98370ace84a5370a9ab00a1717">getCondNumber</a>()<span class="keyword"> override </span>{</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordflow">return</span> <a class="code" href="cudd_8h.html#a9ba2c88b8f70df51791c26ffde800fc7">Cudd_ReadNodeCount</a>(m_bdd_mgr);</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; }</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <a class="code" href="classSVF_1_1BDDExpr.html">BDDExpr</a> *getOrAddBranchCond(BDDCond *bddCond);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *AND(<a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *lhs, <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *rhs) <span class="keyword">override</span>;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *OR(<a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *lhs, <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *rhs) <span class="keyword">override</span>;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *NEG(<a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *lhs) <span class="keyword">override</span>;</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;</div><div class="line"><a name="l00388"></a><span class="lineno"><a class="line" href="classSVF_1_1BDDManager.html#a4a1c1534e9e23ea326008abf1d318369"> 388</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1BDDManager.html#a4a1c1534e9e23ea326008abf1d318369">isNegCond</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *cond)<span class="keyword"> const override </span>{</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; }</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;</div><div class="line"><a name="l00392"></a><span class="lineno"><a class="line" href="classSVF_1_1BDDManager.html#a4ce1ff325aab55d7bef7d28fe79f4cde"> 392</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1BDDManager.html#a4ce1ff325aab55d7bef7d28fe79f4cde">isEquivalentBranchCond</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *lhs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *rhs)<span class="keyword"> override </span>{</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keywordflow">return</span> lhs == rhs;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; }</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keywordtype">bool</span> isSatisfiable(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *cond) <span class="keyword">override</span>;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordtype">void</span> <a class="code" href="cuddInt_8c.html#ab69f928c3cca42f5b1330803de1d9199">ddClearFlag</a>(BDDCond *f) <span class="keyword">const</span>;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keywordtype">void</span> BddSupportStep(BDDCond *f, <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> &amp;support) <span class="keyword">const</span>;</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordtype">void</span> extractSubConds(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *f, <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> &amp;support) <span class="keyword">const override</span>;</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keywordtype">void</span> dump(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *lhs, <a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a> &amp;O);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; std::string dumpStr(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *e) <span class="keyword">const override</span>;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;</div><div class="line"><a name="l00412"></a><span class="lineno"><a class="line" href="classSVF_1_1BDDManager.html#adf0847a4af7703a0139c5db326a7988f"> 412</a></span>&#160; <span class="keyword">inline</span> std::string <a class="code" href="classSVF_1_1BDDManager.html#adf0847a4af7703a0139c5db326a7988f">getMemUsage</a>()<span class="keyword"> override </span>{</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keywordflow">return</span> std::to_string(<a class="code" href="cudd_8h.html#a03db7d4ba1119a3cd5843fa7bd3a1a30">Cudd_ReadMemoryInUse</a>(m_bdd_mgr));</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; }</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;};</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* BITVECTORCOND_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1CondManager_html_a0ba3cf86743de62bcd5fd38d8166bc90"><div class="ttname"><a href="classSVF_1_1CondManager.html#a0ba3cf86743de62bcd5fd38d8166bc90">SVF::CondManager::falseCond</a></div><div class="ttdeci">static CondExpr * falseCond</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00229">Conditions.h:229</a></div></div>
70
+ <div class="ttc" id="classSVF_1_1BDDManager_html_a7a1692324d6b152588ef4d52013f8d00"><div class="ttname"><a href="classSVF_1_1BDDManager.html#a7a1692324d6b152588ef4d52013f8d00">SVF::BDDManager::BDDCond</a></div><div class="ttdeci">BDDExpr::BDDCond BDDCond</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00329">Conditions.h:329</a></div></div>
71
+ <div class="ttc" id="classSVF_1_1CondExpr_html_aedb9a777dcea1cebf0266d11599cd14f"><div class="ttname"><a href="classSVF_1_1CondExpr.html#aedb9a777dcea1cebf0266d11599cd14f">SVF::CondExpr::CondExpr</a></div><div class="ttdeci">CondExpr(CondExprKind _k)</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00048">Conditions.h:48</a></div></div>
72
+ <div class="ttc" id="classSVF_1_1BDDManager_html_a11e62b98370ace84a5370a9ab00a1717"><div class="ttname"><a href="classSVF_1_1BDDManager.html#a11e62b98370ace84a5370a9ab00a1717">SVF::BDDManager::getCondNumber</a></div><div class="ttdeci">u32_t getCondNumber() override</div><div class="ttdoc">Return the number of condition expressions. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00373">Conditions.h:373</a></div></div>
73
+ <div class="ttc" id="classSVF_1_1Z3Manager_html_a869828207971498df1fd7c9f29d3e999"><div class="ttname"><a href="classSVF_1_1Z3Manager.html#a869828207971498df1fd7c9f29d3e999">SVF::Z3Manager::isNegCond</a></div><div class="ttdeci">bool isNegCond(const CondExpr *cond) const override</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00300">Conditions.h:300</a></div></div>
74
+ <div class="ttc" id="classSVF_1_1CondExpr_html_aef2356f5c1c3178a7b54f46b7c2144a6a0e68dccd136b7398316e1e931bef06bb"><div class="ttname"><a href="classSVF_1_1CondExpr.html#aef2356f5c1c3178a7b54f46b7c2144a6a0e68dccd136b7398316e1e931bef06bb">SVF::CondExpr::BDDK</a></div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00045">Conditions.h:45</a></div></div>
77
75
  <div class="ttc" id="structDdNode_html"><div class="ttname"><a href="structDdNode.html">DdNode</a></div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00264">cudd.h:264</a></div></div>
76
+ <div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00018">MTAResultValidator.h:18</a></div></div>
77
+ <div class="ttc" id="classSVF_1_1Z3Manager_html"><div class="ttname"><a href="classSVF_1_1Z3Manager.html">SVF::Z3Manager</a></div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00240">Conditions.h:240</a></div></div>
78
78
  <div class="ttc" id="Util_2BasicTypes_8h_html"><div class="ttname"><a href="Util_2BasicTypes_8h.html">BasicTypes.h</a></div></div>
79
- <div class="ttc" id="classSVF_1_1BranchCondExpr_html_a99b54ea1152131f8e0991374043ffced"><div class="ttname"><a href="classSVF_1_1BranchCondExpr.html#a99b54ea1152131f8e0991374043ffced">SVF::BranchCondExpr::branchCond</a></div><div class="ttdeci">BranchCond * branchCond</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00106">Conditions.h:106</a></div></div>
79
+ <div class="ttc" id="classSVF_1_1BDDExpr_html_ad4aabf0e3cd6004c71aa5528c8ca5731"><div class="ttname"><a href="classSVF_1_1BDDExpr.html#ad4aabf0e3cd6004c71aa5528c8ca5731">SVF::BDDExpr::bddCond</a></div><div class="ttdeci">BDDCond * bddCond</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00131">Conditions.h:131</a></div></div>
80
+ <div class="ttc" id="classSVF_1_1Z3Expr_html_a12503523dc2ddbc8cd8ef658de6e3cb0"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#a12503523dc2ddbc8cd8ef658de6e3cb0">SVF::Z3Expr::e</a></div><div class="ttdeci">Z3Cond e</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00101">Conditions.h:101</a></div></div>
81
+ <div class="ttc" id="classSVF_1_1BDDExpr_html_ac66dff68314c2705b5cab7378d672d81"><div class="ttname"><a href="classSVF_1_1BDDExpr.html#ac66dff68314c2705b5cab7378d672d81">SVF::BDDExpr::classof</a></div><div class="ttdeci">static bool classof(const CondExpr *cond)</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00124">Conditions.h:124</a></div></div>
80
82
  <div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
81
- <div class="ttc" id="classSVF_1_1CondManager_html_ac74f182ef249a7c892ba9c630f889ddc"><div class="ttname"><a href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">SVF::CondManager::getTrueCond</a></div><div class="ttdeci">CondExpr * getTrueCond() const</div><div class="ttdoc">Return the unique true condition. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00226">Conditions.h:226</a></div></div>
82
- <div class="ttc" id="classSVF_1_1BranchCondManager_html_a37bec50768d5df6317a4ba6c790c569d"><div class="ttname"><a href="classSVF_1_1BranchCondManager.html#a37bec50768d5df6317a4ba6c790c569d">SVF::BranchCondManager::BranchCond</a></div><div class="ttdeci">BranchCondExpr::BranchCond BranchCond</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00117">Conditions.h:117</a></div></div>
83
+ <div class="ttc" id="classSVF_1_1CondManager_html_ac74f182ef249a7c892ba9c630f889ddc"><div class="ttname"><a href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">SVF::CondManager::getTrueCond</a></div><div class="ttdeci">CondExpr * getTrueCond() const</div><div class="ttdoc">Return the unique true condition. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00172">Conditions.h:172</a></div></div>
84
+ <div class="ttc" id="classSVF_1_1BDDExpr_html_af82f0f6bc1567f2bd3bbb65b6d6473c1"><div class="ttname"><a href="classSVF_1_1BDDExpr.html#af82f0f6bc1567f2bd3bbb65b6d6473c1">SVF::BDDExpr::BDDExpr</a></div><div class="ttdeci">BDDExpr(BDDCond *_bddCond)</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00110">Conditions.h:110</a></div></div>
85
+ <div class="ttc" id="classSVF_1_1Z3Expr_html_a6d57d4b10076ddf91cf47bf4d8878cd8"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#a6d57d4b10076ddf91cf47bf4d8878cd8">SVF::Z3Expr::Z3Expr</a></div><div class="ttdeci">Z3Expr(const z3::expr &amp;_e)</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00068">Conditions.h:68</a></div></div>
83
86
  <div class="ttc" id="cuddInt_8h_html"><div class="ttname"><a href="cuddInt_8h.html">cuddInt.h</a></div></div>
84
- <div class="ttc" id="classSVF_1_1CondManager_html_a087773d6ae6ed6af009a356dd7b61e11"><div class="ttname"><a href="classSVF_1_1CondManager.html#a087773d6ae6ed6af009a356dd7b61e11">SVF::CondManager::cxt</a></div><div class="ttdeci">z3::context cxt</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00302">Conditions.h:302</a></div></div>
85
- <div class="ttc" id="classSVF_1_1CondManager_html_a3cd3149a0bb5b605e61f0935bd234f3b"><div class="ttname"><a href="classSVF_1_1CondManager.html#a3cd3149a0bb5b605e61f0935bd234f3b">SVF::CondManager::CondToTermInstMap</a></div><div class="ttdeci">Map&lt; const CondExpr *, const Instruction *&gt; CondToTermInstMap</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00191">Conditions.h:191</a></div></div>
87
+ <div class="ttc" id="classSVF_1_1BDDManager_html_a7b780b30a7c433dcccab1e29b85b7704"><div class="ttname"><a href="classSVF_1_1BDDManager.html#a7b780b30a7c433dcccab1e29b85b7704">SVF::BDDManager::indexToBddCondMap</a></div><div class="ttdeci">IndexToBDDCond indexToBddCondMap</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00348">Conditions.h:348</a></div></div>
88
+ <div class="ttc" id="classSVF_1_1CondExpr_html_aef2356f5c1c3178a7b54f46b7c2144a6af0ee682babaa91484a4cd3315b6aba2c"><div class="ttname"><a href="classSVF_1_1CondExpr.html#aef2356f5c1c3178a7b54f46b7c2144a6af0ee682babaa91484a4cd3315b6aba2c">SVF::CondExpr::Z3K</a></div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00045">Conditions.h:45</a></div></div>
86
89
  <div class="ttc" id="cudd_8h_html_a1dd42d8cb5c86659170103a3068e13a6"><div class="ttname"><a href="cudd_8h.html#a1dd42d8cb5c86659170103a3068e13a6">Cudd_ReadLogicZero</a></div><div class="ttdeci">DdNode * Cudd_ReadLogicZero(DdManager *dd)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l01738">cuddInt.c:1738</a></div></div>
87
- <div class="ttc" id="classSVF_1_1CondManager_html_adef2474c65a7f9d96b27ee670136a240"><div class="ttname"><a href="classSVF_1_1CondManager.html#adef2474c65a7f9d96b27ee670136a240">SVF::CondManager::isEquivalentBranchCond</a></div><div class="ttdeci">bool isEquivalentBranchCond(const CondExpr *lhs, const CondExpr *rhs) const</div><div class="ttdoc">Whether lhs and rhs are equivalent branch conditions. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00264">Conditions.h:264</a></div></div>
88
- <div class="ttc" id="classSVF_1_1CondManager_html_aa5e6dbdb4c88941996f7865a2d3ca314"><div class="ttname"><a href="classSVF_1_1CondManager.html#aa5e6dbdb4c88941996f7865a2d3ca314">SVF::CondManager::negConds</a></div><div class="ttdeci">NodeBS negConds</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00310">Conditions.h:310</a></div></div>
89
- <div class="ttc" id="classSVF_1_1CondManager_html_ac735eb27ed4328f97ced87494683f7f1"><div class="ttname"><a href="classSVF_1_1CondManager.html#ac735eb27ed4328f97ced87494683f7f1">SVF::CondManager::branchCondManager</a></div><div class="ttdeci">BranchCondManager branchCondManager</div><div class="ttdoc">branch condition manager </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00309">Conditions.h:309</a></div></div>
90
- <div class="ttc" id="cudd_8h_html_ae43ddb042121362b558a2ff66dd829ed"><div class="ttname"><a href="cudd_8h.html#ae43ddb042121362b558a2ff66dd829ed">CUDD_CACHE_SLOTS</a></div><div class="ttdeci">#define CUDD_CACHE_SLOTS</div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00091">cudd.h:91</a></div></div>
90
+ <div class="ttc" id="classSVF_1_1BDDManager_html_a82748f6ae3ea640de7b0755a6eab96d1"><div class="ttname"><a href="classSVF_1_1BDDManager.html#a82748f6ae3ea640de7b0755a6eab96d1">SVF::BDDManager::createCond</a></div><div class="ttdeci">BDDCond * createCond(u32_t i)</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00355">Conditions.h:355</a></div></div>
91
+ <div class="ttc" id="classSVF_1_1BDDManager_html_a22c04e2cf77af9c02755d1544b68e112"><div class="ttname"><a href="classSVF_1_1BDDManager.html#a22c04e2cf77af9c02755d1544b68e112">SVF::BDDManager::BddZero</a></div><div class="ttdeci">BDDCond * BddZero() const</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00342">Conditions.h:342</a></div></div>
92
+ <div class="ttc" id="classSVF_1_1BDDManager_html_a54716dd8be2691e3e0dbffc14461c1e8"><div class="ttname"><a href="classSVF_1_1BDDManager.html#a54716dd8be2691e3e0dbffc14461c1e8">SVF::BDDManager::BDDToBDDCondExpr</a></div><div class="ttdeci">Map&lt; BDDCond *, BDDExpr * &gt; BDDToBDDCondExpr</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00330">Conditions.h:330</a></div></div>
93
+ <div class="ttc" id="classSVF_1_1Z3Expr_html"><div class="ttname"><a href="classSVF_1_1Z3Expr.html">SVF::Z3Expr</a></div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00064">Conditions.h:64</a></div></div>
94
+ <div class="ttc" id="classSVF_1_1Z3Expr_html_a167a586980be31f4f54884e88f972a04"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#a167a586980be31f4f54884e88f972a04">SVF::Z3Expr::getExpr</a></div><div class="ttdeci">const Z3Cond &amp; getExpr() const</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00075">Conditions.h:75</a></div></div>
91
95
  <div class="ttc" id="structDdManager_html"><div class="ttname"><a href="structDdManager.html">DdManager</a></div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00326">cuddInt.h:326</a></div></div>
92
- <div class="ttc" id="classSVF_1_1BranchCondExpr_html_a410279631ba4a555a6b823be2465b0de"><div class="ttname"><a href="classSVF_1_1BranchCondExpr.html#a410279631ba4a555a6b823be2465b0de">SVF::BranchCondExpr::classof</a></div><div class="ttdeci">static bool classof(const CondExpr *cond)</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00098">Conditions.h:98</a></div></div>
93
96
  <div class="ttc" id="namespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map&lt; Key, Value, Hash, KeyEqual, Allocator &gt; Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00102">SVFBasicTypes.h:102</a></div></div>
94
97
  <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00077">SVFBasicTypes.h:77</a></div></div>
95
- <div class="ttc" id="classSVF_1_1CondExpr_html_aa7cbd249e276b768b22677f5efd83dd1"><div class="ttname"><a href="classSVF_1_1CondExpr.html#aa7cbd249e276b768b22677f5efd83dd1">SVF::CondExpr::condExprK</a></div><div class="ttdeci">CondExprKind condExprK</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00076">Conditions.h:76</a></div></div>
96
- <div class="ttc" id="classSVF_1_1CondExpr_html"><div class="ttname"><a href="classSVF_1_1CondExpr.html">SVF::CondExpr</a></div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00042">Conditions.h:42</a></div></div>
98
+ <div class="ttc" id="classSVF_1_1CondExpr_html_aa7cbd249e276b768b22677f5efd83dd1"><div class="ttname"><a href="classSVF_1_1CondExpr.html#aa7cbd249e276b768b22677f5efd83dd1">SVF::CondExpr::condExprK</a></div><div class="ttdeci">CondExprKind condExprK</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00061">Conditions.h:61</a></div></div>
99
+ <div class="ttc" id="classSVF_1_1CondExpr_html"><div class="ttname"><a href="classSVF_1_1CondExpr.html">SVF::CondExpr</a></div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00041">Conditions.h:41</a></div></div>
100
+ <div class="ttc" id="classSVF_1_1BDDManager_html_acb037c79511b40032e523494a804adb3"><div class="ttname"><a href="classSVF_1_1BDDManager.html#acb037c79511b40032e523494a804adb3">SVF::BDDManager::bddToBddCondExprMap</a></div><div class="ttdeci">BDDToBDDCondExpr bddToBddCondExprMap</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00347">Conditions.h:347</a></div></div>
97
101
  <div class="ttc" id="cuddInt_8c_html_ab69f928c3cca42f5b1330803de1d9199"><div class="ttname"><a href="cuddInt_8c.html#ab69f928c3cca42f5b1330803de1d9199">ddClearFlag</a></div><div class="ttdeci">static void ddClearFlag(DdNode *f)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l23821">cuddInt.c:23821</a></div></div>
98
- <div class="ttc" id="classSVF_1_1BranchCondExpr_html_a4f34f370563761f8a1b6a3c1239d6979"><div class="ttname"><a href="classSVF_1_1BranchCondExpr.html#a4f34f370563761f8a1b6a3c1239d6979">SVF::BranchCondExpr::BranchCondExpr</a></div><div class="ttdeci">BranchCondExpr(const z3::expr &amp;_e, BranchCond *_branchCond)</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00083">Conditions.h:83</a></div></div>
99
- <div class="ttc" id="classSVF_1_1CondExpr_html_a034728ff201af843f9ae980bbb872086"><div class="ttname"><a href="classSVF_1_1CondExpr.html#a034728ff201af843f9ae980bbb872086">SVF::CondExpr::~CondExpr</a></div><div class="ttdeci">virtual ~CondExpr()</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00052">Conditions.h:52</a></div></div>
100
- <div class="ttc" id="classSVF_1_1CondManager_html_a2748338b4a5b122b5bbf4a9cb1f54211"><div class="ttname"><a href="classSVF_1_1CondManager.html#a2748338b4a5b122b5bbf4a9cb1f54211">SVF::CondManager::releaseCondMgr</a></div><div class="ttdeci">static void releaseCondMgr()</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00203">Conditions.h:203</a></div></div>
101
- <div class="ttc" id="classSVF_1_1BranchCondManager_html"><div class="ttname"><a href="classSVF_1_1BranchCondManager.html">SVF::BranchCondManager</a></div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00114">Conditions.h:114</a></div></div>
102
- <div class="ttc" id="classSVF_1_1CondExpr_html_adef8b04d84d8882a2db68e5acab20438"><div class="ttname"><a href="classSVF_1_1CondExpr.html#adef8b04d84d8882a2db68e5acab20438">SVF::CondExpr::getId</a></div><div class="ttdeci">u32_t getId() const</div><div class="ttdoc">get id </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00065">Conditions.h:65</a></div></div>
103
- <div class="ttc" id="classSVF_1_1CondManager_html_ab986c3f6281995e302dabe4776768329"><div class="ttname"><a href="classSVF_1_1CondManager.html#ab986c3f6281995e302dabe4776768329">SVF::CondManager::condToInstMap</a></div><div class="ttdeci">CondToTermInstMap condToInstMap</div><div class="ttdoc">map condition to llvm instruction </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00308">Conditions.h:308</a></div></div>
104
- <div class="ttc" id="classSVF_1_1CondManager_html_afd01891f45e085e990c9dbba5cbf3914"><div class="ttname"><a href="classSVF_1_1CondManager.html#afd01891f45e085e990c9dbba5cbf3914">SVF::CondManager::branchCondToCondExpr</a></div><div class="ttdeci">BranchCondToCondExprMap branchCondToCondExpr</div><div class="ttdoc">map branch condition to its Condition wrapper </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00307">Conditions.h:307</a></div></div>
102
+ <div class="ttc" id="classSVF_1_1BDDExpr_html_a8b8ff2750644582e55ff8a5d39826f9f"><div class="ttname"><a href="classSVF_1_1BDDExpr.html#a8b8ff2750644582e55ff8a5d39826f9f">SVF::BDDExpr::BDDCond</a></div><div class="ttdeci">DdNode BDDCond</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00108">Conditions.h:108</a></div></div>
103
+ <div class="ttc" id="classSVF_1_1CondExpr_html_a034728ff201af843f9ae980bbb872086"><div class="ttname"><a href="classSVF_1_1CondExpr.html#a034728ff201af843f9ae980bbb872086">SVF::CondExpr::~CondExpr</a></div><div class="ttdeci">virtual ~CondExpr()</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00051">Conditions.h:51</a></div></div>
104
+ <div class="ttc" id="classSVF_1_1CondManager_html_a2748338b4a5b122b5bbf4a9cb1f54211"><div class="ttname"><a href="classSVF_1_1CondManager.html#a2748338b4a5b122b5bbf4a9cb1f54211">SVF::CondManager::releaseCondMgr</a></div><div class="ttdeci">static void releaseCondMgr()</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00156">Conditions.h:156</a></div></div>
105
+ <div class="ttc" id="classSVF_1_1Z3Manager_html_ac6fe9310046274759c45c1435fcc85c6"><div class="ttname"><a href="classSVF_1_1Z3Manager.html#ac6fe9310046274759c45c1435fcc85c6">SVF::Z3Manager::sol</a></div><div class="ttdeci">z3::solver sol</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00253">Conditions.h:253</a></div></div>
106
+ <div class="ttc" id="classSVF_1_1CondManager_html_ae17d57a0fdc02a5558120e65e11976d4"><div class="ttname"><a href="classSVF_1_1CondManager.html#ae17d57a0fdc02a5558120e65e11976d4">SVF::CondManager::~CondManager</a></div><div class="ttdeci">virtual ~CondManager()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00163">Conditions.h:163</a></div></div>
107
+ <div class="ttc" id="classSVF_1_1CondManager_html_ab986c3f6281995e302dabe4776768329"><div class="ttname"><a href="classSVF_1_1CondManager.html#ab986c3f6281995e302dabe4776768329">SVF::CondManager::condToInstMap</a></div><div class="ttdeci">CondToTermInstMap condToInstMap</div><div class="ttdoc">map condition to llvm instruction </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00233">Conditions.h:233</a></div></div>
108
+ <div class="ttc" id="classSVF_1_1BDDExpr_html_a7bad973d49d3fb4eb3b21475d5d015bf"><div class="ttname"><a href="classSVF_1_1BDDExpr.html#a7bad973d49d3fb4eb3b21475d5d015bf">SVF::BDDExpr::getBDDCond</a></div><div class="ttdeci">BDDCond * getBDDCond() const</div><div class="ttdoc">get BDD condition </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00114">Conditions.h:114</a></div></div>
109
+ <div class="ttc" id="classSVF_1_1BDDManager_html"><div class="ttname"><a href="classSVF_1_1BDDManager.html">SVF::BDDManager</a></div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00325">Conditions.h:325</a></div></div>
110
+ <div class="ttc" id="classSVF_1_1Z3Expr_html_a8a2406393ca74c99c8cd24a9fc233e81"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#a8a2406393ca74c99c8cd24a9fc233e81">SVF::Z3Expr::getContext</a></div><div class="ttdeci">z3::context &amp; getContext() const</div><div class="ttdoc">get ctx </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00080">Conditions.h:80</a></div></div>
105
111
  <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00077">BasicTypes.h:77</a></div></div>
106
- <div class="ttc" id="classSVF_1_1BranchCondExpr_html_a466d24de131d064a74d53783a6664b5e"><div class="ttname"><a href="classSVF_1_1BranchCondExpr.html#a466d24de131d064a74d53783a6664b5e">SVF::BranchCondExpr::classof</a></div><div class="ttdeci">static bool classof(const BranchCondExpr *)</div><div class="ttdoc">Methods for support type inquiry through isa, cast, and dyn_cast: </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00093">Conditions.h:93</a></div></div>
107
- <div class="ttc" id="classSVF_1_1BranchCondExpr_html_ad90fb1713be8b6a064e2423da5dd98b3"><div class="ttname"><a href="classSVF_1_1BranchCondExpr.html#ad90fb1713be8b6a064e2423da5dd98b3">SVF::BranchCondExpr::BranchCond</a></div><div class="ttdeci">DdNode BranchCond</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00082">Conditions.h:82</a></div></div>
108
- <div class="ttc" id="classSVF_1_1CondManager_html_a1f6aceb4d48a37bcb0e2f1776116b760"><div class="ttname"><a href="classSVF_1_1CondManager.html#a1f6aceb4d48a37bcb0e2f1776116b760">SVF::CondManager::IDToCondExprMap</a></div><div class="ttdeci">Map&lt; u32_t, CondExpr * &gt; IDToCondExprMap</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00210">Conditions.h:210</a></div></div>
109
- <div class="ttc" id="classSVF_1_1BranchCondManager_html_ab728e3f0906854e94776ff0e6297c181"><div class="ttname"><a href="classSVF_1_1BranchCondManager.html#ab728e3f0906854e94776ff0e6297c181">SVF::BranchCondManager::getMemUsage</a></div><div class="ttdeci">std::string getMemUsage()</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00143">Conditions.h:143</a></div></div>
110
- <div class="ttc" id="classSVF_1_1CondManager_html_a1e48008a3fe3a562512e253133aa557f"><div class="ttname"><a href="classSVF_1_1CondManager.html#a1e48008a3fe3a562512e253133aa557f">SVF::CondManager::condMgr</a></div><div class="ttdeci">static CondManager * condMgr</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00184">Conditions.h:184</a></div></div>
111
- <div class="ttc" id="classSVF_1_1CondManager_html_a1fbf7dd446309e13671d838c91da26bf"><div class="ttname"><a href="classSVF_1_1CondManager.html#a1fbf7dd446309e13671d838c91da26bf">SVF::CondManager::setCondInst</a></div><div class="ttdeci">void setCondInst(const CondExpr *cond, const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00286">Conditions.h:286</a></div></div>
112
- <div class="ttc" id="classSVF_1_1BranchCondManager_html_a581c73dc30070db0a278ffb3985519dc"><div class="ttname"><a href="classSVF_1_1BranchCondManager.html#a581c73dc30070db0a278ffb3985519dc">SVF::BranchCondManager::BddOne</a></div><div class="ttdeci">BranchCond * BddOne() const</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00169">Conditions.h:169</a></div></div>
113
- <div class="ttc" id="cudd_8h_html_a72894f8bc06257ab2a667acb742a3ab6"><div class="ttname"><a href="cudd_8h.html#a72894f8bc06257ab2a667acb742a3ab6">Cudd_Init</a></div><div class="ttdeci">DdManager * Cudd_Init(unsigned int numVars, unsigned int numVarsZ, unsigned int numSlots, unsigned int cacheSize, unsigned long maxMemory)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l10544">cuddInt.c:10544</a></div></div>
114
- <div class="ttc" id="classSVF_1_1CondExpr_html_a069c3ac3e7f87250a11f590d23c3a864"><div class="ttname"><a href="classSVF_1_1CondExpr.html#a069c3ac3e7f87250a11f590d23c3a864">SVF::CondExpr::getContext</a></div><div class="ttdeci">z3::context &amp; getContext() const</div><div class="ttdoc">get ctx </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00060">Conditions.h:60</a></div></div>
115
- <div class="ttc" id="classSVF_1_1CondManager_html_ad1de136dbd62c3b9a7447222bd0890fa"><div class="ttname"><a href="classSVF_1_1CondManager.html#ad1de136dbd62c3b9a7447222bd0890fa">SVF::CondManager::isNegCond</a></div><div class="ttdeci">bool isNegCond(const CondExpr *cond) const</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00296">Conditions.h:296</a></div></div>
116
- <div class="ttc" id="classSVF_1_1BranchCondManager_html_a414483307915f9201e203eae9a07d389"><div class="ttname"><a href="classSVF_1_1BranchCondManager.html#a414483307915f9201e203eae9a07d389">SVF::BranchCondManager::BddZero</a></div><div class="ttdeci">BranchCond * BddZero() const</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00173">Conditions.h:173</a></div></div>
117
- <div class="ttc" id="classSVF_1_1CondManager_html_a3621c17b2ff1beb7aa4e467ec357713b"><div class="ttname"><a href="classSVF_1_1CondManager.html#a3621c17b2ff1beb7aa4e467ec357713b">SVF::CondManager::allocatedConds</a></div><div class="ttdeci">IDToCondExprMap allocatedConds</div><div class="ttdoc">map condition id (z3 ast id) to its Condition wrapper </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00306">Conditions.h:306</a></div></div>
118
- <div class="ttc" id="classSVF_1_1CondManager_html_ac246b92ebdf6a9635ed79892b81b9ae8"><div class="ttname"><a href="classSVF_1_1CondManager.html#ac246b92ebdf6a9635ed79892b81b9ae8">SVF::CondManager::getCond</a></div><div class="ttdeci">CondExpr * getCond(u32_t id) const</div><div class="ttdoc">Get condition using condition id (z3 ast id) </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00272">Conditions.h:272</a></div></div>
119
- <div class="ttc" id="classSVF_1_1CondManager_html_af2cf8e42c15d6a0640f13c55050f616f"><div class="ttname"><a href="classSVF_1_1CondManager.html#af2cf8e42c15d6a0640f13c55050f616f">SVF::CondManager::BranchCondToCondExprMap</a></div><div class="ttdeci">Map&lt; BranchCond *, CondExpr * &gt; BranchCondToCondExprMap</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00211">Conditions.h:211</a></div></div>
120
- <div class="ttc" id="classSVF_1_1CondManager_html_a049541fec44cac3401a0dc68ff2f0ac1"><div class="ttname"><a href="classSVF_1_1CondManager.html#a049541fec44cac3401a0dc68ff2f0ac1">SVF::CondManager::setNegCondInst</a></div><div class="ttdeci">void setNegCondInst(const CondExpr *cond, const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00291">Conditions.h:291</a></div></div>
121
- <div class="ttc" id="classSVF_1_1CondManager_html_a0128830b629c00d91dc78d348300e7c6"><div class="ttname"><a href="classSVF_1_1CondManager.html#a0128830b629c00d91dc78d348300e7c6">SVF::CondManager::getCondMgr</a></div><div class="ttdeci">static CondManager * getCondMgr()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00195">Conditions.h:195</a></div></div>
112
+ <div class="ttc" id="classSVF_1_1CondManager_html_a692a05088457ba5e4e1b7873c8da411d"><div class="ttname"><a href="classSVF_1_1CondManager.html#a692a05088457ba5e4e1b7873c8da411d">SVF::CondManager::CondManager</a></div><div class="ttdeci">CondManager()</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00147">Conditions.h:147</a></div></div>
113
+ <div class="ttc" id="classSVF_1_1CondManager_html_a1e48008a3fe3a562512e253133aa557f"><div class="ttname"><a href="classSVF_1_1CondManager.html#a1e48008a3fe3a562512e253133aa557f">SVF::CondManager::condMgr</a></div><div class="ttdeci">static CondManager * condMgr</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00143">Conditions.h:143</a></div></div>
114
+ <div class="ttc" id="classSVF_1_1CondManager_html_a1fbf7dd446309e13671d838c91da26bf"><div class="ttname"><a href="classSVF_1_1CondManager.html#a1fbf7dd446309e13671d838c91da26bf">SVF::CondManager::setCondInst</a></div><div class="ttdeci">void setCondInst(const CondExpr *cond, const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00212">Conditions.h:212</a></div></div>
115
+ <div class="ttc" id="classSVF_1_1Z3Manager_html_abd4a010660942227d7db81533e80b2c3"><div class="ttname"><a href="classSVF_1_1Z3Manager.html#abd4a010660942227d7db81533e80b2c3">SVF::Z3Manager::negConds</a></div><div class="ttdeci">NodeBS negConds</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00254">Conditions.h:254</a></div></div>
116
+ <div class="ttc" id="classSVF_1_1Z3Manager_html_a5143c47868ea644735f34ca95400ee42"><div class="ttname"><a href="classSVF_1_1Z3Manager.html#a5143c47868ea644735f34ca95400ee42">SVF::Z3Manager::getCondNumber</a></div><div class="ttdeci">u32_t getCondNumber() override</div><div class="ttdoc">Return the number of condition expressions. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00262">Conditions.h:262</a></div></div>
117
+ <div class="ttc" id="classSVF_1_1Z3Manager_html_a72e5e03058e98c4f511ce2bb180f89cf"><div class="ttname"><a href="classSVF_1_1Z3Manager.html#a72e5e03058e98c4f511ce2bb180f89cf">SVF::Z3Manager::idToCondExprMap</a></div><div class="ttdeci">IDToCondExprMap idToCondExprMap</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00251">Conditions.h:251</a></div></div>
118
+ <div class="ttc" id="classSVF_1_1Z3Expr_html_a368c3b55b3ac7b71f810d0419e3c6c52"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#a368c3b55b3ac7b71f810d0419e3c6c52">SVF::Z3Expr::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">get id </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00085">Conditions.h:85</a></div></div>
119
+ <div class="ttc" id="classSVF_1_1Z3Manager_html_aa8ecb34cf54a5defb48747b1278b4764"><div class="ttname"><a href="classSVF_1_1Z3Manager.html#aa8ecb34cf54a5defb48747b1278b4764">SVF::Z3Manager::getCond</a></div><div class="ttdeci">CondExpr * getCond(u32_t i) const override</div><div class="ttdoc">Given an id, get its condition. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00270">Conditions.h:270</a></div></div>
120
+ <div class="ttc" id="classSVF_1_1Z3Expr_html_a2281d8fcaaf17f76df1ac0cfa5215909"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#a2281d8fcaaf17f76df1ac0cfa5215909">SVF::Z3Expr::classof</a></div><div class="ttdeci">static bool classof(const CondExpr *cond)</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00095">Conditions.h:95</a></div></div>
121
+ <div class="ttc" id="classSVF_1_1BDDExpr_html"><div class="ttname"><a href="classSVF_1_1BDDExpr.html">SVF::BDDExpr</a></div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00105">Conditions.h:105</a></div></div>
122
+ <div class="ttc" id="classSVF_1_1Z3Expr_html_a2abc206f11015c52db2eb189114b0dfc"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#a2abc206f11015c52db2eb189114b0dfc">SVF::Z3Expr::~Z3Expr</a></div><div class="ttdeci">virtual ~Z3Expr()</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00071">Conditions.h:71</a></div></div>
123
+ <div class="ttc" id="classSVF_1_1BDDManager_html_aae62fd27ddc847758ea67000580efdb8"><div class="ttname"><a href="classSVF_1_1BDDManager.html#aae62fd27ddc847758ea67000580efdb8">SVF::BDDManager::m_bdd_mgr</a></div><div class="ttdeci">DdManager * m_bdd_mgr</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00346">Conditions.h:346</a></div></div>
124
+ <div class="ttc" id="classSVF_1_1BDDExpr_html_a1ae5bb0cf2be182eaf38e1f2001f27e7"><div class="ttname"><a href="classSVF_1_1BDDExpr.html#a1ae5bb0cf2be182eaf38e1f2001f27e7">SVF::BDDExpr::classof</a></div><div class="ttdeci">static bool classof(const BDDExpr *)</div><div class="ttdoc">Methods for support type inquiry through isa, cast, and dyn_cast: </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00120">Conditions.h:120</a></div></div>
125
+ <div class="ttc" id="classSVF_1_1BDDManager_html_a4ce1ff325aab55d7bef7d28fe79f4cde"><div class="ttname"><a href="classSVF_1_1BDDManager.html#a4ce1ff325aab55d7bef7d28fe79f4cde">SVF::BDDManager::isEquivalentBranchCond</a></div><div class="ttdeci">bool isEquivalentBranchCond(const CondExpr *lhs, const CondExpr *rhs) override</div><div class="ttdoc">Whether lhs and rhs are equivalent branch conditions. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00392">Conditions.h:392</a></div></div>
126
+ <div class="ttc" id="classSVF_1_1CondManager_html_a7f7519973f1e0ab8054670a6154bd74f"><div class="ttname"><a href="classSVF_1_1CondManager.html#a7f7519973f1e0ab8054670a6154bd74f">SVF::CondManager::CondMgrKind</a></div><div class="ttdeci">CondMgrKind</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00138">Conditions.h:138</a></div></div>
127
+ <div class="ttc" id="classSVF_1_1BDDManager_html_a6b32e78874429c587de4f0f50dad95ee"><div class="ttname"><a href="classSVF_1_1BDDManager.html#a6b32e78874429c587de4f0f50dad95ee">SVF::BDDManager::getCond</a></div><div class="ttdeci">CondExpr * getCond(u32_t i) const override</div><div class="ttdoc">Given an index, get its condition. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00363">Conditions.h:363</a></div></div>
122
128
  <div class="ttc" id="cudd_8h_html_a2651c953d81570d3f4f794bcbef40afe"><div class="ttname"><a href="cudd_8h.html#a2651c953d81570d3f4f794bcbef40afe">Cudd_ReadOne</a></div><div class="ttdeci">DdNode * Cudd_ReadOne(DdManager *dd)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l01716">cuddInt.c:1716</a></div></div>
123
129
  <div class="ttc" id="cudd_8h_html_a9ba2c88b8f70df51791c26ffde800fc7"><div class="ttname"><a href="cudd_8h.html#a9ba2c88b8f70df51791c26ffde800fc7">Cudd_ReadNodeCount</a></div><div class="ttdeci">long Cudd_ReadNodeCount(DdManager *dd)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l01948">cuddInt.c:1948</a></div></div>
124
- <div class="ttc" id="classSVF_1_1BranchCondManager_html_a013eb66493beb2b1d004605c68894a95"><div class="ttname"><a href="classSVF_1_1BranchCondManager.html#a013eb66493beb2b1d004605c68894a95">SVF::BranchCondManager::getFalseCond</a></div><div class="ttdeci">BranchCond * getFalseCond() const</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00138">Conditions.h:138</a></div></div>
125
- <div class="ttc" id="classSVF_1_1BranchCondExpr_html_acbfed1c7771cdb49237cdd6d3c75d25c"><div class="ttname"><a href="classSVF_1_1BranchCondExpr.html#acbfed1c7771cdb49237cdd6d3c75d25c">SVF::BranchCondExpr::getBranchCond</a></div><div class="ttdeci">BranchCond * getBranchCond() const</div><div class="ttdoc">get branch condition </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00087">Conditions.h:87</a></div></div>
126
- <div class="ttc" id="classSVF_1_1CondExpr_html_ac83903c62554c6f91812d79d23ec4e23"><div class="ttname"><a href="classSVF_1_1CondExpr.html#ac83903c62554c6f91812d79d23ec4e23">SVF::CondExpr::getExpr</a></div><div class="ttdeci">const z3::expr &amp; getExpr() const</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00055">Conditions.h:55</a></div></div>
127
- <div class="ttc" id="classSVF_1_1BranchCondManager_html_a07dc09be78c287ac24adb20c54147a46"><div class="ttname"><a href="classSVF_1_1BranchCondManager.html#a07dc09be78c287ac24adb20c54147a46">SVF::BranchCondManager::getCondNumber</a></div><div class="ttdeci">u32_t getCondNumber()</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00147">Conditions.h:147</a></div></div>
128
- <div class="ttc" id="classSVF_1_1CondExpr_html_aef2356f5c1c3178a7b54f46b7c2144a6"><div class="ttname"><a href="classSVF_1_1CondExpr.html#aef2356f5c1c3178a7b54f46b7c2144a6">SVF::CondExpr::CondExprKind</a></div><div class="ttdeci">CondExprKind</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00045">Conditions.h:45</a></div></div>
129
- <div class="ttc" id="classSVF_1_1CondExpr_html_aef2356f5c1c3178a7b54f46b7c2144a6ab2a0481a51dd867e2d2f196556c24521"><div class="ttname"><a href="classSVF_1_1CondExpr.html#aef2356f5c1c3178a7b54f46b7c2144a6ab2a0481a51dd867e2d2f196556c24521">SVF::CondExpr::BranchK</a></div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00047">Conditions.h:47</a></div></div>
130
+ <div class="ttc" id="classSVF_1_1Z3Manager_html_aae29d2331b696987a2ca5c349bb8315b"><div class="ttname"><a href="classSVF_1_1Z3Manager.html#aae29d2331b696987a2ca5c349bb8315b">SVF::Z3Manager::IDToCondExprMap</a></div><div class="ttdeci">Map&lt; u32_t, Z3Expr * &gt; IDToCondExprMap</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00245">Conditions.h:245</a></div></div>
131
+ <div class="ttc" id="classSVF_1_1BDDManager_html_a33bb37b30e4c7364d6df73d209bd81d0"><div class="ttname"><a href="classSVF_1_1BDDManager.html#a33bb37b30e4c7364d6df73d209bd81d0">SVF::BDDManager::IndexToBDDCond</a></div><div class="ttdeci">Map&lt; u32_t, BDDCond * &gt; IndexToBDDCond</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00331">Conditions.h:331</a></div></div>
132
+ <div class="ttc" id="classSVF_1_1CondExpr_html_aef2356f5c1c3178a7b54f46b7c2144a6"><div class="ttname"><a href="classSVF_1_1CondExpr.html#aef2356f5c1c3178a7b54f46b7c2144a6">SVF::CondExpr::CondExprKind</a></div><div class="ttdeci">CondExprKind</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00044">Conditions.h:44</a></div></div>
130
133
  <div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="ContextDDA_8h_source.html#l00016">ContextDDA.h:16</a></div></div>
131
- <div class="ttc" id="classSVF_1_1CondManager_html_a4fac6a918f1f6d09fe1a4ceac7c19428"><div class="ttname"><a href="classSVF_1_1CondManager.html#a4fac6a918f1f6d09fe1a4ceac7c19428">SVF::CondManager::getCondInst</a></div><div class="ttdeci">const Instruction * getCondInst(const CondExpr *cond) const</div><div class="ttdoc">Get/Set llvm conditional expression. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00280">Conditions.h:280</a></div></div>
132
- <div class="ttc" id="classSVF_1_1CondExpr_html_aa730ac78b531e785b9c16b62a9cf0fa1"><div class="ttname"><a href="classSVF_1_1CondExpr.html#aa730ac78b531e785b9c16b62a9cf0fa1">SVF::CondExpr::e</a></div><div class="ttdeci">z3::expr e</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00075">Conditions.h:75</a></div></div>
134
+ <div class="ttc" id="classSVF_1_1CondManager_html_a4fac6a918f1f6d09fe1a4ceac7c19428"><div class="ttname"><a href="classSVF_1_1CondManager.html#a4fac6a918f1f6d09fe1a4ceac7c19428">SVF::CondManager::getCondInst</a></div><div class="ttdeci">const Instruction * getCondInst(const CondExpr *cond) const</div><div class="ttdoc">Get/Set llvm conditional expression. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00206">Conditions.h:206</a></div></div>
133
135
  <div class="ttc" id="cudd_8h_html_a40fd71665cde402bd5bc4f39015c09ae"><div class="ttname"><a href="cudd_8h.html#a40fd71665cde402bd5bc4f39015c09ae">Cudd_bddIthVar</a></div><div class="ttdeci">DdNode * Cudd_bddIthVar(DdManager *dd, int i)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l01685">cuddInt.c:1685</a></div></div>
136
+ <div class="ttc" id="classSVF_1_1Z3Manager_html_aca945ffd7a479fcf4de413a1ddcbf15a"><div class="ttname"><a href="classSVF_1_1Z3Manager.html#aca945ffd7a479fcf4de413a1ddcbf15a">SVF::Z3Manager::getMemUsage</a></div><div class="ttdeci">std::string getMemUsage() override</div><div class="ttdoc">Return memory usage for this condition manager. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00310">Conditions.h:310</a></div></div>
137
+ <div class="ttc" id="classSVF_1_1Z3Manager_html_aae5b5661f0a34771753648072d6ea20a"><div class="ttname"><a href="classSVF_1_1Z3Manager.html#aae5b5661f0a34771753648072d6ea20a">SVF::Z3Manager::Z3Cond</a></div><div class="ttdeci">Z3Expr::Z3Cond Z3Cond</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00244">Conditions.h:244</a></div></div>
134
138
  <div class="ttc" id="namespaceSVF_html_a740396763e377643790c8b803ab3e4ea"><div class="ttname"><a href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">SVF::NodeBS</a></div><div class="ttdeci">llvm::SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00088">SVFBasicTypes.h:88</a></div></div>
139
+ <div class="ttc" id="classSVF_1_1Z3Expr_html_a4c5d8b4850d005c46dc52b4a448a1235"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#a4c5d8b4850d005c46dc52b4a448a1235">SVF::Z3Expr::Z3Cond</a></div><div class="ttdeci">z3::expr Z3Cond</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00066">Conditions.h:66</a></div></div>
135
140
  <div class="ttc" id="cudd_8h_html_a03db7d4ba1119a3cd5843fa7bd3a1a30"><div class="ttname"><a href="cudd_8h.html#a03db7d4ba1119a3cd5843fa7bd3a1a30">Cudd_ReadMemoryInUse</a></div><div class="ttdeci">unsigned long Cudd_ReadMemoryInUse(DdManager *dd)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l01925">cuddInt.c:1925</a></div></div>
136
141
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if&lt;!is_simple_type&lt; Y &gt;::value, typename cast_retty&lt; X, const Y &gt;::ret_type &gt;::type dyn_cast(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
137
- <div class="ttc" id="classSVF_1_1CondManager_html_a7efaeff7229fcfdc6c05d53ee3e1d916"><div class="ttname"><a href="classSVF_1_1CondManager.html#a7efaeff7229fcfdc6c05d53ee3e1d916">SVF::CondManager::totalCondNum</a></div><div class="ttdeci">static u32_t totalCondNum</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00192">Conditions.h:192</a></div></div>
138
- <div class="ttc" id="classSVF_1_1CondManager_html_a39e9d42cb3661d1c686b5163c70eeade"><div class="ttname"><a href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade">SVF::CondManager::getFalseCond</a></div><div class="ttdeci">CondExpr * getFalseCond() const</div><div class="ttdoc">Return the unique false condition. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00231">Conditions.h:231</a></div></div>
139
- <div class="ttc" id="cudd_8h_html_a2889ace3fcf7d4e00915de52554fd475"><div class="ttname"><a href="cudd_8h.html#a2889ace3fcf7d4e00915de52554fd475">Cudd_Quit</a></div><div class="ttdeci">void Cudd_Quit(DdManager *unique)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l10641">cuddInt.c:10641</a></div></div>
140
- <div class="ttc" id="classSVF_1_1CondExpr_html_af925a6e646b64db7aacf301b37b89b05"><div class="ttname"><a href="classSVF_1_1CondExpr.html#af925a6e646b64db7aacf301b37b89b05">SVF::CondExpr::CondExpr</a></div><div class="ttdeci">CondExpr(const z3::expr &amp;_e, CondExprKind _k)</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00050">Conditions.h:50</a></div></div>
142
+ <div class="ttc" id="classSVF_1_1CondManager_html_a7efaeff7229fcfdc6c05d53ee3e1d916"><div class="ttname"><a href="classSVF_1_1CondManager.html#a7efaeff7229fcfdc6c05d53ee3e1d916">SVF::CondManager::totalCondNum</a></div><div class="ttdeci">static u32_t totalCondNum</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00151">Conditions.h:151</a></div></div>
143
+ <div class="ttc" id="classSVF_1_1Z3Expr_html_a85fabec3de5b24f46fb8dd9e0e0eb0ca"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#a85fabec3de5b24f46fb8dd9e0e0eb0ca">SVF::Z3Expr::classof</a></div><div class="ttdeci">static bool classof(const Z3Expr *)</div><div class="ttdoc">Methods for support type inquiry through isa, cast, and dyn_cast: </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00091">Conditions.h:91</a></div></div>
144
+ <div class="ttc" id="classSVF_1_1CondManager_html_a39e9d42cb3661d1c686b5163c70eeade"><div class="ttname"><a href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade">SVF::CondManager::getFalseCond</a></div><div class="ttdeci">CondExpr * getFalseCond() const</div><div class="ttdoc">Return the unique false condition. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00177">Conditions.h:177</a></div></div>
145
+ <div class="ttc" id="classSVF_1_1BDDManager_html_a4a1c1534e9e23ea326008abf1d318369"><div class="ttname"><a href="classSVF_1_1BDDManager.html#a4a1c1534e9e23ea326008abf1d318369">SVF::BDDManager::isNegCond</a></div><div class="ttdeci">bool isNegCond(const CondExpr *cond) const override</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00388">Conditions.h:388</a></div></div>
141
146
  <div class="ttc" id="namespaceSVF_html_a8bd74fdcb0e58d0249003df9c3fb8b31"><div class="ttname"><a href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">SVF::OutStream</a></div><div class="ttdeci">std::ostream OutStream</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00075">SVFBasicTypes.h:75</a></div></div>
142
- <div class="ttc" id="classSVF_1_1CondManager_html_aed854ecc55a568597f7d7f1f78fb92f4"><div class="ttname"><a href="classSVF_1_1CondManager.html#aed854ecc55a568597f7d7f1f78fb92f4">SVF::CondManager::trueCond</a></div><div class="ttdeci">static CondExpr * trueCond</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00304">Conditions.h:304</a></div></div>
143
- <div class="ttc" id="classSVF_1_1BranchCondManager_html_a0c6278a5b4419e16c8fb5d3f8f8162a2"><div class="ttname"><a href="classSVF_1_1BranchCondManager.html#a0c6278a5b4419e16c8fb5d3f8f8162a2">SVF::BranchCondManager::m_bdd_mgr</a></div><div class="ttdeci">DdManager * m_bdd_mgr</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00178">Conditions.h:178</a></div></div>
144
- <div class="ttc" id="classSVF_1_1BranchCondExpr_html"><div class="ttname"><a href="classSVF_1_1BranchCondExpr.html">SVF::BranchCondExpr</a></div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00079">Conditions.h:79</a></div></div>
145
- <div class="ttc" id="classSVF_1_1CondExpr_html_a2ae78bbef9ad2f3c61aafa23111a50ef"><div class="ttname"><a href="classSVF_1_1CondExpr.html#a2ae78bbef9ad2f3c61aafa23111a50ef">SVF::CondExpr::getCondKind</a></div><div class="ttdeci">CondExprKind getCondKind() const</div><div class="ttdoc">get Condition kind </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00070">Conditions.h:70</a></div></div>
146
- <div class="ttc" id="classSVF_1_1CondManager_html"><div class="ttname"><a href="classSVF_1_1CondManager.html">SVF::CondManager</a></div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00181">Conditions.h:181</a></div></div>
147
+ <div class="ttc" id="classSVF_1_1CondManager_html_aed854ecc55a568597f7d7f1f78fb92f4"><div class="ttname"><a href="classSVF_1_1CondManager.html#aed854ecc55a568597f7d7f1f78fb92f4">SVF::CondManager::trueCond</a></div><div class="ttdeci">static CondExpr * trueCond</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00228">Conditions.h:228</a></div></div>
148
+ <div class="ttc" id="classSVF_1_1Z3Manager_html_ac5968fcdba98bd405509b8abd1997cbc"><div class="ttname"><a href="classSVF_1_1Z3Manager.html#ac5968fcdba98bd405509b8abd1997cbc">SVF::Z3Manager::cxt</a></div><div class="ttdeci">z3::context cxt</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00252">Conditions.h:252</a></div></div>
149
+ <div class="ttc" id="classSVF_1_1BDDManager_html_a51e174fcf76d5adbf22717c0b95c0286"><div class="ttname"><a href="classSVF_1_1BDDManager.html#a51e174fcf76d5adbf22717c0b95c0286">SVF::BDDManager::BddOne</a></div><div class="ttdeci">BDDCond * BddOne() const</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00338">Conditions.h:338</a></div></div>
150
+ <div class="ttc" id="classSVF_1_1Z3Manager_html_a7ec31e7f5d856ac7de8416573aef396f"><div class="ttname"><a href="classSVF_1_1Z3Manager.html#a7ec31e7f5d856ac7de8416573aef396f">SVF::Z3Manager::setNegCondInst</a></div><div class="ttdeci">void setNegCondInst(const CondExpr *cond, const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00293">Conditions.h:293</a></div></div>
151
+ <div class="ttc" id="classSVF_1_1CondManager_html_a01565ecb4f167283396be0e446b9df0a"><div class="ttname"><a href="classSVF_1_1CondManager.html#a01565ecb4f167283396be0e446b9df0a">SVF::CondManager::CondToTermInstMap</a></div><div class="ttdeci">Map&lt; const CondExpr *, const Instruction * &gt; CondToTermInstMap</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00150">Conditions.h:150</a></div></div>
152
+ <div class="ttc" id="classSVF_1_1BDDManager_html_adf0847a4af7703a0139c5db326a7988f"><div class="ttname"><a href="classSVF_1_1BDDManager.html#adf0847a4af7703a0139c5db326a7988f">SVF::BDDManager::getMemUsage</a></div><div class="ttdeci">std::string getMemUsage() override</div><div class="ttdoc">Return memory usage for this condition manager. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00412">Conditions.h:412</a></div></div>
153
+ <div class="ttc" id="classSVF_1_1CondExpr_html_a2ae78bbef9ad2f3c61aafa23111a50ef"><div class="ttname"><a href="classSVF_1_1CondExpr.html#a2ae78bbef9ad2f3c61aafa23111a50ef">SVF::CondExpr::getCondKind</a></div><div class="ttdeci">CondExprKind getCondKind() const</div><div class="ttdoc">get Condition kind </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00056">Conditions.h:56</a></div></div>
154
+ <div class="ttc" id="classSVF_1_1CondManager_html"><div class="ttname"><a href="classSVF_1_1CondManager.html">SVF::CondManager</a></div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00135">Conditions.h:135</a></div></div>
147
155
  </div><!-- fragment --></div><!-- contents -->
148
156
  <!-- start footer part -->
149
157
  <hr class="footer"/><address class="footer"><small>