svf-tools 1.0.897 → 1.0.899

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 (639) hide show
  1. package/SVF-doxygen/html/AbstractExecution_8cpp.html +1 -1
  2. package/SVF-doxygen/html/AbstractExecution_8cpp_source.html +1638 -1659
  3. package/SVF-doxygen/html/AbstractExecution_8h_source.html +49 -49
  4. package/SVF-doxygen/html/AbstractPointsToDS_8h_source.html +1 -1
  5. package/SVF-doxygen/html/AccessPath_8cpp_source.html +1 -1
  6. package/SVF-doxygen/html/AccessPath_8h_source.html +2 -2
  7. package/SVF-doxygen/html/AddressValue_8h_source.html +1 -1
  8. package/SVF-doxygen/html/AndersenPWC_8h_source.html +4 -4
  9. package/SVF-doxygen/html/AndersenSCD_8cpp_source.html +3 -3
  10. package/SVF-doxygen/html/AndersenSFR_8cpp_source.html +3 -3
  11. package/SVF-doxygen/html/AndersenStat_8cpp_source.html +1 -1
  12. package/SVF-doxygen/html/AndersenWaveDiff_8cpp_source.html +1 -1
  13. package/SVF-doxygen/html/Andersen_8cpp_source.html +5 -5
  14. package/SVF-doxygen/html/Andersen_8h_source.html +3 -3
  15. package/SVF-doxygen/html/BoundedZ3Expr_8cpp_source.html +4 -4
  16. package/SVF-doxygen/html/BoundedZ3Expr_8h_source.html +400 -380
  17. package/SVF-doxygen/html/BufOverflowChecker_8cpp_source.html +29 -28
  18. package/SVF-doxygen/html/BufOverflowChecker_8h_source.html +1 -1
  19. package/SVF-doxygen/html/CDGBuilder_8cpp_source.html +1 -1
  20. package/SVF-doxygen/html/CDGBuilder_8h_source.html +1 -1
  21. package/SVF-doxygen/html/CDG_8h_source.html +2 -2
  22. package/SVF-doxygen/html/CFGNormalizer_8cpp_source.html +3 -3
  23. package/SVF-doxygen/html/CFGNormalizer_8h_source.html +3 -3
  24. package/SVF-doxygen/html/CFGrammar_8cpp_source.html +2 -2
  25. package/SVF-doxygen/html/CFGrammar_8h_source.html +3 -3
  26. package/SVF-doxygen/html/CFLAlias_8h_source.html +2 -2
  27. package/SVF-doxygen/html/CFLGraphBuilder_8cpp_source.html +1 -1
  28. package/SVF-doxygen/html/CFLGraphBuilder_8h_source.html +1 -1
  29. package/SVF-doxygen/html/CFLSVFGBuilder_8cpp_source.html +1 -1
  30. package/SVF-doxygen/html/CFLSVFGBuilder_8h_source.html +2 -2
  31. package/SVF-doxygen/html/CFLSolver_8h_source.html +1 -1
  32. package/SVF-doxygen/html/CHGBuilder_8cpp_source.html +1 -1
  33. package/SVF-doxygen/html/CHG_8h_source.html +2 -2
  34. package/SVF-doxygen/html/CSC_8cpp_source.html +2 -2
  35. package/SVF-doxygen/html/CSC_8h_source.html +3 -3
  36. package/SVF-doxygen/html/ConditionalPT_8h_source.html +3 -3
  37. package/SVF-doxygen/html/ConsExeState_8cpp_source.html +6 -6
  38. package/SVF-doxygen/html/ConsExeState_8h_source.html +6 -6
  39. package/SVF-doxygen/html/ConsGEdge_8h_source.html +2 -2
  40. package/SVF-doxygen/html/ConsG_8cpp_source.html +14 -14
  41. package/SVF-doxygen/html/ConsG_8h_source.html +4 -4
  42. package/SVF-doxygen/html/ContextDDA_8cpp_source.html +4 -4
  43. package/SVF-doxygen/html/ContextDDA_8h_source.html +2 -2
  44. package/SVF-doxygen/html/CoreBitVector_8h_source.html +1 -1
  45. package/SVF-doxygen/html/CppUtil_8cpp_source.html +1 -1
  46. package/SVF-doxygen/html/CppUtil_8h_source.html +1 -1
  47. package/SVF-doxygen/html/CxtStmt_8h_source.html +1 -1
  48. package/SVF-doxygen/html/DCHG_8cpp_source.html +3 -3
  49. package/SVF-doxygen/html/DCHG_8h_source.html +2 -2
  50. package/SVF-doxygen/html/DDAClient_8cpp_source.html +2 -2
  51. package/SVF-doxygen/html/DDAClient_8h_source.html +3 -3
  52. package/SVF-doxygen/html/DDAPass_8cpp_source.html +2 -2
  53. package/SVF-doxygen/html/DDAPass_8h_source.html +1 -1
  54. package/SVF-doxygen/html/DDAVFSolver_8h_source.html +2 -2
  55. package/SVF-doxygen/html/DPItem_8h_source.html +2 -2
  56. package/SVF-doxygen/html/ExeState_8cpp_source.html +1 -1
  57. package/SVF-doxygen/html/ExeState_8h_source.html +1 -1
  58. package/SVF-doxygen/html/FSMPTA_8cpp_source.html +1 -1
  59. package/SVF-doxygen/html/FSMPTA_8h_source.html +2 -2
  60. package/SVF-doxygen/html/FlowDDA_8cpp_source.html +4 -4
  61. package/SVF-doxygen/html/FlowDDA_8h_source.html +1 -1
  62. package/SVF-doxygen/html/FlowSensitiveStat_8cpp_source.html +2 -2
  63. package/SVF-doxygen/html/FlowSensitive_8cpp_source.html +6 -6
  64. package/SVF-doxygen/html/FlowSensitive_8h_source.html +2 -2
  65. package/SVF-doxygen/html/GeneralType_8h.html +8 -0
  66. package/SVF-doxygen/html/GeneralType_8h_source.html +110 -102
  67. package/SVF-doxygen/html/GenericGraph_8h_source.html +2 -2
  68. package/SVF-doxygen/html/GrammarBuilder_8h_source.html +1 -1
  69. package/SVF-doxygen/html/ICFGBuilder_8cpp_source.html +1 -1
  70. package/SVF-doxygen/html/ICFGBuilder_8h_source.html +1 -1
  71. package/SVF-doxygen/html/ICFGEdge_8h_source.html +3 -3
  72. package/SVF-doxygen/html/ICFGNode_8h_source.html +1 -1
  73. package/SVF-doxygen/html/ICFGSimplification_8cpp_source.html +2 -2
  74. package/SVF-doxygen/html/ICFGStat_8h_source.html +1 -1
  75. package/SVF-doxygen/html/ICFG_8cpp_source.html +3 -3
  76. package/SVF-doxygen/html/ICFG_8h_source.html +2 -2
  77. package/SVF-doxygen/html/IRGraph_8cpp_source.html +2 -2
  78. package/SVF-doxygen/html/IRGraph_8h_source.html +2 -2
  79. package/SVF-doxygen/html/IntervalExeState_8cpp_source.html +2 -2
  80. package/SVF-doxygen/html/IntervalExeState_8h_source.html +4 -4
  81. package/SVF-doxygen/html/IntervalValue_8h_source.html +863 -802
  82. package/SVF-doxygen/html/LLVMLoopAnalysis_8cpp_source.html +1 -1
  83. package/SVF-doxygen/html/LLVMModule_8cpp_source.html +335 -316
  84. package/SVF-doxygen/html/LLVMModule_8h_source.html +11 -11
  85. package/SVF-doxygen/html/LLVMUtil_8cpp_source.html +2 -2
  86. package/SVF-doxygen/html/LLVMUtil_8h_source.html +1 -1
  87. package/SVF-doxygen/html/LeakChecker_8h_source.html +1 -1
  88. package/SVF-doxygen/html/LockAnalysis_8cpp_source.html +2 -2
  89. package/SVF-doxygen/html/LockAnalysis_8h_source.html +3 -3
  90. package/SVF-doxygen/html/LockResultValidator_8cpp_source.html +1 -1
  91. package/SVF-doxygen/html/LockResultValidator_8h_source.html +2 -2
  92. package/SVF-doxygen/html/MHP_8cpp_source.html +3 -3
  93. package/SVF-doxygen/html/MHP_8h_source.html +3 -3
  94. package/SVF-doxygen/html/MSSAMuChi_8h_source.html +4 -4
  95. package/SVF-doxygen/html/MTAAnnotator_8cpp_source.html +1 -1
  96. package/SVF-doxygen/html/MTAAnnotator_8h_source.html +1 -1
  97. package/SVF-doxygen/html/MTAResultValidator_8cpp_source.html +5 -5
  98. package/SVF-doxygen/html/MTAStat_8cpp_source.html +1 -1
  99. package/SVF-doxygen/html/MTAStat_8h_source.html +1 -1
  100. package/SVF-doxygen/html/MTA_8cpp_source.html +1 -1
  101. package/SVF-doxygen/html/MTA_8h_source.html +1 -1
  102. package/SVF-doxygen/html/MemPartition_8h_source.html +2 -2
  103. package/SVF-doxygen/html/MemRegion_8cpp_source.html +4 -4
  104. package/SVF-doxygen/html/MemRegion_8h_source.html +5 -5
  105. package/SVF-doxygen/html/MemSSA_8cpp_source.html +4 -4
  106. package/SVF-doxygen/html/MemSSA_8h_source.html +5 -5
  107. package/SVF-doxygen/html/MutablePointsToDS_8h_source.html +1 -1
  108. package/SVF-doxygen/html/NodeIDAllocator_8cpp_source.html +2 -2
  109. package/SVF-doxygen/html/NodeIDAllocator_8h_source.html +2 -2
  110. package/SVF-doxygen/html/NumericLiteral_8h_source.html +465 -424
  111. package/SVF-doxygen/html/ObjTypeInference_8cpp_source.html +3 -3
  112. package/SVF-doxygen/html/ObjTypeInference_8h_source.html +2 -2
  113. package/SVF-doxygen/html/Options_8cpp_source.html +10 -1
  114. package/SVF-doxygen/html/Options_8h_source.html +8 -4
  115. package/SVF-doxygen/html/PAGBuilderFromFile_8cpp_source.html +195 -137
  116. package/SVF-doxygen/html/PAGBuilderFromFile_8h_source.html +3 -3
  117. package/SVF-doxygen/html/PCG_8cpp_source.html +1 -1
  118. package/SVF-doxygen/html/PCG_8h_source.html +1 -1
  119. package/SVF-doxygen/html/PTACallGraph_8cpp_source.html +1 -1
  120. package/SVF-doxygen/html/PTACallGraph_8h_source.html +4 -4
  121. package/SVF-doxygen/html/PTAStat_8cpp_source.html +1 -1
  122. package/SVF-doxygen/html/PersistentPointsToCache_8h_source.html +2 -2
  123. package/SVF-doxygen/html/PersistentPointsToDS_8h_source.html +2 -2
  124. package/SVF-doxygen/html/PointerAnalysisImpl_8cpp_source.html +2 -2
  125. package/SVF-doxygen/html/PointerAnalysisImpl_8h_source.html +3 -3
  126. package/SVF-doxygen/html/PointerAnalysis_8cpp_source.html +1 -1
  127. package/SVF-doxygen/html/PointerAnalysis_8h_source.html +5 -5
  128. package/SVF-doxygen/html/PointsTo_8cpp_source.html +3 -3
  129. package/SVF-doxygen/html/PointsTo_8h_source.html +3 -3
  130. package/SVF-doxygen/html/ProgSlice_8cpp_source.html +1 -1
  131. package/SVF-doxygen/html/ProgSlice_8h_source.html +2 -2
  132. package/SVF-doxygen/html/RelExeState_8cpp_source.html +5 -5
  133. package/SVF-doxygen/html/RelExeState_8h_source.html +6 -6
  134. package/SVF-doxygen/html/RelationSolver_8cpp.html +2 -0
  135. package/SVF-doxygen/html/RelationSolver_8cpp_source.html +386 -378
  136. package/SVF-doxygen/html/RelationSolver_8h_source.html +11 -11
  137. package/SVF-doxygen/html/SCC_8h_source.html +2 -2
  138. package/SVF-doxygen/html/SVFBugReport_8h_source.html +1 -1
  139. package/SVF-doxygen/html/SVFFileSystem_8cpp_source.html +1937 -1934
  140. package/SVF-doxygen/html/SVFFileSystem_8h.html +1 -1
  141. package/SVF-doxygen/html/SVFFileSystem_8h_source.html +59 -59
  142. package/SVF-doxygen/html/SVFGEdge_8h_source.html +2 -2
  143. package/SVF-doxygen/html/SVFGNode_8h_source.html +2 -2
  144. package/SVF-doxygen/html/SVFGOPT_8cpp_source.html +1 -1
  145. package/SVF-doxygen/html/SVFGOPT_8h_source.html +3 -3
  146. package/SVF-doxygen/html/SVFGReadWrite_8cpp_source.html +3 -3
  147. package/SVF-doxygen/html/SVFGStat_8cpp_source.html +1 -1
  148. package/SVF-doxygen/html/SVFGStat_8h_source.html +3 -3
  149. package/SVF-doxygen/html/SVFG_8cpp_source.html +2 -2
  150. package/SVF-doxygen/html/SVFG_8h_source.html +2 -2
  151. package/SVF-doxygen/html/SVFIR2ConsExeState_8cpp_source.html +60 -60
  152. package/SVF-doxygen/html/SVFIR2ConsExeState_8h_source.html +9 -9
  153. package/SVF-doxygen/html/SVFIR2ItvExeState_8cpp_source.html +1101 -886
  154. package/SVF-doxygen/html/SVFIR2ItvExeState_8h_source.html +173 -154
  155. package/SVF-doxygen/html/SVFIR2Relation_8cpp_source.html +35 -35
  156. package/SVF-doxygen/html/SVFIRBuilder_8cpp_source.html +17 -17
  157. package/SVF-doxygen/html/SVFIRBuilder_8h_source.html +172 -121
  158. package/SVF-doxygen/html/SVFIRExtAPI_8cpp_source.html +5 -5
  159. package/SVF-doxygen/html/SVFIR_8cpp_source.html +24 -22
  160. package/SVF-doxygen/html/SVFIR_8h_source.html +55 -53
  161. package/SVF-doxygen/html/SVFLoop_8h_source.html +1 -1
  162. package/SVF-doxygen/html/SVFStat_8cpp_source.html +1 -1
  163. package/SVF-doxygen/html/SVFStat_8h_source.html +1 -1
  164. package/SVF-doxygen/html/SVFStatements_8cpp_source.html +20 -20
  165. package/SVF-doxygen/html/SVFStatements_8h_source.html +979 -955
  166. package/SVF-doxygen/html/SVFType_8cpp_source.html +1 -1
  167. package/SVF-doxygen/html/SVFType_8h_source.html +4 -4
  168. package/SVF-doxygen/html/SVFUtil_8h_source.html +2 -2
  169. package/SVF-doxygen/html/SVFValue_8cpp_source.html +1 -1
  170. package/SVF-doxygen/html/SVFValue_8h_source.html +3 -3
  171. package/SVF-doxygen/html/SVFVariables_8h_source.html +1 -1
  172. package/SVF-doxygen/html/SaberCheckerAPI_8h_source.html +1 -1
  173. package/SVF-doxygen/html/SaberCondAllocator_8cpp_source.html +10 -10
  174. package/SVF-doxygen/html/SaberCondAllocator_8h_source.html +8 -8
  175. package/SVF-doxygen/html/SaberSVFGBuilder_8cpp_source.html +2 -2
  176. package/SVF-doxygen/html/SaberSVFGBuilder_8h_source.html +2 -2
  177. package/SVF-doxygen/html/SingleAbsValue_8h_source.html +6 -6
  178. package/SVF-doxygen/html/SparseBitVector_8h_source.html +3 -3
  179. package/SVF-doxygen/html/SrcSnkDDA_8cpp_source.html +1 -1
  180. package/SVF-doxygen/html/SrcSnkDDA_8h_source.html +2 -2
  181. package/SVF-doxygen/html/Steensgaard_8cpp_source.html +2 -2
  182. package/SVF-doxygen/html/Steensgaard_8h_source.html +4 -4
  183. package/SVF-doxygen/html/SymState_8h_source.html +2 -2
  184. package/SVF-doxygen/html/SymbolTableBuilder_8cpp_source.html +4 -4
  185. package/SVF-doxygen/html/SymbolTableBuilder_8h_source.html +1 -1
  186. package/SVF-doxygen/html/SymbolTableInfo_8cpp_source.html +3 -3
  187. package/SVF-doxygen/html/SymbolTableInfo_8h_source.html +4 -4
  188. package/SVF-doxygen/html/TCT_8cpp_source.html +3 -3
  189. package/SVF-doxygen/html/TCT_8h_source.html +4 -4
  190. package/SVF-doxygen/html/ThreadAPI_8cpp_source.html +1 -1
  191. package/SVF-doxygen/html/ThreadAPI_8h_source.html +1 -1
  192. package/SVF-doxygen/html/ThreadCallGraph_8cpp_source.html +1 -1
  193. package/SVF-doxygen/html/ThreadCallGraph_8h_source.html +3 -3
  194. package/SVF-doxygen/html/VFGEdge_8h_source.html +1 -1
  195. package/SVF-doxygen/html/VFGNode_8h_source.html +12 -12
  196. package/SVF-doxygen/html/VFG_8cpp_source.html +18 -18
  197. package/SVF-doxygen/html/VFG_8h_source.html +17 -17
  198. package/SVF-doxygen/html/VersionedFlowSensitiveStat_8cpp_source.html +3 -3
  199. package/SVF-doxygen/html/VersionedFlowSensitive_8cpp_source.html +4 -4
  200. package/SVF-doxygen/html/VersionedFlowSensitive_8h_source.html +4 -4
  201. package/SVF-doxygen/html/WPAFSSolver_8h_source.html +1 -1
  202. package/SVF-doxygen/html/WPASolver_8h_source.html +2 -2
  203. package/SVF-doxygen/html/WTO_8h_source.html +2 -2
  204. package/SVF-doxygen/html/WorkList_8h_source.html +1 -1
  205. package/SVF-doxygen/html/Z3Expr_8cpp_source.html +5 -5
  206. package/SVF-doxygen/html/Z3Expr_8h_source.html +303 -294
  207. package/SVF-doxygen/html/ae_8cpp_source.html +6 -6
  208. package/SVF-doxygen/html/classSVF_1_1AEStat.html +119 -119
  209. package/SVF-doxygen/html/classSVF_1_1AbstractExecution.html +1517 -1538
  210. package/SVF-doxygen/html/classSVF_1_1AccessPath.html +1 -1
  211. package/SVF-doxygen/html/classSVF_1_1Andersen.html +5 -5
  212. package/SVF-doxygen/html/classSVF_1_1AndersenBase.html +1 -1
  213. package/SVF-doxygen/html/classSVF_1_1AndersenSCD.html +3 -3
  214. package/SVF-doxygen/html/classSVF_1_1AndersenSFR.html +3 -3
  215. package/SVF-doxygen/html/classSVF_1_1AndersenStat.html +1 -1
  216. package/SVF-doxygen/html/classSVF_1_1AndersenWaveDiff.html +1 -1
  217. package/SVF-doxygen/html/classSVF_1_1BVDataPTAImpl.html +2 -2
  218. package/SVF-doxygen/html/classSVF_1_1BinaryOPStmt.html +68 -68
  219. package/SVF-doxygen/html/classSVF_1_1BoundedZ3Expr-members.html +77 -72
  220. package/SVF-doxygen/html/classSVF_1_1BoundedZ3Expr.html +450 -294
  221. package/SVF-doxygen/html/classSVF_1_1BranchStmt.html +51 -51
  222. package/SVF-doxygen/html/classSVF_1_1BranchVFGNode.html +4 -4
  223. package/SVF-doxygen/html/classSVF_1_1BufOverflowChecker.html +7 -7
  224. package/SVF-doxygen/html/classSVF_1_1CDGBuilder.html +1 -1
  225. package/SVF-doxygen/html/classSVF_1_1CFGNormalizer.html +3 -3
  226. package/SVF-doxygen/html/classSVF_1_1CFLSVFGBuilder.html +1 -1
  227. package/SVF-doxygen/html/classSVF_1_1CHGBuilder.html +1 -1
  228. package/SVF-doxygen/html/classSVF_1_1CSC.html +2 -2
  229. package/SVF-doxygen/html/classSVF_1_1CallPE.html +35 -35
  230. package/SVF-doxygen/html/classSVF_1_1CmpStmt.html +97 -97
  231. package/SVF-doxygen/html/classSVF_1_1CondPTAImpl.html +1 -1
  232. package/SVF-doxygen/html/classSVF_1_1ConsExeState.html +5 -5
  233. package/SVF-doxygen/html/classSVF_1_1ConstraintGraph.html +13 -13
  234. package/SVF-doxygen/html/classSVF_1_1ContextDDA.html +5 -5
  235. package/SVF-doxygen/html/classSVF_1_1CopyStmt-members.html +48 -33
  236. package/SVF-doxygen/html/classSVF_1_1CopyStmt.html +206 -65
  237. package/SVF-doxygen/html/classSVF_1_1DCHGraph.html +3 -3
  238. package/SVF-doxygen/html/classSVF_1_1DDAPass.html +2 -2
  239. package/SVF-doxygen/html/classSVF_1_1DDAVFSolver.html +1 -1
  240. package/SVF-doxygen/html/classSVF_1_1ExeState.html +1 -1
  241. package/SVF-doxygen/html/classSVF_1_1FlowDDA.html +3 -3
  242. package/SVF-doxygen/html/classSVF_1_1FlowSensitive.html +5 -5
  243. package/SVF-doxygen/html/classSVF_1_1FlowSensitiveStat.html +2 -2
  244. package/SVF-doxygen/html/classSVF_1_1ForkJoinAnalysis.html +3 -3
  245. package/SVF-doxygen/html/classSVF_1_1FunptrDDAClient.html +1 -1
  246. package/SVF-doxygen/html/classSVF_1_1GenericGraphReader.html +1 -1
  247. package/SVF-doxygen/html/classSVF_1_1GepStmt.html +56 -56
  248. package/SVF-doxygen/html/classSVF_1_1GrammarBase.html +1 -1
  249. package/SVF-doxygen/html/classSVF_1_1ICFG.html +3 -3
  250. package/SVF-doxygen/html/classSVF_1_1ICFGBuilder.html +1 -1
  251. package/SVF-doxygen/html/classSVF_1_1ICFGWriter.html +11 -11
  252. package/SVF-doxygen/html/classSVF_1_1IntervalESBase.html +2 -2
  253. package/SVF-doxygen/html/classSVF_1_1IntervalValue-members.html +40 -35
  254. package/SVF-doxygen/html/classSVF_1_1IntervalValue.html +512 -307
  255. package/SVF-doxygen/html/classSVF_1_1LLVMLoopAnalysis.html +1 -1
  256. package/SVF-doxygen/html/classSVF_1_1LLVMModuleSet.html +331 -312
  257. package/SVF-doxygen/html/classSVF_1_1LoadStmt.html +19 -19
  258. package/SVF-doxygen/html/classSVF_1_1LockAnalysis.html +2 -2
  259. package/SVF-doxygen/html/classSVF_1_1LockResultValidator.html +1 -1
  260. package/SVF-doxygen/html/classSVF_1_1MHP.html +2 -2
  261. package/SVF-doxygen/html/classSVF_1_1MRGenerator.html +3 -3
  262. package/SVF-doxygen/html/classSVF_1_1MTAAnnotator.html +1 -1
  263. package/SVF-doxygen/html/classSVF_1_1MTAResultValidator.html +4 -4
  264. package/SVF-doxygen/html/classSVF_1_1MTASVFGBuilder.html +1 -1
  265. package/SVF-doxygen/html/classSVF_1_1MTAStat.html +1 -1
  266. package/SVF-doxygen/html/classSVF_1_1MemSSA.html +4 -4
  267. package/SVF-doxygen/html/classSVF_1_1MultiOpndStmt.html +48 -48
  268. package/SVF-doxygen/html/classSVF_1_1MutableDFPTData.html +1 -1
  269. package/SVF-doxygen/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +1 -1
  270. package/SVF-doxygen/html/classSVF_1_1NumericLiteral-members.html +50 -43
  271. package/SVF-doxygen/html/classSVF_1_1NumericLiteral.html +574 -343
  272. package/SVF-doxygen/html/classSVF_1_1ObjTypeInference.html +3 -3
  273. package/SVF-doxygen/html/classSVF_1_1Options-members.html +129 -128
  274. package/SVF-doxygen/html/classSVF_1_1Options.html +26 -0
  275. package/SVF-doxygen/html/classSVF_1_1PAGBuilderFromFile.html +204 -135
  276. package/SVF-doxygen/html/classSVF_1_1PCG.html +1 -1
  277. package/SVF-doxygen/html/classSVF_1_1POCRSolver.html +1 -1
  278. package/SVF-doxygen/html/classSVF_1_1PTACallGraph.html +1 -1
  279. package/SVF-doxygen/html/classSVF_1_1PTAStat.html +1 -1
  280. package/SVF-doxygen/html/classSVF_1_1PersistentDFPTData.html +1 -1
  281. package/SVF-doxygen/html/classSVF_1_1PersistentDiffPTData.html +1 -1
  282. package/SVF-doxygen/html/classSVF_1_1PersistentPTData.html +1 -1
  283. package/SVF-doxygen/html/classSVF_1_1PersistentPointsToCache.html +1 -1
  284. package/SVF-doxygen/html/classSVF_1_1PhiStmt.html +46 -46
  285. package/SVF-doxygen/html/classSVF_1_1PointerAnalysis.html +1 -1
  286. package/SVF-doxygen/html/classSVF_1_1PointsTo.html +1 -1
  287. package/SVF-doxygen/html/classSVF_1_1ProgSlice.html +1 -1
  288. package/SVF-doxygen/html/classSVF_1_1RaceResultValidator.html +1 -1
  289. package/SVF-doxygen/html/classSVF_1_1ReaderIDToObjMap.html +2 -2
  290. package/SVF-doxygen/html/classSVF_1_1ReaderPtrPool.html +2 -2
  291. package/SVF-doxygen/html/classSVF_1_1RelExeState.html +6 -6
  292. package/SVF-doxygen/html/classSVF_1_1RelationSolver-members.html +1 -1
  293. package/SVF-doxygen/html/classSVF_1_1RelationSolver.html +362 -358
  294. package/SVF-doxygen/html/classSVF_1_1RetPE.html +35 -35
  295. package/SVF-doxygen/html/classSVF_1_1SVFG.html +3 -3
  296. package/SVF-doxygen/html/classSVF_1_1SVFGOPT.html +1 -1
  297. package/SVF-doxygen/html/classSVF_1_1SVFGStat.html +1 -1
  298. package/SVF-doxygen/html/classSVF_1_1SVFIR-members.html +1 -1
  299. package/SVF-doxygen/html/classSVF_1_1SVFIR.html +32 -25
  300. package/SVF-doxygen/html/classSVF_1_1SVFIR2ConsExeState.html +51 -51
  301. package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState-members.html +49 -40
  302. package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState.html +1346 -909
  303. package/SVF-doxygen/html/classSVF_1_1SVFIRBuilder-members.html +62 -61
  304. package/SVF-doxygen/html/classSVF_1_1SVFIRBuilder.html +211 -131
  305. package/SVF-doxygen/html/classSVF_1_1SVFIRReader.html +1122 -1121
  306. package/SVF-doxygen/html/classSVF_1_1SVFIRWriter.html +429 -427
  307. package/SVF-doxygen/html/classSVF_1_1SVFLoopAndDomInfo.html +1 -1
  308. package/SVF-doxygen/html/classSVF_1_1SVFModuleReader.html +1 -1
  309. package/SVF-doxygen/html/classSVF_1_1SVFModuleWriter.html +23 -23
  310. package/SVF-doxygen/html/classSVF_1_1SVFStat.html +1 -1
  311. package/SVF-doxygen/html/classSVF_1_1SaberCondAllocator.html +14 -14
  312. package/SVF-doxygen/html/classSVF_1_1SaberSVFGBuilder.html +2 -2
  313. package/SVF-doxygen/html/classSVF_1_1SelectStmt.html +38 -38
  314. package/SVF-doxygen/html/classSVF_1_1SingleAbsValue-members.html +96 -91
  315. package/SVF-doxygen/html/classSVF_1_1SingleAbsValue.html +19 -5
  316. package/SVF-doxygen/html/classSVF_1_1SrcSnkDDA.html +1 -1
  317. package/SVF-doxygen/html/classSVF_1_1StInfo.html +1 -1
  318. package/SVF-doxygen/html/classSVF_1_1Steensgaard.html +2 -2
  319. package/SVF-doxygen/html/classSVF_1_1StoreStmt.html +17 -17
  320. package/SVF-doxygen/html/classSVF_1_1SymbolTableBuilder.html +4 -4
  321. package/SVF-doxygen/html/classSVF_1_1SymbolTableInfo.html +3 -3
  322. package/SVF-doxygen/html/classSVF_1_1SymbolTableInfoReader.html +1 -1
  323. package/SVF-doxygen/html/classSVF_1_1TCT.html +4 -4
  324. package/SVF-doxygen/html/classSVF_1_1TDForkPE.html +22 -22
  325. package/SVF-doxygen/html/classSVF_1_1TDJoinPE.html +21 -21
  326. package/SVF-doxygen/html/classSVF_1_1ThreadAPI.html +1 -1
  327. package/SVF-doxygen/html/classSVF_1_1ThreadCallGraph.html +1 -1
  328. package/SVF-doxygen/html/classSVF_1_1UnaryOPStmt.html +44 -44
  329. package/SVF-doxygen/html/classSVF_1_1VFG.html +17 -17
  330. package/SVF-doxygen/html/classSVF_1_1VersionedFlowSensitive.html +4 -4
  331. package/SVF-doxygen/html/classSVF_1_1VersionedFlowSensitiveStat.html +3 -3
  332. package/SVF-doxygen/html/classSVF_1_1WPAFSSolver.html +2 -2
  333. package/SVF-doxygen/html/classSVF_1_1WPAMinimumSolver.html +2 -2
  334. package/SVF-doxygen/html/classSVF_1_1WPASCCSolver.html +2 -2
  335. package/SVF-doxygen/html/classSVF_1_1WPASolver.html +1 -1
  336. package/SVF-doxygen/html/classSVF_1_1Z3Expr-members.html +2 -2
  337. package/SVF-doxygen/html/classSVF_1_1Z3Expr.html +227 -221
  338. package/SVF-doxygen/html/classSymblicAbstractionTest.html +6 -6
  339. package/SVF-doxygen/html/fastcluster__dm_8cpp_8inc_source.html +1 -1
  340. package/SVF-doxygen/html/functions_a.html +11 -8
  341. package/SVF-doxygen/html/functions_b.html +8 -5
  342. package/SVF-doxygen/html/functions_c.html +23 -14
  343. package/SVF-doxygen/html/functions_e.html +1 -1
  344. package/SVF-doxygen/html/functions_enum.html +3 -0
  345. package/SVF-doxygen/html/functions_eval_b.html +3 -0
  346. package/SVF-doxygen/html/functions_eval_c.html +3 -0
  347. package/SVF-doxygen/html/functions_eval_f.html +9 -0
  348. package/SVF-doxygen/html/functions_eval_i.html +3 -0
  349. package/SVF-doxygen/html/functions_eval_p.html +3 -0
  350. package/SVF-doxygen/html/functions_eval_s.html +6 -0
  351. package/SVF-doxygen/html/functions_eval_t.html +3 -0
  352. package/SVF-doxygen/html/functions_eval_u.html +3 -0
  353. package/SVF-doxygen/html/functions_eval_z.html +79 -0
  354. package/SVF-doxygen/html/functions_f.html +21 -12
  355. package/SVF-doxygen/html/functions_func.html +2 -2
  356. package/SVF-doxygen/html/functions_func_b.html +3 -3
  357. package/SVF-doxygen/html/functions_func_g.html +47 -12
  358. package/SVF-doxygen/html/functions_func_i.html +19 -9
  359. package/SVF-doxygen/html/functions_func_n.html +1 -1
  360. package/SVF-doxygen/html/functions_func_p.html +1 -1
  361. package/SVF-doxygen/html/functions_func_z.html +1 -1
  362. package/SVF-doxygen/html/functions_g.html +54 -19
  363. package/SVF-doxygen/html/functions_i.html +18 -5
  364. package/SVF-doxygen/html/functions_l.html +3 -3
  365. package/SVF-doxygen/html/functions_o.html +15 -15
  366. package/SVF-doxygen/html/functions_p.html +28 -29
  367. package/SVF-doxygen/html/functions_r.html +1 -1
  368. package/SVF-doxygen/html/functions_s.html +24 -16
  369. package/SVF-doxygen/html/functions_t.html +7 -4
  370. package/SVF-doxygen/html/functions_u.html +6 -3
  371. package/SVF-doxygen/html/functions_v.html +4 -6
  372. package/SVF-doxygen/html/functions_vars_a.html +3 -0
  373. package/SVF-doxygen/html/functions_vars_c.html +3 -0
  374. package/SVF-doxygen/html/functions_w.html +13 -7
  375. package/SVF-doxygen/html/functions_z.html +4 -1
  376. package/SVF-doxygen/html/menudata.js +2 -1
  377. package/SVF-doxygen/html/namespaceSVF.html +689 -617
  378. package/SVF-doxygen/html/namespaceSVF_1_1LLVMUtil.html +1 -1
  379. package/SVF-doxygen/html/namespaceSVF_1_1SVFUtil.html +1 -1
  380. package/SVF-doxygen/html/namespaceSVF_1_1cppUtil.html +1 -1
  381. package/SVF-doxygen/html/namespacemembers_s.html +6 -0
  382. package/SVF-doxygen/html/namespacemembers_type_s.html +6 -0
  383. package/SVF-doxygen/html/namespacemembers_type_u.html +6 -0
  384. package/SVF-doxygen/html/namespacemembers_u.html +6 -0
  385. package/SVF-doxygen/html/search/all_1.js +135 -134
  386. package/SVF-doxygen/html/search/all_10.js +326 -325
  387. package/SVF-doxygen/html/search/all_11.js +226 -226
  388. package/SVF-doxygen/html/search/all_12.js +574 -570
  389. package/SVF-doxygen/html/search/all_13.js +208 -207
  390. package/SVF-doxygen/html/search/all_14.js +73 -70
  391. package/SVF-doxygen/html/search/all_15.js +176 -176
  392. package/SVF-doxygen/html/search/all_16.js +77 -77
  393. package/SVF-doxygen/html/search/all_17.js +1 -1
  394. package/SVF-doxygen/html/search/all_18.js +1 -1
  395. package/SVF-doxygen/html/search/all_19.js +27 -26
  396. package/SVF-doxygen/html/search/all_1a.js +179 -179
  397. package/SVF-doxygen/html/search/all_2.js +182 -181
  398. package/SVF-doxygen/html/search/all_3.js +642 -640
  399. package/SVF-doxygen/html/search/all_4.js +236 -236
  400. package/SVF-doxygen/html/search/all_5.js +126 -126
  401. package/SVF-doxygen/html/search/all_6.js +235 -232
  402. package/SVF-doxygen/html/search/all_7.js +1056 -1047
  403. package/SVF-doxygen/html/search/all_8.js +215 -215
  404. package/SVF-doxygen/html/search/all_9.js +632 -629
  405. package/SVF-doxygen/html/search/all_a.js +46 -46
  406. package/SVF-doxygen/html/search/all_b.js +26 -26
  407. package/SVF-doxygen/html/search/all_c.js +115 -115
  408. package/SVF-doxygen/html/search/all_d.js +204 -204
  409. package/SVF-doxygen/html/search/all_e.js +209 -209
  410. package/SVF-doxygen/html/search/all_f.js +122 -122
  411. package/SVF-doxygen/html/search/classes_0.js +28 -28
  412. package/SVF-doxygen/html/search/classes_1.js +11 -11
  413. package/SVF-doxygen/html/search/classes_10.js +74 -74
  414. package/SVF-doxygen/html/search/classes_11.js +14 -14
  415. package/SVF-doxygen/html/search/classes_12.js +2 -2
  416. package/SVF-doxygen/html/search/classes_13.js +10 -10
  417. package/SVF-doxygen/html/search/classes_14.js +19 -19
  418. package/SVF-doxygen/html/search/classes_15.js +1 -1
  419. package/SVF-doxygen/html/search/classes_2.js +73 -73
  420. package/SVF-doxygen/html/search/classes_3.js +35 -35
  421. package/SVF-doxygen/html/search/classes_4.js +8 -8
  422. package/SVF-doxygen/html/search/classes_5.js +28 -28
  423. package/SVF-doxygen/html/search/classes_6.js +98 -98
  424. package/SVF-doxygen/html/search/classes_7.js +38 -38
  425. package/SVF-doxygen/html/search/classes_8.js +59 -59
  426. package/SVF-doxygen/html/search/classes_9.js +1 -1
  427. package/SVF-doxygen/html/search/classes_a.js +12 -12
  428. package/SVF-doxygen/html/search/classes_b.js +29 -29
  429. package/SVF-doxygen/html/search/classes_c.js +6 -6
  430. package/SVF-doxygen/html/search/classes_d.js +19 -19
  431. package/SVF-doxygen/html/search/classes_e.js +36 -36
  432. package/SVF-doxygen/html/search/classes_f.js +25 -25
  433. package/SVF-doxygen/html/search/defines_0.js +3 -3
  434. package/SVF-doxygen/html/search/defines_1.js +3 -3
  435. package/SVF-doxygen/html/search/defines_10.js +2 -2
  436. package/SVF-doxygen/html/search/defines_2.js +30 -30
  437. package/SVF-doxygen/html/search/defines_3.js +20 -20
  438. package/SVF-doxygen/html/search/defines_4.js +3 -3
  439. package/SVF-doxygen/html/search/defines_5.js +4 -4
  440. package/SVF-doxygen/html/search/defines_6.js +2 -2
  441. package/SVF-doxygen/html/search/defines_7.js +5 -5
  442. package/SVF-doxygen/html/search/defines_8.js +11 -11
  443. package/SVF-doxygen/html/search/defines_9.js +9 -9
  444. package/SVF-doxygen/html/search/defines_a.js +2 -2
  445. package/SVF-doxygen/html/search/defines_b.js +1 -1
  446. package/SVF-doxygen/html/search/defines_c.js +4 -4
  447. package/SVF-doxygen/html/search/defines_d.js +2 -2
  448. package/SVF-doxygen/html/search/defines_e.js +8 -8
  449. package/SVF-doxygen/html/search/defines_f.js +4 -4
  450. package/SVF-doxygen/html/search/enums_0.js +4 -4
  451. package/SVF-doxygen/html/search/enums_1.js +2 -2
  452. package/SVF-doxygen/html/search/enums_10.js +1 -1
  453. package/SVF-doxygen/html/search/enums_11.js +1 -1
  454. package/SVF-doxygen/html/search/enums_2.js +9 -8
  455. package/SVF-doxygen/html/search/enums_3.js +1 -1
  456. package/SVF-doxygen/html/search/enums_4.js +4 -4
  457. package/SVF-doxygen/html/search/enums_5.js +1 -1
  458. package/SVF-doxygen/html/search/enums_6.js +2 -2
  459. package/SVF-doxygen/html/search/enums_7.js +2 -2
  460. package/SVF-doxygen/html/search/enums_8.js +4 -4
  461. package/SVF-doxygen/html/search/enums_9.js +1 -1
  462. package/SVF-doxygen/html/search/enums_a.js +1 -1
  463. package/SVF-doxygen/html/search/enums_b.js +7 -7
  464. package/SVF-doxygen/html/search/enums_c.js +1 -1
  465. package/SVF-doxygen/html/search/enums_d.js +4 -4
  466. package/SVF-doxygen/html/search/enums_e.js +2 -2
  467. package/SVF-doxygen/html/search/enums_f.js +4 -4
  468. package/SVF-doxygen/html/search/enumvalues_0.js +15 -15
  469. package/SVF-doxygen/html/search/enumvalues_1.js +16 -15
  470. package/SVF-doxygen/html/search/enumvalues_10.js +36 -35
  471. package/SVF-doxygen/html/search/enumvalues_11.js +5 -4
  472. package/SVF-doxygen/html/search/enumvalues_12.js +10 -10
  473. package/SVF-doxygen/html/search/enumvalues_13.js +1 -1
  474. package/SVF-doxygen/html/search/enumvalues_14.js +1 -1
  475. package/SVF-doxygen/html/search/enumvalues_15.js +4 -3
  476. package/SVF-doxygen/html/search/enumvalues_2.js +37 -36
  477. package/SVF-doxygen/html/search/enumvalues_3.js +13 -13
  478. package/SVF-doxygen/html/search/enumvalues_4.js +2 -2
  479. package/SVF-doxygen/html/search/enumvalues_5.js +50 -47
  480. package/SVF-doxygen/html/search/enumvalues_6.js +6 -6
  481. package/SVF-doxygen/html/search/enumvalues_7.js +8 -8
  482. package/SVF-doxygen/html/search/enumvalues_8.js +24 -23
  483. package/SVF-doxygen/html/search/enumvalues_9.js +6 -6
  484. package/SVF-doxygen/html/search/enumvalues_a.js +17 -17
  485. package/SVF-doxygen/html/search/enumvalues_b.js +11 -11
  486. package/SVF-doxygen/html/search/enumvalues_c.js +5 -5
  487. package/SVF-doxygen/html/search/enumvalues_d.js +19 -18
  488. package/SVF-doxygen/html/search/enumvalues_e.js +9 -9
  489. package/SVF-doxygen/html/search/enumvalues_f.js +49 -47
  490. package/SVF-doxygen/html/search/files_0.js +16 -16
  491. package/SVF-doxygen/html/search/files_1.js +9 -9
  492. package/SVF-doxygen/html/search/files_10.js +8 -8
  493. package/SVF-doxygen/html/search/files_11.js +8 -8
  494. package/SVF-doxygen/html/search/files_12.js +2 -2
  495. package/SVF-doxygen/html/search/files_2.js +53 -53
  496. package/SVF-doxygen/html/search/files_3.js +14 -14
  497. package/SVF-doxygen/html/search/files_4.js +5 -5
  498. package/SVF-doxygen/html/search/files_5.js +13 -13
  499. package/SVF-doxygen/html/search/files_6.js +10 -10
  500. package/SVF-doxygen/html/search/files_7.js +17 -17
  501. package/SVF-doxygen/html/search/files_8.js +13 -13
  502. package/SVF-doxygen/html/search/files_9.js +18 -18
  503. package/SVF-doxygen/html/search/files_a.js +3 -3
  504. package/SVF-doxygen/html/search/files_b.js +4 -4
  505. package/SVF-doxygen/html/search/files_c.js +20 -20
  506. package/SVF-doxygen/html/search/files_d.js +4 -4
  507. package/SVF-doxygen/html/search/files_e.js +62 -62
  508. package/SVF-doxygen/html/search/files_f.js +8 -8
  509. package/SVF-doxygen/html/search/functions_0.js +13 -13
  510. package/SVF-doxygen/html/search/functions_1.js +368 -368
  511. package/SVF-doxygen/html/search/functions_10.js +140 -140
  512. package/SVF-doxygen/html/search/functions_11.js +140 -140
  513. package/SVF-doxygen/html/search/functions_12.js +299 -299
  514. package/SVF-doxygen/html/search/functions_13.js +73 -73
  515. package/SVF-doxygen/html/search/functions_14.js +41 -41
  516. package/SVF-doxygen/html/search/functions_15.js +72 -72
  517. package/SVF-doxygen/html/search/functions_16.js +38 -38
  518. package/SVF-doxygen/html/search/functions_17.js +3 -3
  519. package/SVF-doxygen/html/search/functions_18.js +179 -179
  520. package/SVF-doxygen/html/search/functions_2.js +94 -94
  521. package/SVF-doxygen/html/search/functions_3.js +261 -261
  522. package/SVF-doxygen/html/search/functions_4.js +85 -85
  523. package/SVF-doxygen/html/search/functions_5.js +57 -57
  524. package/SVF-doxygen/html/search/functions_6.js +65 -65
  525. package/SVF-doxygen/html/search/functions_7.js +872 -863
  526. package/SVF-doxygen/html/search/functions_8.js +162 -162
  527. package/SVF-doxygen/html/search/functions_9.js +440 -438
  528. package/SVF-doxygen/html/search/functions_a.js +30 -30
  529. package/SVF-doxygen/html/search/functions_b.js +2 -2
  530. package/SVF-doxygen/html/search/functions_c.js +25 -25
  531. package/SVF-doxygen/html/search/functions_d.js +82 -82
  532. package/SVF-doxygen/html/search/functions_e.js +36 -36
  533. package/SVF-doxygen/html/search/functions_f.js +58 -58
  534. package/SVF-doxygen/html/search/namespaces_0.js +1 -1
  535. package/SVF-doxygen/html/search/namespaces_1.js +7 -7
  536. package/SVF-doxygen/html/search/related_0.js +4 -4
  537. package/SVF-doxygen/html/search/related_1.js +2 -2
  538. package/SVF-doxygen/html/search/related_2.js +2 -2
  539. package/SVF-doxygen/html/search/related_3.js +2 -2
  540. package/SVF-doxygen/html/search/related_4.js +2 -2
  541. package/SVF-doxygen/html/search/related_5.js +1 -1
  542. package/SVF-doxygen/html/search/related_6.js +2 -2
  543. package/SVF-doxygen/html/search/related_7.js +5 -5
  544. package/SVF-doxygen/html/search/related_8.js +2 -2
  545. package/SVF-doxygen/html/search/related_9.js +4 -4
  546. package/SVF-doxygen/html/search/related_a.js +19 -19
  547. package/SVF-doxygen/html/search/related_b.js +4 -4
  548. package/SVF-doxygen/html/search/related_c.js +2 -2
  549. package/SVF-doxygen/html/search/related_d.js +12 -12
  550. package/SVF-doxygen/html/search/related_e.js +2 -2
  551. package/SVF-doxygen/html/search/related_f.js +2 -2
  552. package/SVF-doxygen/html/search/typedefs_0.js +19 -19
  553. package/SVF-doxygen/html/search/typedefs_1.js +27 -27
  554. package/SVF-doxygen/html/search/typedefs_10.js +65 -63
  555. package/SVF-doxygen/html/search/typedefs_11.js +13 -13
  556. package/SVF-doxygen/html/search/typedefs_12.js +13 -11
  557. package/SVF-doxygen/html/search/typedefs_13.js +40 -40
  558. package/SVF-doxygen/html/search/typedefs_14.js +11 -11
  559. package/SVF-doxygen/html/search/typedefs_2.js +125 -125
  560. package/SVF-doxygen/html/search/typedefs_3.js +39 -39
  561. package/SVF-doxygen/html/search/typedefs_4.js +17 -17
  562. package/SVF-doxygen/html/search/typedefs_5.js +42 -42
  563. package/SVF-doxygen/html/search/typedefs_6.js +54 -54
  564. package/SVF-doxygen/html/search/typedefs_7.js +47 -47
  565. package/SVF-doxygen/html/search/typedefs_8.js +1 -1
  566. package/SVF-doxygen/html/search/typedefs_9.js +6 -6
  567. package/SVF-doxygen/html/search/typedefs_a.js +29 -29
  568. package/SVF-doxygen/html/search/typedefs_b.js +29 -29
  569. package/SVF-doxygen/html/search/typedefs_c.js +41 -41
  570. package/SVF-doxygen/html/search/typedefs_d.js +15 -15
  571. package/SVF-doxygen/html/search/typedefs_e.js +52 -52
  572. package/SVF-doxygen/html/search/typedefs_f.js +14 -14
  573. package/SVF-doxygen/html/search/variables_0.js +177 -177
  574. package/SVF-doxygen/html/search/variables_1.js +77 -76
  575. package/SVF-doxygen/html/search/variables_10.js +98 -98
  576. package/SVF-doxygen/html/search/variables_11.js +46 -46
  577. package/SVF-doxygen/html/search/variables_12.js +93 -93
  578. package/SVF-doxygen/html/search/variables_13.js +76 -76
  579. package/SVF-doxygen/html/search/variables_14.js +14 -14
  580. package/SVF-doxygen/html/search/variables_15.js +49 -49
  581. package/SVF-doxygen/html/search/variables_16.js +11 -11
  582. package/SVF-doxygen/html/search/variables_17.js +1 -1
  583. package/SVF-doxygen/html/search/variables_18.js +17 -17
  584. package/SVF-doxygen/html/search/variables_2.js +40 -40
  585. package/SVF-doxygen/html/search/variables_3.js +143 -142
  586. package/SVF-doxygen/html/search/variables_4.js +51 -51
  587. package/SVF-doxygen/html/search/variables_5.js +39 -39
  588. package/SVF-doxygen/html/search/variables_6.js +66 -66
  589. package/SVF-doxygen/html/search/variables_7.js +34 -34
  590. package/SVF-doxygen/html/search/variables_8.js +8 -8
  591. package/SVF-doxygen/html/search/variables_9.js +79 -79
  592. package/SVF-doxygen/html/search/variables_a.js +4 -4
  593. package/SVF-doxygen/html/search/variables_b.js +10 -10
  594. package/SVF-doxygen/html/search/variables_c.js +45 -45
  595. package/SVF-doxygen/html/search/variables_d.js +57 -57
  596. package/SVF-doxygen/html/search/variables_e.js +123 -123
  597. package/SVF-doxygen/html/search/variables_f.js +31 -31
  598. package/SVF-doxygen/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +2 -2
  599. package/SVF-doxygen/html/structSVF_1_1Hash.html +6 -6
  600. package/SVF-doxygen/html/structSVF_1_1Hash_3_01std_1_1pair_3_01S_00_01T_01_4_01_4.html +12 -12
  601. package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1AccessPath_01_4.html +1 -1
  602. package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1BoundedZ3Expr_01_4.html +6 -6
  603. package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1CondStdSet_3_01Element_01_4_01_4.html +1 -1
  604. package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1CxtDPItem_01_4.html +1 -1
  605. package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1CxtStmtDPItem_3_01LocCond_01_4_01_4.html +1 -1
  606. package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1NumericLiteral_01_4.html +5 -5
  607. package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1SingleAbsValue_01_4.html +1 -1
  608. package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1SparseBitVector_3_01N_01_4_01_4.html +1 -1
  609. package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1StmtDPItem_3_01LocCond_01_4_01_4.html +1 -1
  610. package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1SymState_01_4.html +1 -1
  611. package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1Z3Expr_01_4.html +6 -6
  612. package/SVF-doxygen/html/structstd_1_1hash_3_01std_1_1vector_3_01T_01_4_01_4.html +1 -1
  613. package/SVF-doxygen/html/svf-ex_8cpp.html +21 -21
  614. package/SVF-doxygen/html/svf-ex_8cpp_source.html +21 -21
  615. package/SVF-doxygen/html/svf-llvm_2tools_2MTA_2MTAResultValidator_8h_source.html +2 -2
  616. package/SVF-doxygen/html/svf_2include_2MTA_2MTAResultValidator_8h_source.html +3 -3
  617. package/package.json +1 -1
  618. package/svf/include/AE/Core/BoundedZ3Expr.h +33 -20
  619. package/svf/include/AE/Core/IntervalValue.h +57 -5
  620. package/svf/include/AE/Core/NumericLiteral.h +31 -1
  621. package/svf/include/AE/Core/RelationSolver.h +1 -1
  622. package/svf/include/AE/Svfexe/SVFIR2ItvExeState.h +10 -0
  623. package/svf/include/SVFIR/SVFIR.h +2 -1
  624. package/svf/include/SVFIR/SVFStatements.h +12 -2
  625. package/svf/include/Util/GeneralType.h +4 -0
  626. package/svf/include/Util/Options.h +3 -0
  627. package/svf/include/Util/Z3Expr.h +9 -2
  628. package/svf/lib/AE/Core/RelationSolver.cpp +11 -6
  629. package/svf/lib/AE/Svfexe/AbstractExecution.cpp +13 -34
  630. package/svf/lib/AE/Svfexe/BufOverflowChecker.cpp +6 -6
  631. package/svf/lib/AE/Svfexe/SVFIR2ItvExeState.cpp +217 -23
  632. package/svf/lib/SVFIR/PAGBuilderFromFile.cpp +62 -3
  633. package/svf/lib/SVFIR/SVFFileSystem.cpp +4 -1
  634. package/svf/lib/SVFIR/SVFIR.cpp +3 -3
  635. package/svf/lib/Util/Options.cpp +8 -0
  636. package/svf-llvm/include/SVF-LLVM/SVFIRBuilder.h +39 -3
  637. package/svf-llvm/lib/LLVMModule.cpp +21 -2
  638. package/svf-llvm/lib/SVFIRBuilder.cpp +7 -7
  639. package/svf-llvm/lib/SVFIRExtAPI.cpp +3 -3
@@ -90,8 +90,8 @@ Public Member Functions</h2></td></tr>
90
90
  <tr class="separator:aff6752947e73cd0559b5a340547c9016"><td class="memSeparator" colspan="2">&#160;</td></tr>
91
91
  <tr class="memitem:a012d18ece2c66ba6e784ae9578171369"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1IntervalESBase.html">IntervalESBase</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1RelationSolver.html#a012d18ece2c66ba6e784ae9578171369">abstract_consequence</a> (const <a class="el" href="classSVF_1_1IntervalESBase.html">IntervalESBase</a> &amp;lower, const <a class="el" href="classSVF_1_1IntervalESBase.html">IntervalESBase</a> &amp;upper, const <a class="el" href="classSVF_1_1IntervalESBase.html">IntervalESBase</a> &amp;domain) const</td></tr>
92
92
  <tr class="separator:a012d18ece2c66ba6e784ae9578171369"><td class="memSeparator" colspan="2">&#160;</td></tr>
93
- <tr class="memitem:af0c2db68bffbb223b845ca307b86c10a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1IntervalESBase.html">IntervalESBase</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1RelationSolver.html#af0c2db68bffbb223b845ca307b86c10a">beta</a> (const <a class="el" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a>&lt; <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>, double &gt; &amp;sigma, const <a class="el" href="classSVF_1_1IntervalESBase.html">IntervalESBase</a> &amp;exeState) const</td></tr>
94
- <tr class="separator:af0c2db68bffbb223b845ca307b86c10a"><td class="memSeparator" colspan="2">&#160;</td></tr>
93
+ <tr class="memitem:ac4abc5e1eb3b638710572c958162c22c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1IntervalESBase.html">IntervalESBase</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1RelationSolver.html#ac4abc5e1eb3b638710572c958162c22c">beta</a> (const <a class="el" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a>&lt; <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>, <a class="el" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> &gt; &amp;sigma, const <a class="el" href="classSVF_1_1IntervalESBase.html">IntervalESBase</a> &amp;exeState) const</td></tr>
94
+ <tr class="separator:ac4abc5e1eb3b638710572c958162c22c"><td class="memSeparator" colspan="2">&#160;</td></tr>
95
95
  <tr class="memitem:af621897ab66f6475d5ee043ef2e33623"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classSVF_1_1Z3Expr.html">Z3Expr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1RelationSolver.html#af621897ab66f6475d5ee043ef2e33623">toZ3Expr</a> (<a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> varId) const</td></tr>
96
96
  <tr class="memdesc:af621897ab66f6475d5ee043ef2e33623"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return Z3 expression lazily based on <a class="el" href="classSVF_1_1SVFVar.html">SVFVar</a> ID. <a href="classSVF_1_1RelationSolver.html#af621897ab66f6475d5ee043ef2e33623">More...</a><br /></td></tr>
97
97
  <tr class="separator:af621897ab66f6475d5ee043ef2e33623"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -176,35 +176,35 @@ Public Member Functions</h2></td></tr>
176
176
  <p>return proposed</p>
177
177
  <p>return lower.copy()</p>
178
178
 
179
- <p class="definition">Definition at line <a class="el" href="RelationSolver_8cpp_source.html#l00167">167</a> of file <a class="el" href="RelationSolver_8cpp_source.html">RelationSolver.cpp</a>.</p>
180
- <div class="fragment"><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;{</div>
181
- <div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="comment">/*Returns the &quot;abstract consequence&quot; of lower and upper.</span></div>
182
- <div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="comment"></span> </div>
183
- <div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="comment"> The abstract consequence must be a superset of lower and *NOT* a</span></div>
184
- <div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="comment"> superset of upper.</span></div>
179
+ <p class="definition">Definition at line <a class="el" href="RelationSolver_8cpp_source.html#l00170">170</a> of file <a class="el" href="RelationSolver_8cpp_source.html">RelationSolver.cpp</a>.</p>
180
+ <div class="fragment"><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;{</div>
181
+ <div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="comment">/*Returns the &quot;abstract consequence&quot; of lower and upper.</span></div>
185
182
  <div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="comment"></span> </div>
186
- <div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="comment"> Note that this is a fairly &quot;simple&quot; abstract consequence, in that it</span></div>
187
- <div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;<span class="comment"> sets only one variable to a non-top interval. This improves performance</span></div>
188
- <div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="comment"> of the SMT solver in many cases. In certain cases, other choices for</span></div>
189
- <div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="comment"> the abstract consequence will lead to better algorithm performance.*/</span></div>
190
- <div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; </div>
191
- <div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = domain.<a class="code" href="classSVF_1_1IntervalESBase.html#a903797577ba99ef57879774a3849bbfe">getVarToVal</a>().begin();</div>
192
- <div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; it != domain.<a class="code" href="classSVF_1_1IntervalESBase.html#a903797577ba99ef57879774a3849bbfe">getVarToVal</a>().end(); ++it)</div>
193
- <div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; {</div>
194
- <div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <a class="code" href="classSVF_1_1IntervalESBase.html">IntervalESBase</a> proposed = domain.<a class="code" href="classSVF_1_1IntervalESBase.html#a33fd0e4a654dd4f5b7762b0088e11674">top</a>(); </div>
195
- <div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; proposed.<a class="code" href="classSVF_1_1IntervalESBase.html#ad2288306aed7301ccd30e55410c7b428">_varToItvVal</a>[it-&gt;first] = lower.<a class="code" href="classSVF_1_1IntervalESBase.html#ad2288306aed7301ccd30e55410c7b428">_varToItvVal</a>.at(it-&gt;first);</div>
196
- <div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">if</span> (!(proposed &gt;= upper)) </div>
197
- <div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; {</div>
198
- <div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">return</span> proposed; </div>
199
- <div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; }</div>
200
- <div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; }</div>
201
- <div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">return</span> lower; </div>
202
- <div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;}</div>
183
+ <div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="comment"> The abstract consequence must be a superset of lower and *NOT* a</span></div>
184
+ <div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;<span class="comment"> superset of upper.</span></div>
185
+ <div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="comment"></span> </div>
186
+ <div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="comment"> Note that this is a fairly &quot;simple&quot; abstract consequence, in that it</span></div>
187
+ <div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="comment"> sets only one variable to a non-top interval. This improves performance</span></div>
188
+ <div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="comment"> of the SMT solver in many cases. In certain cases, other choices for</span></div>
189
+ <div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="comment"> the abstract consequence will lead to better algorithm performance.*/</span></div>
190
+ <div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; </div>
191
+ <div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = domain.<a class="code" href="classSVF_1_1IntervalESBase.html#a903797577ba99ef57879774a3849bbfe">getVarToVal</a>().begin();</div>
192
+ <div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; it != domain.<a class="code" href="classSVF_1_1IntervalESBase.html#a903797577ba99ef57879774a3849bbfe">getVarToVal</a>().end(); ++it)</div>
193
+ <div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; {</div>
194
+ <div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <a class="code" href="classSVF_1_1IntervalESBase.html">IntervalESBase</a> proposed = domain.<a class="code" href="classSVF_1_1IntervalESBase.html#a33fd0e4a654dd4f5b7762b0088e11674">top</a>(); </div>
195
+ <div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; proposed.<a class="code" href="classSVF_1_1IntervalESBase.html#ad2288306aed7301ccd30e55410c7b428">_varToItvVal</a>[it-&gt;first] = lower.<a class="code" href="classSVF_1_1IntervalESBase.html#ad2288306aed7301ccd30e55410c7b428">_varToItvVal</a>.at(it-&gt;first);</div>
196
+ <div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordflow">if</span> (!(proposed &gt;= upper)) </div>
197
+ <div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; {</div>
198
+ <div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">return</span> proposed; </div>
199
+ <div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; }</div>
200
+ <div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; }</div>
201
+ <div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">return</span> lower; </div>
202
+ <div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;}</div>
203
203
  </div><!-- fragment -->
204
204
  </div>
205
205
  </div>
206
- <a id="af0c2db68bffbb223b845ca307b86c10a"></a>
207
- <h2 class="memtitle"><span class="permalink"><a href="#af0c2db68bffbb223b845ca307b86c10a">&#9670;&nbsp;</a></span>beta()</h2>
206
+ <a id="ac4abc5e1eb3b638710572c958162c22c"></a>
207
+ <h2 class="memtitle"><span class="permalink"><a href="#ac4abc5e1eb3b638710572c958162c22c">&#9670;&nbsp;</a></span>beta()</h2>
208
208
 
209
209
  <div class="memitem">
210
210
  <div class="memproto">
@@ -212,7 +212,7 @@ Public Member Functions</h2></td></tr>
212
212
  <tr>
213
213
  <td class="memname"><a class="el" href="classSVF_1_1IntervalESBase.html">IntervalESBase</a> RelationSolver::beta </td>
214
214
  <td>(</td>
215
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a>&lt; <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>, double &gt; &amp;&#160;</td>
215
+ <td class="paramtype">const <a class="el" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a>&lt; <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>, <a class="el" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> &gt; &amp;&#160;</td>
216
216
  <td class="paramname"><em>sigma</em>, </td>
217
217
  </tr>
218
218
  <tr>
@@ -229,16 +229,16 @@ Public Member Functions</h2></td></tr>
229
229
  </table>
230
230
  </div><div class="memdoc">
231
231
 
232
- <p class="definition">Definition at line <a class="el" href="RelationSolver_8cpp_source.html#l00241">241</a> of file <a class="el" href="RelationSolver_8cpp_source.html">RelationSolver.cpp</a>.</p>
233
- <div class="fragment"><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;{</div>
234
- <div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <a class="code" href="classSVF_1_1IntervalESBase.html">IntervalESBase</a> res;</div>
235
- <div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a> : exeState.<a class="code" href="classSVF_1_1IntervalESBase.html#a903797577ba99ef57879774a3849bbfe">getVarToVal</a>())</div>
236
- <div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; {</div>
237
- <div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; res.<a class="code" href="classSVF_1_1IntervalESBase.html#ad2288306aed7301ccd30e55410c7b428">_varToItvVal</a>[<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first] = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(</div>
238
- <div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; sigma.at(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first), sigma.at(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first));</div>
239
- <div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; }</div>
240
- <div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keywordflow">return</span> res;</div>
241
- <div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;}</div>
232
+ <p class="definition">Definition at line <a class="el" href="RelationSolver_8cpp_source.html#l00244">244</a> of file <a class="el" href="RelationSolver_8cpp_source.html">RelationSolver.cpp</a>.</p>
233
+ <div class="fragment"><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;{</div>
234
+ <div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <a class="code" href="classSVF_1_1IntervalESBase.html">IntervalESBase</a> res;</div>
235
+ <div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a> : exeState.<a class="code" href="classSVF_1_1IntervalESBase.html#a903797577ba99ef57879774a3849bbfe">getVarToVal</a>())</div>
236
+ <div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; {</div>
237
+ <div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; res.<a class="code" href="classSVF_1_1IntervalESBase.html#ad2288306aed7301ccd30e55410c7b428">_varToItvVal</a>[<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first] = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(</div>
238
+ <div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; sigma.at(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first), sigma.at(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first));</div>
239
+ <div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; }</div>
240
+ <div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">return</span> res;</div>
241
+ <div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;}</div>
242
242
  </div><!-- fragment -->
243
243
  </div>
244
244
  </div>
@@ -281,76 +281,76 @@ Public Member Functions</h2></td></tr>
281
281
  <p>unknown or unsat</p>
282
282
  <p>for timeout reason return upper</p>
283
283
 
284
- <p class="definition">Definition at line <a class="el" href="RelationSolver_8cpp_source.html#l00033">33</a> of file <a class="el" href="RelationSolver_8cpp_source.html">RelationSolver.cpp</a>.</p>
285
- <div class="fragment"><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;{</div>
286
- <div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <a class="code" href="classSVF_1_1IntervalESBase.html">IntervalESBase</a> upper = domain.<a class="code" href="classSVF_1_1IntervalESBase.html#a33fd0e4a654dd4f5b7762b0088e11674">top</a>();</div>
287
- <div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <a class="code" href="classSVF_1_1IntervalESBase.html">IntervalESBase</a> lower = domain.<a class="code" href="classSVF_1_1IntervalESBase.html#a839e8ee927c1cad86aef3059b41ba2eb">bottom</a>();</div>
288
- <div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> meets_in_a_row = 0;</div>
289
- <div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; z3::solver solver = <a class="code" href="classSVF_1_1Z3Expr.html#a16721e960145864d0835eb95f2ae4681">Z3Expr::getSolver</a>();</div>
290
- <div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; z3::params <a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a>(<a class="code" href="classSVF_1_1Z3Expr.html#acfdff582a0188678c10939165a40df30">Z3Expr::getContext</a>());</div>
291
- <div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a>.set(<span class="stringliteral">&quot;:timeout&quot;</span>, <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(600)); <span class="comment">// in milliseconds</span></div>
292
- <div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; solver.set(<a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a>);</div>
293
- <div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="classSVF_1_1IntervalESBase.html">IntervalESBase</a> consequence;</div>
294
- <div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; </div>
295
- <div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">while</span> (lower != upper)</div>
296
- <div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; {</div>
297
- <div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">if</span> (meets_in_a_row == descend_check)</div>
298
- <div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; {</div>
299
- <div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; consequence = lower;</div>
300
- <div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; }</div>
301
- <div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">else</span></div>
302
- <div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div>
303
- <div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; consequence = <a class="code" href="classSVF_1_1RelationSolver.html#a012d18ece2c66ba6e784ae9578171369">abstract_consequence</a>(lower, upper, domain);</div>
304
- <div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</div>
305
- <div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> rhs = !(<a class="code" href="classSVF_1_1RelationSolver.html#af860063ccaeca043bac84eb9eb2cf80a">gamma_hat</a>(consequence, domain));</div>
306
- <div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; solver.push();</div>
307
- <div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; solver.add(phi.<a class="code" href="classSVF_1_1Z3Expr.html#a57c199ba2c3c6a6d44a86e0b1429be55">getExpr</a>() &amp;&amp; rhs.<a class="code" href="classSVF_1_1Z3Expr.html#a57c199ba2c3c6a6d44a86e0b1429be55">getExpr</a>());</div>
308
- <div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;u32_t, double&gt;</a> solution;</div>
309
- <div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; z3::check_result checkRes = solver.check();</div>
310
- <div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">if</span> (checkRes == z3::sat)</div>
311
- <div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; {</div>
312
- <div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; z3::model m = solver.get_model();</div>
313
- <div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> i = 0; i &lt; m.size(); i++)</div>
314
- <div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; {</div>
315
- <div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; z3::func_decl v = m[i];</div>
316
- <div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="comment">// assert(v.arity() == 0);</span></div>
317
- <div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">if</span> (v.arity() != 0)</div>
318
- <div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">continue</span>;</div>
319
- <div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; solution.emplace(std::stoi(v.name().str()),</div>
320
- <div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; m.get_const_interp(v).get_numeral_int());</div>
321
- <div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; }</div>
322
- <div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a> : domain.<a class="code" href="classSVF_1_1IntervalESBase.html#a903797577ba99ef57879774a3849bbfe">getVarToVal</a>())</div>
323
- <div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; {</div>
324
- <div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">if</span> (solution.find(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first) == solution.end())</div>
325
- <div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; {</div>
326
- <div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; solution.emplace(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first, 0);</div>
327
- <div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div>
328
- <div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; }</div>
329
- <div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; solver.pop();</div>
330
- <div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <a class="code" href="classSVF_1_1IntervalESBase.html">IntervalESBase</a> newLower = domain.<a class="code" href="classSVF_1_1IntervalESBase.html#a839e8ee927c1cad86aef3059b41ba2eb">bottom</a>();</div>
331
- <div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; newLower.<a class="code" href="classSVF_1_1IntervalESBase.html#adc0db607e4c0f117760535df67b91fbd">joinWith</a>(lower);</div>
332
- <div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <a class="code" href="classSVF_1_1IntervalESBase.html">IntervalESBase</a> rhs = <a class="code" href="classSVF_1_1RelationSolver.html#af0c2db68bffbb223b845ca307b86c10a">beta</a>(solution, domain);</div>
333
- <div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; newLower.<a class="code" href="classSVF_1_1IntervalESBase.html#adc0db607e4c0f117760535df67b91fbd">joinWith</a>(rhs);</div>
334
- <div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; lower = newLower;</div>
335
- <div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; meets_in_a_row = 0;</div>
336
- <div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div>
337
- <div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">else</span> </div>
338
- <div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; {</div>
339
- <div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; solver.pop();</div>
340
- <div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">if</span> (checkRes == z3::unknown)</div>
341
- <div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; {</div>
342
- <div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">if</span> (solver.reason_unknown() == <span class="stringliteral">&quot;timeout&quot;</span>)</div>
343
- <div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">return</span> upper;</div>
344
- <div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; }</div>
345
- <div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <a class="code" href="classSVF_1_1IntervalESBase.html">IntervalESBase</a> newUpper = domain.<a class="code" href="classSVF_1_1IntervalESBase.html#a33fd0e4a654dd4f5b7762b0088e11674">top</a>();</div>
346
- <div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; newUpper.<a class="code" href="classSVF_1_1IntervalESBase.html#a92a8531c7f12cc6f9117596aa5e534b6">meetWith</a>(upper);</div>
347
- <div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; newUpper.<a class="code" href="classSVF_1_1IntervalESBase.html#a92a8531c7f12cc6f9117596aa5e534b6">meetWith</a>(consequence);</div>
348
- <div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; upper = newUpper;</div>
349
- <div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; meets_in_a_row += 1;</div>
350
- <div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; }</div>
351
- <div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; }</div>
352
- <div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">return</span> upper;</div>
353
- <div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;}</div>
284
+ <p class="definition">Definition at line <a class="el" href="RelationSolver_8cpp_source.html#l00036">36</a> of file <a class="el" href="RelationSolver_8cpp_source.html">RelationSolver.cpp</a>.</p>
285
+ <div class="fragment"><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;{</div>
286
+ <div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <a class="code" href="classSVF_1_1IntervalESBase.html">IntervalESBase</a> upper = domain.<a class="code" href="classSVF_1_1IntervalESBase.html#a33fd0e4a654dd4f5b7762b0088e11674">top</a>();</div>
287
+ <div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="classSVF_1_1IntervalESBase.html">IntervalESBase</a> lower = domain.<a class="code" href="classSVF_1_1IntervalESBase.html#a839e8ee927c1cad86aef3059b41ba2eb">bottom</a>();</div>
288
+ <div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> meets_in_a_row = 0;</div>
289
+ <div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; z3::solver solver = <a class="code" href="classSVF_1_1Z3Expr.html#a16721e960145864d0835eb95f2ae4681">Z3Expr::getSolver</a>();</div>
290
+ <div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; z3::params <a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a>(<a class="code" href="classSVF_1_1Z3Expr.html#acfdff582a0188678c10939165a40df30">Z3Expr::getContext</a>());</div>
291
+ <div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a>.set(<span class="stringliteral">&quot;:timeout&quot;</span>, <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(600)); <span class="comment">// in milliseconds</span></div>
292
+ <div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; solver.set(<a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a>);</div>
293
+ <div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="classSVF_1_1IntervalESBase.html">IntervalESBase</a> consequence;</div>
294
+ <div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; </div>
295
+ <div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">while</span> (lower != upper)</div>
296
+ <div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div>
297
+ <div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">if</span> (meets_in_a_row == descend_check)</div>
298
+ <div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; {</div>
299
+ <div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; consequence = lower;</div>
300
+ <div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; }</div>
301
+ <div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">else</span></div>
302
+ <div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; {</div>
303
+ <div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; consequence = <a class="code" href="classSVF_1_1RelationSolver.html#a012d18ece2c66ba6e784ae9578171369">abstract_consequence</a>(lower, upper, domain);</div>
304
+ <div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; }</div>
305
+ <div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> rhs = !(<a class="code" href="classSVF_1_1RelationSolver.html#af860063ccaeca043bac84eb9eb2cf80a">gamma_hat</a>(consequence, domain));</div>
306
+ <div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; solver.push();</div>
307
+ <div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; solver.add(phi.<a class="code" href="classSVF_1_1Z3Expr.html#a57c199ba2c3c6a6d44a86e0b1429be55">getExpr</a>() &amp;&amp; rhs.<a class="code" href="classSVF_1_1Z3Expr.html#a57c199ba2c3c6a6d44a86e0b1429be55">getExpr</a>());</div>
308
+ <div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;u32_t, s32_t&gt;</a> solution;</div>
309
+ <div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; z3::check_result checkRes = solver.check();</div>
310
+ <div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">if</span> (checkRes == z3::sat)</div>
311
+ <div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; {</div>
312
+ <div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; z3::model m = solver.get_model();</div>
313
+ <div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> i = 0; i &lt; m.size(); i++)</div>
314
+ <div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; {</div>
315
+ <div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; z3::func_decl v = m[i];</div>
316
+ <div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="comment">// assert(v.arity() == 0);</span></div>
317
+ <div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">if</span> (v.arity() != 0)</div>
318
+ <div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">continue</span>;</div>
319
+ <div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; solution.emplace(std::stoi(v.name().str()),</div>
320
+ <div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; m.get_const_interp(v).get_numeral_int());</div>
321
+ <div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; }</div>
322
+ <div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a> : domain.<a class="code" href="classSVF_1_1IntervalESBase.html#a903797577ba99ef57879774a3849bbfe">getVarToVal</a>())</div>
323
+ <div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; {</div>
324
+ <div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">if</span> (solution.find(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first) == solution.end())</div>
325
+ <div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; {</div>
326
+ <div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; solution.emplace(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first, 0);</div>
327
+ <div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div>
328
+ <div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div>
329
+ <div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; solver.pop();</div>
330
+ <div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="classSVF_1_1IntervalESBase.html">IntervalESBase</a> newLower = domain.<a class="code" href="classSVF_1_1IntervalESBase.html#a839e8ee927c1cad86aef3059b41ba2eb">bottom</a>();</div>
331
+ <div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; newLower.<a class="code" href="classSVF_1_1IntervalESBase.html#adc0db607e4c0f117760535df67b91fbd">joinWith</a>(lower);</div>
332
+ <div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="classSVF_1_1IntervalESBase.html">IntervalESBase</a> rhs = <a class="code" href="classSVF_1_1RelationSolver.html#ac4abc5e1eb3b638710572c958162c22c">beta</a>(solution, domain);</div>
333
+ <div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; newLower.<a class="code" href="classSVF_1_1IntervalESBase.html#adc0db607e4c0f117760535df67b91fbd">joinWith</a>(rhs);</div>
334
+ <div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; lower = newLower;</div>
335
+ <div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; meets_in_a_row = 0;</div>
336
+ <div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; }</div>
337
+ <div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">else</span> </div>
338
+ <div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; {</div>
339
+ <div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; solver.pop();</div>
340
+ <div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">if</span> (checkRes == z3::unknown)</div>
341
+ <div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; {</div>
342
+ <div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">if</span> (solver.reason_unknown() == <span class="stringliteral">&quot;timeout&quot;</span>)</div>
343
+ <div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">return</span> upper;</div>
344
+ <div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; }</div>
345
+ <div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <a class="code" href="classSVF_1_1IntervalESBase.html">IntervalESBase</a> newUpper = domain.<a class="code" href="classSVF_1_1IntervalESBase.html#a33fd0e4a654dd4f5b7762b0088e11674">top</a>();</div>
346
+ <div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; newUpper.<a class="code" href="classSVF_1_1IntervalESBase.html#a92a8531c7f12cc6f9117596aa5e534b6">meetWith</a>(upper);</div>
347
+ <div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; newUpper.<a class="code" href="classSVF_1_1IntervalESBase.html#a92a8531c7f12cc6f9117596aa5e534b6">meetWith</a>(consequence);</div>
348
+ <div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; upper = newUpper;</div>
349
+ <div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; meets_in_a_row += 1;</div>
350
+ <div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; }</div>
351
+ <div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; }</div>
352
+ <div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">return</span> upper;</div>
353
+ <div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;}</div>
354
354
  </div><!-- fragment -->
355
355
  </div>
356
356
  </div>
@@ -393,31 +393,31 @@ Public Member Functions</h2></td></tr>
393
393
  </div><div class="memdoc">
394
394
  <p>this is the S in the original paper</p>
395
395
 
396
- <p class="definition">Definition at line <a class="el" href="RelationSolver_8cpp_source.html#l00331">331</a> of file <a class="el" href="RelationSolver_8cpp_source.html">RelationSolver.cpp</a>.</p>
397
- <div class="fragment"><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;{</div>
398
- <div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;u32_t, Z3Expr&gt;</a> L_phi;</div>
399
- <div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;u32_t, NumericLiteral&gt;</a> mid_values;</div>
400
- <div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">while</span> (1)</div>
401
- <div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; {</div>
402
- <div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; L_phi.clear();</div>
403
- <div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a> : ret)</div>
404
- <div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; {</div>
405
- <div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> v = <a class="code" href="classSVF_1_1RelationSolver.html#af621897ab66f6475d5ee043ef2e33623">toZ3Expr</a>(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first);</div>
406
- <div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">if</span> (low_values.at(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first).leq(high_values.at(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first)))</div>
407
- <div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; {</div>
408
- <div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <a class="code" href="classSVF_1_1NumericLiteral.html">NumericLiteral</a> mid = (low_values.at(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first) + (high_values.at(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first) - low_values.at(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first)) / 2);</div>
409
- <div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <a class="code" href="classSVF_1_1RelationSolver.html#af00aee55faf18a994dc5558ca4bf4932">updateMap</a>(mid_values, <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first, mid);</div>
410
- <div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> expr = ((int)mid.<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>() &lt;= v &amp;&amp; v &lt;= (int)high_values.at(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first).getNumeral());</div>
411
- <div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; L_phi[<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first] = expr;</div>
412
- <div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; }</div>
413
- <div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; }</div>
414
- <div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordflow">if</span> (L_phi.empty())</div>
415
- <div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keywordflow">break</span>;</div>
416
- <div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">else</span></div>
417
- <div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <a class="code" href="classSVF_1_1RelationSolver.html#a7ace50c6e53a79f0e329badb63570f92">decide_cpa_ext</a>(phi, L_phi, mid_values, ret, low_values, high_values);</div>
418
- <div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; }</div>
419
- <div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keywordflow">return</span> ret;</div>
420
- <div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;}</div>
396
+ <p class="definition">Definition at line <a class="el" href="RelationSolver_8cpp_source.html#l00336">336</a> of file <a class="el" href="RelationSolver_8cpp_source.html">RelationSolver.cpp</a>.</p>
397
+ <div class="fragment"><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;{</div>
398
+ <div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;u32_t, Z3Expr&gt;</a> L_phi;</div>
399
+ <div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;u32_t, NumericLiteral&gt;</a> mid_values;</div>
400
+ <div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keywordflow">while</span> (1)</div>
401
+ <div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; {</div>
402
+ <div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; L_phi.clear();</div>
403
+ <div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a> : ret)</div>
404
+ <div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; {</div>
405
+ <div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> v = <a class="code" href="classSVF_1_1RelationSolver.html#af621897ab66f6475d5ee043ef2e33623">toZ3Expr</a>(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first);</div>
406
+ <div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">if</span> (low_values.at(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first).leq(high_values.at(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first)))</div>
407
+ <div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; {</div>
408
+ <div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <a class="code" href="classSVF_1_1NumericLiteral.html">NumericLiteral</a> mid = (low_values.at(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first) + (high_values.at(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first) - low_values.at(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first)) / 2);</div>
409
+ <div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <a class="code" href="classSVF_1_1RelationSolver.html#af00aee55faf18a994dc5558ca4bf4932">updateMap</a>(mid_values, <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first, mid);</div>
410
+ <div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> expr = (mid.<a class="code" href="classSVF_1_1NumericLiteral.html#ac2994e13c3572b114c57a9bb4f155d67">getExpr</a>() &lt;= v &amp;&amp; v &lt;= high_values.at(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first).<a class="code" href="classSVF_1_1Z3Expr.html#a57c199ba2c3c6a6d44a86e0b1429be55">getExpr</a>());</div>
411
+ <div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; L_phi[<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first] = expr;</div>
412
+ <div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; }</div>
413
+ <div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; }</div>
414
+ <div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keywordflow">if</span> (L_phi.empty())</div>
415
+ <div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">break</span>;</div>
416
+ <div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordflow">else</span></div>
417
+ <div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <a class="code" href="classSVF_1_1RelationSolver.html#a7ace50c6e53a79f0e329badb63570f92">decide_cpa_ext</a>(phi, L_phi, mid_values, ret, low_values, high_values);</div>
418
+ <div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; }</div>
419
+ <div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordflow">return</span> ret;</div>
420
+ <div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;}</div>
421
421
  </div><!-- fragment -->
422
422
  </div>
423
423
  </div>
@@ -453,63 +453,65 @@ Public Member Functions</h2></td></tr>
453
453
  <p>optimize each object</p>
454
454
  <p>fill in the return values</p>
455
455
 
456
- <p class="definition">Definition at line <a class="el" href="RelationSolver_8cpp_source.html#l00266">266</a> of file <a class="el" href="RelationSolver_8cpp_source.html">RelationSolver.cpp</a>.</p>
457
- <div class="fragment"><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;{</div>
458
- <div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> bias = 0;</div>
459
- <div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordtype">int</span> infinity = (INT32_MAX) - 1;</div>
460
- <div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="comment">// int infinity = 20;</span></div>
461
- <div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;u32_t, NumericLiteral&gt;</a> ret;</div>
462
- <div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;u32_t, NumericLiteral&gt;</a> low_values, high_values;</div>
463
- <div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> new_phi = phi;</div>
464
- <div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>: domain.<a class="code" href="classSVF_1_1IntervalESBase.html#a903797577ba99ef57879774a3849bbfe">getVarToVal</a>())</div>
465
- <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; {</div>
466
- <div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <a class="code" href="classSVF_1_1RelationSolver.html#af00aee55faf18a994dc5558ca4bf4932">updateMap</a>(ret, <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first, <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second.ub());</div>
467
- <div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second.lb().is_minus_infinity())</div>
468
- <div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <a class="code" href="classSVF_1_1RelationSolver.html#af00aee55faf18a994dc5558ca4bf4932">updateMap</a>(low_values, <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first, -infinity);</div>
469
- <div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">else</span></div>
470
- <div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <a class="code" href="classSVF_1_1RelationSolver.html#af00aee55faf18a994dc5558ca4bf4932">updateMap</a>(low_values, <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first, <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second.lb());</div>
471
- <div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second.ub().is_plus_infinity())</div>
472
- <div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <a class="code" href="classSVF_1_1RelationSolver.html#af00aee55faf18a994dc5558ca4bf4932">updateMap</a>(high_values, <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first, infinity);</div>
473
- <div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">else</span></div>
474
- <div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <a class="code" href="classSVF_1_1RelationSolver.html#af00aee55faf18a994dc5558ca4bf4932">updateMap</a>(high_values, <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first, <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second.ub());</div>
475
- <div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first &gt; bias)</div>
476
- <div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; bias = <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first + 1;</div>
477
- <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; }</div>
478
- <div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>: domain.<a class="code" href="classSVF_1_1IntervalESBase.html#a903797577ba99ef57879774a3849bbfe">getVarToVal</a>())</div>
479
- <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; {</div>
480
- <div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> reverse_key = <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first + bias;</div>
481
- <div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <a class="code" href="classSVF_1_1RelationSolver.html#af00aee55faf18a994dc5558ca4bf4932">updateMap</a>(ret, reverse_key, -<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second.lb());</div>
482
- <div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second.ub().is_plus_infinity())</div>
483
- <div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <a class="code" href="classSVF_1_1RelationSolver.html#af00aee55faf18a994dc5558ca4bf4932">updateMap</a>(low_values, reverse_key, -infinity);</div>
484
- <div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">else</span></div>
485
- <div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <a class="code" href="classSVF_1_1RelationSolver.html#af00aee55faf18a994dc5558ca4bf4932">updateMap</a>(low_values, reverse_key, -<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second.ub());</div>
486
- <div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second.lb().is_minus_infinity())</div>
487
- <div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <a class="code" href="classSVF_1_1RelationSolver.html#af00aee55faf18a994dc5558ca4bf4932">updateMap</a>(high_values, reverse_key, infinity);</div>
488
- <div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">else</span></div>
489
- <div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <a class="code" href="classSVF_1_1RelationSolver.html#af00aee55faf18a994dc5558ca4bf4932">updateMap</a>(high_values, reverse_key, -<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second.lb());</div>
490
- <div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; new_phi = (new_phi &amp;&amp; (<a class="code" href="classSVF_1_1RelationSolver.html#af621897ab66f6475d5ee043ef2e33623">toZ3Expr</a>(reverse_key) == -1 * <a class="code" href="classSVF_1_1RelationSolver.html#af621897ab66f6475d5ee043ef2e33623">toZ3Expr</a>(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first)));</div>
491
- <div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; }</div>
492
- <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <a class="code" href="classSVF_1_1RelationSolver.html#aaae7ac9ed7d0e17f39948c37b867ada9">BoxedOptSolver</a>(new_phi.<a class="code" href="classSVF_1_1Z3Expr.html#afb3478316592a395c6d473791b5a0981">simplify</a>(), ret, low_values, high_values);</div>
493
- <div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <a class="code" href="classSVF_1_1IntervalESBase.html">IntervalESBase</a> retInv;</div>
494
- <div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>: ret)</div>
495
- <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; {</div>
496
- <div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first &gt;= bias)</div>
497
- <div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; {</div>
498
- <div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second.equal(infinity))</div>
499
- <div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; retInv.<a class="code" href="classSVF_1_1IntervalESBase.html#ad2288306aed7301ccd30e55410c7b428">_varToItvVal</a>[<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first - bias].setLb(<a class="code" href="classSVF_1_1Z3Expr.html#acfdff582a0188678c10939165a40df30">Z3Expr::getContext</a>().int_const(<span class="stringliteral">&quot;-oo&quot;</span>));</div>
500
- <div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">else</span></div>
501
- <div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; retInv.<a class="code" href="classSVF_1_1IntervalESBase.html#ad2288306aed7301ccd30e55410c7b428">_varToItvVal</a>[<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first - bias].setLb(-<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second);</div>
502
- <div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; }</div>
503
- <div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordflow">else</span></div>
504
- <div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; {</div>
505
- <div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second.equal(infinity))</div>
506
- <div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; retInv.<a class="code" href="classSVF_1_1IntervalESBase.html#ad2288306aed7301ccd30e55410c7b428">_varToItvVal</a>[<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first].setUb(<a class="code" href="classSVF_1_1Z3Expr.html#acfdff582a0188678c10939165a40df30">Z3Expr::getContext</a>().int_const(<span class="stringliteral">&quot;+oo&quot;</span>));</div>
507
- <div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keywordflow">else</span></div>
508
- <div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; retInv.<a class="code" href="classSVF_1_1IntervalESBase.html#ad2288306aed7301ccd30e55410c7b428">_varToItvVal</a>[<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first].setUb(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second);</div>
509
- <div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; }</div>
510
- <div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; }</div>
511
- <div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">return</span> retInv;</div>
512
- <div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;}</div>
456
+ <p class="definition">Definition at line <a class="el" href="RelationSolver_8cpp_source.html#l00269">269</a> of file <a class="el" href="RelationSolver_8cpp_source.html">RelationSolver.cpp</a>.</p>
457
+ <div class="fragment"><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;{</div>
458
+ <div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> bias = 0;</div>
459
+ <div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> infinity = INT32_MAX - 1;</div>
460
+ <div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; </div>
461
+ <div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="comment">// int infinity = (INT32_MAX) - 1;</span></div>
462
+ <div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="comment">// int infinity = 20;</span></div>
463
+ <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;u32_t, NumericLiteral&gt;</a> ret;</div>
464
+ <div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;u32_t, NumericLiteral&gt;</a> low_values, high_values;</div>
465
+ <div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> new_phi = phi;</div>
466
+ <div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>: domain.<a class="code" href="classSVF_1_1IntervalESBase.html#a903797577ba99ef57879774a3849bbfe">getVarToVal</a>())</div>
467
+ <div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; {</div>
468
+ <div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <a class="code" href="classSVF_1_1RelationSolver.html#af00aee55faf18a994dc5558ca4bf4932">updateMap</a>(ret, <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first, <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second.ub());</div>
469
+ <div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second.lb().is_minus_infinity())</div>
470
+ <div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <a class="code" href="classSVF_1_1RelationSolver.html#af00aee55faf18a994dc5558ca4bf4932">updateMap</a>(low_values, <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first, -infinity);</div>
471
+ <div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">else</span></div>
472
+ <div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <a class="code" href="classSVF_1_1RelationSolver.html#af00aee55faf18a994dc5558ca4bf4932">updateMap</a>(low_values, <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first, <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second.lb());</div>
473
+ <div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second.ub().is_plus_infinity())</div>
474
+ <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <a class="code" href="classSVF_1_1RelationSolver.html#af00aee55faf18a994dc5558ca4bf4932">updateMap</a>(high_values, <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first, infinity);</div>
475
+ <div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">else</span></div>
476
+ <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <a class="code" href="classSVF_1_1RelationSolver.html#af00aee55faf18a994dc5558ca4bf4932">updateMap</a>(high_values, <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first, <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second.ub());</div>
477
+ <div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first &gt; bias)</div>
478
+ <div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; bias = <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first + 1;</div>
479
+ <div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; }</div>
480
+ <div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>: domain.<a class="code" href="classSVF_1_1IntervalESBase.html#a903797577ba99ef57879774a3849bbfe">getVarToVal</a>())</div>
481
+ <div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; {</div>
482
+ <div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> reverse_key = <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first + bias;</div>
483
+ <div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <a class="code" href="classSVF_1_1RelationSolver.html#af00aee55faf18a994dc5558ca4bf4932">updateMap</a>(ret, reverse_key, -<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second.lb());</div>
484
+ <div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second.ub().is_plus_infinity())</div>
485
+ <div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <a class="code" href="classSVF_1_1RelationSolver.html#af00aee55faf18a994dc5558ca4bf4932">updateMap</a>(low_values, reverse_key, -infinity);</div>
486
+ <div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">else</span></div>
487
+ <div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <a class="code" href="classSVF_1_1RelationSolver.html#af00aee55faf18a994dc5558ca4bf4932">updateMap</a>(low_values, reverse_key, -<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second.ub());</div>
488
+ <div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second.lb().is_minus_infinity())</div>
489
+ <div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <a class="code" href="classSVF_1_1RelationSolver.html#af00aee55faf18a994dc5558ca4bf4932">updateMap</a>(high_values, reverse_key, infinity);</div>
490
+ <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">else</span></div>
491
+ <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <a class="code" href="classSVF_1_1RelationSolver.html#af00aee55faf18a994dc5558ca4bf4932">updateMap</a>(high_values, reverse_key, -<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second.lb());</div>
492
+ <div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; new_phi = (new_phi &amp;&amp; (<a class="code" href="classSVF_1_1RelationSolver.html#af621897ab66f6475d5ee043ef2e33623">toZ3Expr</a>(reverse_key) == -1 * <a class="code" href="classSVF_1_1RelationSolver.html#af621897ab66f6475d5ee043ef2e33623">toZ3Expr</a>(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first)));</div>
493
+ <div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; }</div>
494
+ <div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <a class="code" href="classSVF_1_1RelationSolver.html#aaae7ac9ed7d0e17f39948c37b867ada9">BoxedOptSolver</a>(new_phi.<a class="code" href="classSVF_1_1Z3Expr.html#afb3478316592a395c6d473791b5a0981">simplify</a>(), ret, low_values, high_values);</div>
495
+ <div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <a class="code" href="classSVF_1_1IntervalESBase.html">IntervalESBase</a> retInv;</div>
496
+ <div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>: ret)</div>
497
+ <div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; {</div>
498
+ <div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first &gt;= bias)</div>
499
+ <div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; {</div>
500
+ <div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second.equal(infinity))</div>
501
+ <div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; retInv.<a class="code" href="classSVF_1_1IntervalESBase.html#ad2288306aed7301ccd30e55410c7b428">_varToItvVal</a>[<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first - bias].setLb(<a class="code" href="classSVF_1_1Z3Expr.html#acfdff582a0188678c10939165a40df30">Z3Expr::getContext</a>().int_const(<span class="stringliteral">&quot;-oo&quot;</span>));</div>
502
+ <div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordflow">else</span></div>
503
+ <div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; retInv.<a class="code" href="classSVF_1_1IntervalESBase.html#ad2288306aed7301ccd30e55410c7b428">_varToItvVal</a>[<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first - bias].setLb(-<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second);</div>
504
+ <div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; }</div>
505
+ <div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keywordflow">else</span></div>
506
+ <div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; {</div>
507
+ <div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second.equal(infinity))</div>
508
+ <div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; retInv.<a class="code" href="classSVF_1_1IntervalESBase.html#ad2288306aed7301ccd30e55410c7b428">_varToItvVal</a>[<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first].setUb(<a class="code" href="classSVF_1_1Z3Expr.html#acfdff582a0188678c10939165a40df30">Z3Expr::getContext</a>().int_const(<span class="stringliteral">&quot;+oo&quot;</span>));</div>
509
+ <div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordflow">else</span></div>
510
+ <div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; retInv.<a class="code" href="classSVF_1_1IntervalESBase.html#ad2288306aed7301ccd30e55410c7b428">_varToItvVal</a>[<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first].setUb(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second);</div>
511
+ <div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; }</div>
512
+ <div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; }</div>
513
+ <div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keywordflow">return</span> retInv;</div>
514
+ <div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;}</div>
513
515
  </div><!-- fragment -->
514
516
  </div>
515
517
  </div>
@@ -566,57 +568,57 @@ Public Member Functions</h2></td></tr>
566
568
  <p>id is the var id, value is the solution found for var_id add a relation to check if the solution meets phi_id</p>
567
569
  <p>unknown or unsat, we consider unknown as unsat</p>
568
570
 
569
- <p class="definition">Definition at line <a class="el" href="RelationSolver_8cpp_source.html#l00359">359</a> of file <a class="el" href="RelationSolver_8cpp_source.html">RelationSolver.cpp</a>.</p>
570
- <div class="fragment"><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;{</div>
571
- <div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keywordflow">while</span> (1)</div>
572
- <div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; {</div>
573
- <div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> join_expr(<a class="code" href="classSVF_1_1Z3Expr.html#acfdff582a0188678c10939165a40df30">Z3Expr::getContext</a>().bool_val(<span class="keyword">false</span>));</div>
574
- <div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a> : L_phi)</div>
575
- <div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; join_expr = (join_expr || <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second);</div>
576
- <div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; join_expr = (join_expr &amp;&amp; phi).simplify();</div>
577
- <div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; z3::solver&amp; solver = <a class="code" href="classSVF_1_1Z3Expr.html#a16721e960145864d0835eb95f2ae4681">Z3Expr::getSolver</a>();</div>
578
- <div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; solver.push();</div>
579
- <div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; solver.add(join_expr.getExpr());</div>
580
- <div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;u32_t, double&gt;</a> solution;</div>
581
- <div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; z3::check_result checkRes = solver.check();</div>
582
- <div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordflow">if</span> (checkRes == z3::sat)</div>
583
- <div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; {</div>
584
- <div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; z3::model m = solver.get_model();</div>
585
- <div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; solver.pop();</div>
586
- <div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">const</span> <span class="keyword">auto</span> &amp; <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a> : L_phi)</div>
587
- <div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; {</div>
588
- <div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> <span class="keywordtype">id</span> = <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first;</div>
589
- <div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordtype">int</span> value = m.eval(<a class="code" href="classSVF_1_1RelationSolver.html#af621897ab66f6475d5ee043ef2e33623">toZ3Expr</a>(<span class="keywordtype">id</span>).getExpr()).get_numeral_int();</div>
590
- <div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="comment">// int value = m.eval(Z3Expr::getContext().int_const(std::to_string(id).c_str())).get_numeral_int();</span></div>
591
- <div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;<span class="comment"></span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> expr = (<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second &amp;&amp; <a class="code" href="classSVF_1_1RelationSolver.html#af621897ab66f6475d5ee043ef2e33623">toZ3Expr</a>(<span class="keywordtype">id</span>) == value);</div>
592
- <div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; solver.push();</div>
593
- <div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; solver.add(expr.<a class="code" href="classSVF_1_1Z3Expr.html#a57c199ba2c3c6a6d44a86e0b1429be55">getExpr</a>());</div>
594
- <div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="comment">// solution meets phi_id</span></div>
595
- <div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keywordflow">if</span> (solver.check() == z3::sat)</div>
596
- <div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; {</div>
597
- <div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <a class="code" href="classSVF_1_1RelationSolver.html#af00aee55faf18a994dc5558ca4bf4932">updateMap</a>(ret, <span class="keywordtype">id</span>, <a class="code" href="classSVF_1_1NumericLiteral.html">NumericLiteral</a>(value));</div>
598
- <div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <a class="code" href="classSVF_1_1RelationSolver.html#af00aee55faf18a994dc5558ca4bf4932">updateMap</a>(low_values, <span class="keywordtype">id</span>, ret.at(<span class="keywordtype">id</span>) + 1);</div>
599
- <div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; </div>
600
- <div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <a class="code" href="classSVF_1_1NumericLiteral.html">NumericLiteral</a> mid = (low_values.at(<span class="keywordtype">id</span>) + high_values.at(<span class="keywordtype">id</span>) + 1) / 2;</div>
601
- <div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <a class="code" href="classSVF_1_1RelationSolver.html#af00aee55faf18a994dc5558ca4bf4932">updateMap</a>(mid_values, <span class="keywordtype">id</span>, mid);</div>
602
- <div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> v = <a class="code" href="classSVF_1_1RelationSolver.html#af621897ab66f6475d5ee043ef2e33623">toZ3Expr</a>(<span class="keywordtype">id</span>);</div>
603
- <div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="comment">// Z3Expr v = Z3Expr::getContext().int_const(std::to_string(id).c_str());</span></div>
604
- <div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> expr = ((int)mid_values.at(<span class="keywordtype">id</span>).getNumeral() &lt;= v &amp;&amp; v &lt;= (int)high_values.at(<span class="keywordtype">id</span>).getNumeral());</div>
605
- <div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; L_phi[id] = expr;</div>
606
- <div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; }</div>
607
- <div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; solver.pop();</div>
608
- <div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; }</div>
609
- <div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; }</div>
610
- <div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keywordflow">else</span> </div>
611
- <div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; {</div>
612
- <div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; solver.pop();</div>
613
- <div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a> : L_phi)</div>
614
- <div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; high_values.at(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first) = mid_values.at(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first) - 1;</div>
615
- <div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keywordflow">return</span>;</div>
616
- <div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; }</div>
617
- <div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; }</div>
618
- <div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; </div>
619
- <div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;}</div>
571
+ <p class="definition">Definition at line <a class="el" href="RelationSolver_8cpp_source.html#l00364">364</a> of file <a class="el" href="RelationSolver_8cpp_source.html">RelationSolver.cpp</a>.</p>
572
+ <div class="fragment"><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;{</div>
573
+ <div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keywordflow">while</span> (1)</div>
574
+ <div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; {</div>
575
+ <div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> join_expr(<a class="code" href="classSVF_1_1Z3Expr.html#acfdff582a0188678c10939165a40df30">Z3Expr::getContext</a>().bool_val(<span class="keyword">false</span>));</div>
576
+ <div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a> : L_phi)</div>
577
+ <div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; join_expr = (join_expr || <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second);</div>
578
+ <div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; join_expr = (join_expr &amp;&amp; phi).simplify();</div>
579
+ <div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; z3::solver&amp; solver = <a class="code" href="classSVF_1_1Z3Expr.html#a16721e960145864d0835eb95f2ae4681">Z3Expr::getSolver</a>();</div>
580
+ <div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; solver.push();</div>
581
+ <div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; solver.add(join_expr.getExpr());</div>
582
+ <div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;u32_t, double&gt;</a> solution;</div>
583
+ <div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; z3::check_result checkRes = solver.check();</div>
584
+ <div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keywordflow">if</span> (checkRes == z3::sat)</div>
585
+ <div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; {</div>
586
+ <div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; z3::model m = solver.get_model();</div>
587
+ <div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; solver.pop();</div>
588
+ <div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">const</span> <span class="keyword">auto</span> &amp; <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a> : L_phi)</div>
589
+ <div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; {</div>
590
+ <div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> <span class="keywordtype">id</span> = <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first;</div>
591
+ <div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordtype">int</span> value = m.eval(<a class="code" href="classSVF_1_1RelationSolver.html#af621897ab66f6475d5ee043ef2e33623">toZ3Expr</a>(<span class="keywordtype">id</span>).getExpr()).get_numeral_int();</div>
592
+ <div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="comment">// int value = m.eval(Z3Expr::getContext().int_const(std::to_string(id).c_str())).get_numeral_int();</span></div>
593
+ <div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;<span class="comment"></span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> expr = (<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second &amp;&amp; <a class="code" href="classSVF_1_1RelationSolver.html#af621897ab66f6475d5ee043ef2e33623">toZ3Expr</a>(<span class="keywordtype">id</span>) == value);</div>
594
+ <div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; solver.push();</div>
595
+ <div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; solver.add(expr.<a class="code" href="classSVF_1_1Z3Expr.html#a57c199ba2c3c6a6d44a86e0b1429be55">getExpr</a>());</div>
596
+ <div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="comment">// solution meets phi_id</span></div>
597
+ <div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keywordflow">if</span> (solver.check() == z3::sat)</div>
598
+ <div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; {</div>
599
+ <div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <a class="code" href="classSVF_1_1RelationSolver.html#af00aee55faf18a994dc5558ca4bf4932">updateMap</a>(ret, <span class="keywordtype">id</span>, <a class="code" href="classSVF_1_1NumericLiteral.html">NumericLiteral</a>(value));</div>
600
+ <div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <a class="code" href="classSVF_1_1RelationSolver.html#af00aee55faf18a994dc5558ca4bf4932">updateMap</a>(low_values, <span class="keywordtype">id</span>, ret.at(<span class="keywordtype">id</span>) + 1);</div>
601
+ <div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; </div>
602
+ <div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <a class="code" href="classSVF_1_1NumericLiteral.html">NumericLiteral</a> mid = (low_values.at(<span class="keywordtype">id</span>) + high_values.at(<span class="keywordtype">id</span>) + 1) / 2;</div>
603
+ <div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <a class="code" href="classSVF_1_1RelationSolver.html#af00aee55faf18a994dc5558ca4bf4932">updateMap</a>(mid_values, <span class="keywordtype">id</span>, mid);</div>
604
+ <div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> v = <a class="code" href="classSVF_1_1RelationSolver.html#af621897ab66f6475d5ee043ef2e33623">toZ3Expr</a>(<span class="keywordtype">id</span>);</div>
605
+ <div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="comment">// Z3Expr v = Z3Expr::getContext().int_const(std::to_string(id).c_str());</span></div>
606
+ <div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> expr = (mid_values.at(<span class="keywordtype">id</span>).getExpr() &lt;= v &amp;&amp; v &lt;= high_values.at(<span class="keywordtype">id</span>).<a class="code" href="classSVF_1_1Z3Expr.html#a57c199ba2c3c6a6d44a86e0b1429be55">getExpr</a>());</div>
607
+ <div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; L_phi[id] = expr;</div>
608
+ <div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; }</div>
609
+ <div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; solver.pop();</div>
610
+ <div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; }</div>
611
+ <div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; }</div>
612
+ <div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keywordflow">else</span> </div>
613
+ <div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; {</div>
614
+ <div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; solver.pop();</div>
615
+ <div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a> : L_phi)</div>
616
+ <div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; high_values.at(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first) = mid_values.at(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first) - 1;</div>
617
+ <div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keywordflow">return</span>;</div>
618
+ <div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; }</div>
619
+ <div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; }</div>
620
+ <div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; </div>
621
+ <div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;}</div>
620
622
  </div><!-- fragment -->
621
623
  </div>
622
624
  </div>
@@ -648,22 +650,22 @@ Public Member Functions</h2></td></tr>
648
650
 
649
651
  <p>Return <a class="el" href="classSVF_1_1Z3Expr.html">Z3Expr</a> according to another valToValMap. </p>
650
652
 
651
- <p class="definition">Definition at line <a class="el" href="RelationSolver_8cpp_source.html#l00212">212</a> of file <a class="el" href="RelationSolver_8cpp_source.html">RelationSolver.cpp</a>.</p>
652
- <div class="fragment"><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;{</div>
653
- <div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> res(<a class="code" href="classSVF_1_1Z3Expr.html#acfdff582a0188678c10939165a40df30">Z3Expr::getContext</a>().bool_val(<span class="keyword">true</span>));</div>
654
- <div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a> : exeState.<a class="code" href="classSVF_1_1IntervalESBase.html#a903797577ba99ef57879774a3849bbfe">getVarToVal</a>())</div>
655
- <div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; {</div>
656
- <div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> interval = alpha.<a class="code" href="classSVF_1_1IntervalESBase.html#ad2288306aed7301ccd30e55410c7b428">_varToItvVal</a>.at(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first);</div>
657
- <div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">if</span> (interval.<a class="code" href="classSVF_1_1IntervalValue.html#af8be90fc1b61103187908dce4ba68001">isBottom</a>())</div>
658
- <div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1Z3Expr.html#acfdff582a0188678c10939165a40df30">Z3Expr::getContext</a>().bool_val(<span class="keyword">false</span>);</div>
659
- <div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordflow">if</span> (interval.<a class="code" href="classSVF_1_1IntervalValue.html#a977128211266b93e58e298a7ac29a059">isTop</a>())</div>
660
- <div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">continue</span>;</div>
661
- <div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> v = <a class="code" href="classSVF_1_1RelationSolver.html#af621897ab66f6475d5ee043ef2e33623">toZ3Expr</a>(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first);</div>
662
- <div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; res = (res &amp;&amp; v &gt;= (int)interval.<a class="code" href="classSVF_1_1IntervalValue.html#a0df07a2659cbf3a918de5b0d7c407264">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>() &amp;&amp;</div>
663
- <div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; v &lt;= (int)interval.<a class="code" href="classSVF_1_1IntervalValue.html#adac2dc2c9f744a071ad3f0175ed40cd9">ub</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>()).simplify();</div>
664
- <div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; }</div>
665
- <div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">return</span> res;</div>
666
- <div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;}</div>
653
+ <p class="definition">Definition at line <a class="el" href="RelationSolver_8cpp_source.html#l00215">215</a> of file <a class="el" href="RelationSolver_8cpp_source.html">RelationSolver.cpp</a>.</p>
654
+ <div class="fragment"><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;{</div>
655
+ <div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> res(<a class="code" href="classSVF_1_1Z3Expr.html#acfdff582a0188678c10939165a40df30">Z3Expr::getContext</a>().bool_val(<span class="keyword">true</span>));</div>
656
+ <div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a> : exeState.<a class="code" href="classSVF_1_1IntervalESBase.html#a903797577ba99ef57879774a3849bbfe">getVarToVal</a>())</div>
657
+ <div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; {</div>
658
+ <div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> interval = alpha.<a class="code" href="classSVF_1_1IntervalESBase.html#ad2288306aed7301ccd30e55410c7b428">_varToItvVal</a>.at(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first);</div>
659
+ <div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">if</span> (interval.<a class="code" href="classSVF_1_1IntervalValue.html#af8be90fc1b61103187908dce4ba68001">isBottom</a>())</div>
660
+ <div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1Z3Expr.html#acfdff582a0188678c10939165a40df30">Z3Expr::getContext</a>().bool_val(<span class="keyword">false</span>);</div>
661
+ <div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordflow">if</span> (interval.<a class="code" href="classSVF_1_1IntervalValue.html#a977128211266b93e58e298a7ac29a059">isTop</a>())</div>
662
+ <div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">continue</span>;</div>
663
+ <div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> v = <a class="code" href="classSVF_1_1RelationSolver.html#af621897ab66f6475d5ee043ef2e33623">toZ3Expr</a>(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first);</div>
664
+ <div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; res = (res &amp;&amp; v &gt;= (int)interval.<a class="code" href="classSVF_1_1IntervalValue.html#a0df07a2659cbf3a918de5b0d7c407264">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>() &amp;&amp;</div>
665
+ <div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; v &lt;= (int)interval.<a class="code" href="classSVF_1_1IntervalValue.html#adac2dc2c9f744a071ad3f0175ed40cd9">ub</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>()).simplify();</div>
666
+ <div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; }</div>
667
+ <div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">return</span> res;</div>
668
+ <div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;}</div>
667
669
  </div><!-- fragment -->
668
670
  </div>
669
671
  </div>
@@ -685,21 +687,21 @@ Public Member Functions</h2></td></tr>
685
687
 
686
688
  <p>Return <a class="el" href="classSVF_1_1Z3Expr.html">Z3Expr</a> according to valToValMap. </p>
687
689
 
688
- <p class="definition">Definition at line <a class="el" href="RelationSolver_8cpp_source.html#l00196">196</a> of file <a class="el" href="RelationSolver_8cpp_source.html">RelationSolver.cpp</a>.</p>
689
- <div class="fragment"><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;{</div>
690
- <div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> res(<a class="code" href="classSVF_1_1Z3Expr.html#acfdff582a0188678c10939165a40df30">Z3Expr::getContext</a>().bool_val(<span class="keyword">true</span>));</div>
691
- <div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a> : exeState.<a class="code" href="classSVF_1_1IntervalESBase.html#a903797577ba99ef57879774a3849bbfe">getVarToVal</a>())</div>
692
- <div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; {</div>
693
- <div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second.isBottom())</div>
694
- <div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1Z3Expr.html#acfdff582a0188678c10939165a40df30">Z3Expr::getContext</a>().bool_val(<span class="keyword">false</span>);</div>
695
- <div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second.isTop())</div>
696
- <div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">continue</span>;</div>
697
- <div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> v = <a class="code" href="classSVF_1_1RelationSolver.html#af621897ab66f6475d5ee043ef2e33623">toZ3Expr</a>(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first);</div>
698
- <div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; res = (res &amp;&amp; v &gt;= (int)<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second.lb().getNumeral() &amp;&amp;</div>
699
- <div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; v &lt;= (int)<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second.ub().getNumeral()).simplify();</div>
700
- <div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; }</div>
701
- <div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordflow">return</span> res;</div>
702
- <div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;}</div>
690
+ <p class="definition">Definition at line <a class="el" href="RelationSolver_8cpp_source.html#l00199">199</a> of file <a class="el" href="RelationSolver_8cpp_source.html">RelationSolver.cpp</a>.</p>
691
+ <div class="fragment"><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;{</div>
692
+ <div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> res(<a class="code" href="classSVF_1_1Z3Expr.html#acfdff582a0188678c10939165a40df30">Z3Expr::getContext</a>().bool_val(<span class="keyword">true</span>));</div>
693
+ <div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a> : exeState.<a class="code" href="classSVF_1_1IntervalESBase.html#a903797577ba99ef57879774a3849bbfe">getVarToVal</a>())</div>
694
+ <div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; {</div>
695
+ <div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second.isBottom())</div>
696
+ <div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1Z3Expr.html#acfdff582a0188678c10939165a40df30">Z3Expr::getContext</a>().bool_val(<span class="keyword">false</span>);</div>
697
+ <div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second.isTop())</div>
698
+ <div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">continue</span>;</div>
699
+ <div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> v = <a class="code" href="classSVF_1_1RelationSolver.html#af621897ab66f6475d5ee043ef2e33623">toZ3Expr</a>(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first);</div>
700
+ <div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; res = (res &amp;&amp; v &gt;= (int)<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second.lb().getNumeral() &amp;&amp;</div>
701
+ <div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; v &lt;= (int)<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second.ub().getNumeral()).simplify();</div>
702
+ <div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; }</div>
703
+ <div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">return</span> res;</div>
704
+ <div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;}</div>
703
705
  </div><!-- fragment -->
704
706
  </div>
705
707
  </div>
@@ -731,16 +733,16 @@ Public Member Functions</h2></td></tr>
731
733
 
732
734
  <p>Return <a class="el" href="classSVF_1_1Z3Expr.html">Z3Expr</a> from a NodeID. </p>
733
735
 
734
- <p class="definition">Definition at line <a class="el" href="RelationSolver_8cpp_source.html#l00230">230</a> of file <a class="el" href="RelationSolver_8cpp_source.html">RelationSolver.cpp</a>.</p>
735
- <div class="fragment"><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;{</div>
736
- <div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keyword">auto</span> it = exeState.<a class="code" href="classSVF_1_1IntervalESBase.html#a903797577ba99ef57879774a3849bbfe">getVarToVal</a>().find(<span class="keywordtype">id</span>);</div>
737
- <div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; assert(it != exeState.<a class="code" href="classSVF_1_1IntervalESBase.html#a903797577ba99ef57879774a3849bbfe">getVarToVal</a>().end() &amp;&amp; <span class="stringliteral">&quot;id not in varToVal?&quot;</span>);</div>
738
- <div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> v = <a class="code" href="classSVF_1_1RelationSolver.html#af621897ab66f6475d5ee043ef2e33623">toZ3Expr</a>(<span class="keywordtype">id</span>);</div>
739
- <div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="comment">// Z3Expr v = Z3Expr::getContext().int_const(std::to_string(id).c_str());</span></div>
740
- <div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> res = (v &gt;= (int)it-&gt;second.lb().getNumeral() &amp;&amp;</div>
741
- <div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; v &lt;= (int)it-&gt;second.ub().getNumeral());</div>
742
- <div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">return</span> res;</div>
743
- <div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;}</div>
736
+ <p class="definition">Definition at line <a class="el" href="RelationSolver_8cpp_source.html#l00233">233</a> of file <a class="el" href="RelationSolver_8cpp_source.html">RelationSolver.cpp</a>.</p>
737
+ <div class="fragment"><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;{</div>
738
+ <div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keyword">auto</span> it = exeState.<a class="code" href="classSVF_1_1IntervalESBase.html#a903797577ba99ef57879774a3849bbfe">getVarToVal</a>().find(<span class="keywordtype">id</span>);</div>
739
+ <div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; assert(it != exeState.<a class="code" href="classSVF_1_1IntervalESBase.html#a903797577ba99ef57879774a3849bbfe">getVarToVal</a>().end() &amp;&amp; <span class="stringliteral">&quot;id not in varToVal?&quot;</span>);</div>
740
+ <div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> v = <a class="code" href="classSVF_1_1RelationSolver.html#af621897ab66f6475d5ee043ef2e33623">toZ3Expr</a>(<span class="keywordtype">id</span>);</div>
741
+ <div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="comment">// Z3Expr v = Z3Expr::getContext().int_const(std::to_string(id).c_str());</span></div>
742
+ <div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> res = (v &gt;= (int)it-&gt;second.lb().getNumeral() &amp;&amp;</div>
743
+ <div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; v &lt;= (int)it-&gt;second.ub().getNumeral());</div>
744
+ <div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">return</span> res;</div>
745
+ <div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;}</div>
744
746
  </div><!-- fragment -->
745
747
  </div>
746
748
  </div>
@@ -774,58 +776,58 @@ Public Member Functions</h2></td></tr>
774
776
  <p>unknown or unsat</p>
775
777
  <p>for timeout reason return upper</p>
776
778
 
777
- <p class="definition">Definition at line <a class="el" href="RelationSolver_8cpp_source.html#l00111">111</a> of file <a class="el" href="RelationSolver_8cpp_source.html">RelationSolver.cpp</a>.</p>
778
- <div class="fragment"><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;{</div>
779
- <div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <a class="code" href="classSVF_1_1IntervalESBase.html">IntervalESBase</a> lower = domain.<a class="code" href="classSVF_1_1IntervalESBase.html#a839e8ee927c1cad86aef3059b41ba2eb">bottom</a>();</div>
780
- <div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; z3::solver&amp; solver = <a class="code" href="classSVF_1_1Z3Expr.html#a16721e960145864d0835eb95f2ae4681">Z3Expr::getSolver</a>();</div>
781
- <div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; z3::params <a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a>(<a class="code" href="classSVF_1_1Z3Expr.html#acfdff582a0188678c10939165a40df30">Z3Expr::getContext</a>());</div>
782
- <div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a>.set(<span class="stringliteral">&quot;:timeout&quot;</span>, <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(600)); <span class="comment">// in milliseconds</span></div>
783
- <div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; solver.set(<a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a>);</div>
784
- <div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">while</span> (1)</div>
785
- <div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; {</div>
786
- <div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> rhs = !(<a class="code" href="classSVF_1_1RelationSolver.html#af860063ccaeca043bac84eb9eb2cf80a">gamma_hat</a>(lower, domain));</div>
787
- <div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; solver.push();</div>
788
- <div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; solver.add(phi.<a class="code" href="classSVF_1_1Z3Expr.html#a57c199ba2c3c6a6d44a86e0b1429be55">getExpr</a>() &amp;&amp; rhs.<a class="code" href="classSVF_1_1Z3Expr.html#a57c199ba2c3c6a6d44a86e0b1429be55">getExpr</a>());</div>
789
- <div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;u32_t, double&gt;</a> solution;</div>
790
- <div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; z3::check_result checkRes = solver.check();</div>
791
- <div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">if</span> (checkRes == z3::sat)</div>
792
- <div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; {</div>
793
- <div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; z3::model m = solver.get_model();</div>
794
- <div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> i = 0; i &lt; m.size(); i++)</div>
795
- <div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; {</div>
796
- <div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; z3::func_decl v = m[i];</div>
797
- <div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">if</span> (v.arity() != 0)</div>
798
- <div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">continue</span>;</div>
799
- <div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; </div>
800
- <div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; solution.emplace(std::stoi(v.name().str()),</div>
801
- <div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; m.get_const_interp(v).get_numeral_int());</div>
802
- <div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; }</div>
803
- <div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a> : domain.<a class="code" href="classSVF_1_1IntervalESBase.html#a903797577ba99ef57879774a3849bbfe">getVarToVal</a>())</div>
804
- <div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; {</div>
805
- <div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">if</span> (solution.find(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first) == solution.end())</div>
806
- <div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; {</div>
807
- <div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; solution.emplace(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first, 0);</div>
808
- <div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; }</div>
809
- <div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; }</div>
810
- <div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; solver.pop();</div>
811
- <div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <a class="code" href="classSVF_1_1IntervalESBase.html">IntervalESBase</a> newLower = domain.<a class="code" href="classSVF_1_1IntervalESBase.html#a839e8ee927c1cad86aef3059b41ba2eb">bottom</a>();</div>
812
- <div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; newLower.<a class="code" href="classSVF_1_1IntervalESBase.html#adc0db607e4c0f117760535df67b91fbd">joinWith</a>(lower);</div>
813
- <div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; newLower.<a class="code" href="classSVF_1_1IntervalESBase.html#adc0db607e4c0f117760535df67b91fbd">joinWith</a>(<a class="code" href="classSVF_1_1RelationSolver.html#af0c2db68bffbb223b845ca307b86c10a">beta</a>(solution, domain));</div>
814
- <div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; lower = newLower;</div>
815
- <div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; }</div>
816
- <div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">else</span> </div>
817
- <div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; {</div>
818
- <div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; solver.pop();</div>
819
- <div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">if</span> (checkRes == z3::unknown)</div>
820
- <div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; {</div>
821
- <div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">if</span> (solver.reason_unknown() == <span class="stringliteral">&quot;timeout&quot;</span>)</div>
822
- <div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">return</span> domain.<a class="code" href="classSVF_1_1IntervalESBase.html#a33fd0e4a654dd4f5b7762b0088e11674">top</a>();</div>
823
- <div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; }</div>
824
- <div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">break</span>;</div>
825
- <div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; }</div>
826
- <div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; }</div>
827
- <div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">return</span> lower;</div>
828
- <div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;}</div>
779
+ <p class="definition">Definition at line <a class="el" href="RelationSolver_8cpp_source.html#l00114">114</a> of file <a class="el" href="RelationSolver_8cpp_source.html">RelationSolver.cpp</a>.</p>
780
+ <div class="fragment"><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;{</div>
781
+ <div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <a class="code" href="classSVF_1_1IntervalESBase.html">IntervalESBase</a> lower = domain.<a class="code" href="classSVF_1_1IntervalESBase.html#a839e8ee927c1cad86aef3059b41ba2eb">bottom</a>();</div>
782
+ <div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; z3::solver&amp; solver = <a class="code" href="classSVF_1_1Z3Expr.html#a16721e960145864d0835eb95f2ae4681">Z3Expr::getSolver</a>();</div>
783
+ <div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; z3::params <a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a>(<a class="code" href="classSVF_1_1Z3Expr.html#acfdff582a0188678c10939165a40df30">Z3Expr::getContext</a>());</div>
784
+ <div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a>.set(<span class="stringliteral">&quot;:timeout&quot;</span>, <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(600)); <span class="comment">// in milliseconds</span></div>
785
+ <div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; solver.set(<a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a>);</div>
786
+ <div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">while</span> (1)</div>
787
+ <div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; {</div>
788
+ <div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> rhs = !(<a class="code" href="classSVF_1_1RelationSolver.html#af860063ccaeca043bac84eb9eb2cf80a">gamma_hat</a>(lower, domain));</div>
789
+ <div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; solver.push();</div>
790
+ <div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; solver.add(phi.<a class="code" href="classSVF_1_1Z3Expr.html#a57c199ba2c3c6a6d44a86e0b1429be55">getExpr</a>() &amp;&amp; rhs.<a class="code" href="classSVF_1_1Z3Expr.html#a57c199ba2c3c6a6d44a86e0b1429be55">getExpr</a>());</div>
791
+ <div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;u32_t, s32_t&gt;</a> solution;</div>
792
+ <div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; z3::check_result checkRes = solver.check();</div>
793
+ <div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">if</span> (checkRes == z3::sat)</div>
794
+ <div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; {</div>
795
+ <div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; z3::model m = solver.get_model();</div>
796
+ <div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> i = 0; i &lt; m.size(); i++)</div>
797
+ <div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; {</div>
798
+ <div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; z3::func_decl v = m[i];</div>
799
+ <div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">if</span> (v.arity() != 0)</div>
800
+ <div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">continue</span>;</div>
801
+ <div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; </div>
802
+ <div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; solution.emplace(std::stoi(v.name().str()),</div>
803
+ <div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; m.get_const_interp(v).get_numeral_int());</div>
804
+ <div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; }</div>
805
+ <div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a> : domain.<a class="code" href="classSVF_1_1IntervalESBase.html#a903797577ba99ef57879774a3849bbfe">getVarToVal</a>())</div>
806
+ <div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; {</div>
807
+ <div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">if</span> (solution.find(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first) == solution.end())</div>
808
+ <div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; {</div>
809
+ <div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; solution.emplace(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first, 0);</div>
810
+ <div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; }</div>
811
+ <div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; }</div>
812
+ <div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; solver.pop();</div>
813
+ <div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <a class="code" href="classSVF_1_1IntervalESBase.html">IntervalESBase</a> newLower = domain.<a class="code" href="classSVF_1_1IntervalESBase.html#a839e8ee927c1cad86aef3059b41ba2eb">bottom</a>();</div>
814
+ <div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; newLower.<a class="code" href="classSVF_1_1IntervalESBase.html#adc0db607e4c0f117760535df67b91fbd">joinWith</a>(lower);</div>
815
+ <div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; newLower.<a class="code" href="classSVF_1_1IntervalESBase.html#adc0db607e4c0f117760535df67b91fbd">joinWith</a>(<a class="code" href="classSVF_1_1RelationSolver.html#ac4abc5e1eb3b638710572c958162c22c">beta</a>(solution, domain));</div>
816
+ <div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; lower = newLower;</div>
817
+ <div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; }</div>
818
+ <div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">else</span> </div>
819
+ <div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; {</div>
820
+ <div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; solver.pop();</div>
821
+ <div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">if</span> (checkRes == z3::unknown)</div>
822
+ <div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; {</div>
823
+ <div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">if</span> (solver.reason_unknown() == <span class="stringliteral">&quot;timeout&quot;</span>)</div>
824
+ <div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">return</span> domain.<a class="code" href="classSVF_1_1IntervalESBase.html#a33fd0e4a654dd4f5b7762b0088e11674">top</a>();</div>
825
+ <div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; }</div>
826
+ <div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">break</span>;</div>
827
+ <div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; }</div>
828
+ <div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; }</div>
829
+ <div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">return</span> lower;</div>
830
+ <div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;}</div>
829
831
  </div><!-- fragment -->
830
832
  </div>
831
833
  </div>
@@ -894,18 +896,18 @@ Public Member Functions</h2></td></tr>
894
896
  </table>
895
897
  </div><div class="memdoc">
896
898
 
897
- <p class="definition">Definition at line <a class="el" href="RelationSolver_8cpp_source.html#l00253">253</a> of file <a class="el" href="RelationSolver_8cpp_source.html">RelationSolver.cpp</a>.</p>
898
- <div class="fragment"><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;{</div>
899
- <div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keyword">auto</span> it = map.find(key);</div>
900
- <div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">if</span> (it == map.end())</div>
901
- <div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; {</div>
902
- <div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; map.emplace(key, value);</div>
903
- <div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; }</div>
904
- <div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">else</span></div>
905
- <div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; {</div>
906
- <div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; it-&gt;second = value;</div>
907
- <div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; }</div>
908
- <div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;}</div>
899
+ <p class="definition">Definition at line <a class="el" href="RelationSolver_8cpp_source.html#l00256">256</a> of file <a class="el" href="RelationSolver_8cpp_source.html">RelationSolver.cpp</a>.</p>
900
+ <div class="fragment"><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;{</div>
901
+ <div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keyword">auto</span> it = map.find(key);</div>
902
+ <div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordflow">if</span> (it == map.end())</div>
903
+ <div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; {</div>
904
+ <div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; map.emplace(key, value);</div>
905
+ <div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; }</div>
906
+ <div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">else</span></div>
907
+ <div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; {</div>
908
+ <div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; it-&gt;second = value;</div>
909
+ <div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; }</div>
910
+ <div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;}</div>
909
911
  </div><!-- fragment -->
910
912
  </div>
911
913
  </div>
@@ -916,32 +918,34 @@ Public Member Functions</h2></td></tr>
916
918
  </div><!-- contents -->
917
919
  <div class="ttc" id="aCommandLine_8h_html_a2429346d37bd4c40889bd7c6d319d9da"><div class="ttname"><a href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="CommandLine_8h_source.html#l00018">CommandLine.h:18</a></div></div>
918
920
  <div class="ttc" id="acJSON_8cpp_html_a009ef1d888ab6dbe77e6b42b0b39f1ae"><div class="ttname"><a href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a></div><div class="ttdeci">cJSON * p</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02559">cJSON.cpp:2559</a></div></div>
919
- <div class="ttc" id="aclassSVF_1_1Z3Expr_html_a57c199ba2c3c6a6d44a86e0b1429be55"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#a57c199ba2c3c6a6d44a86e0b1429be55">SVF::Z3Expr::getExpr</a></div><div class="ttdeci">const z3::expr &amp; getExpr() const</div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8h_source.html#l00079">Z3Expr.h:79</a></div></div>
920
- <div class="ttc" id="aclassSVF_1_1IntervalValue_html_a0df07a2659cbf3a918de5b0d7c407264"><div class="ttname"><a href="classSVF_1_1IntervalValue.html#a0df07a2659cbf3a918de5b0d7c407264">SVF::IntervalValue::lb</a></div><div class="ttdeci">const NumericLiteral &amp; lb() const</div><div class="ttdoc">Return the lower bound.</div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00218">IntervalValue.h:218</a></div></div>
921
+ <div class="ttc" id="aclassSVF_1_1Z3Expr_html_a57c199ba2c3c6a6d44a86e0b1429be55"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#a57c199ba2c3c6a6d44a86e0b1429be55">SVF::Z3Expr::getExpr</a></div><div class="ttdeci">const z3::expr &amp; getExpr() const</div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8h_source.html#l00086">Z3Expr.h:86</a></div></div>
922
+ <div class="ttc" id="aclassSVF_1_1IntervalValue_html_a0df07a2659cbf3a918de5b0d7c407264"><div class="ttname"><a href="classSVF_1_1IntervalValue.html#a0df07a2659cbf3a918de5b0d7c407264">SVF::IntervalValue::lb</a></div><div class="ttdeci">const NumericLiteral &amp; lb() const</div><div class="ttdoc">Return the lower bound.</div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00220">IntervalValue.h:220</a></div></div>
921
923
  <div class="ttc" id="aclassSVF_1_1Z3Expr_html_acfdff582a0188678c10939165a40df30"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#acfdff582a0188678c10939165a40df30">SVF::Z3Expr::getContext</a></div><div class="ttdeci">static z3::context &amp; getContext()</div><div class="ttdoc">Get z3 context, singleton design here to make sure we only have one context.</div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8cpp_source.html#l00066">Z3Expr.cpp:66</a></div></div>
922
- <div class="ttc" id="aclassSVF_1_1RelationSolver_html_aaae7ac9ed7d0e17f39948c37b867ada9"><div class="ttname"><a href="classSVF_1_1RelationSolver.html#aaae7ac9ed7d0e17f39948c37b867ada9">SVF::RelationSolver::BoxedOptSolver</a></div><div class="ttdeci">Map&lt; u32_t, NumericLiteral &gt; BoxedOptSolver(const Z3Expr &amp;phi, Map&lt; u32_t, NumericLiteral &gt; &amp;ret, Map&lt; u32_t, NumericLiteral &gt; &amp;low_values, Map&lt; u32_t, NumericLiteral &gt; &amp;high_values)</div><div class="ttdef"><b>Definition:</b> <a href="RelationSolver_8cpp_source.html#l00331">RelationSolver.cpp:331</a></div></div>
924
+ <div class="ttc" id="aclassSVF_1_1RelationSolver_html_aaae7ac9ed7d0e17f39948c37b867ada9"><div class="ttname"><a href="classSVF_1_1RelationSolver.html#aaae7ac9ed7d0e17f39948c37b867ada9">SVF::RelationSolver::BoxedOptSolver</a></div><div class="ttdeci">Map&lt; u32_t, NumericLiteral &gt; BoxedOptSolver(const Z3Expr &amp;phi, Map&lt; u32_t, NumericLiteral &gt; &amp;ret, Map&lt; u32_t, NumericLiteral &gt; &amp;low_values, Map&lt; u32_t, NumericLiteral &gt; &amp;high_values)</div><div class="ttdef"><b>Definition:</b> <a href="RelationSolver_8cpp_source.html#l00336">RelationSolver.cpp:336</a></div></div>
923
925
  <div class="ttc" id="aclassSVF_1_1IntervalValue_html_af8be90fc1b61103187908dce4ba68001"><div class="ttname"><a href="classSVF_1_1IntervalValue.html#af8be90fc1b61103187908dce4ba68001">SVF::IntervalValue::isBottom</a></div><div class="ttdeci">bool isBottom() const override</div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00060">IntervalValue.h:60</a></div></div>
924
- <div class="ttc" id="aclassSVF_1_1RelationSolver_html_a7ace50c6e53a79f0e329badb63570f92"><div class="ttname"><a href="classSVF_1_1RelationSolver.html#a7ace50c6e53a79f0e329badb63570f92">SVF::RelationSolver::decide_cpa_ext</a></div><div class="ttdeci">void decide_cpa_ext(const Z3Expr &amp;phi, Map&lt; u32_t, Z3Expr &gt; &amp;, Map&lt; u32_t, NumericLiteral &gt; &amp;, Map&lt; u32_t, NumericLiteral &gt; &amp;, Map&lt; u32_t, NumericLiteral &gt; &amp;, Map&lt; u32_t, NumericLiteral &gt; &amp;)</div><div class="ttdef"><b>Definition:</b> <a href="RelationSolver_8cpp_source.html#l00359">RelationSolver.cpp:359</a></div></div>
926
+ <div class="ttc" id="aclassSVF_1_1RelationSolver_html_a7ace50c6e53a79f0e329badb63570f92"><div class="ttname"><a href="classSVF_1_1RelationSolver.html#a7ace50c6e53a79f0e329badb63570f92">SVF::RelationSolver::decide_cpa_ext</a></div><div class="ttdeci">void decide_cpa_ext(const Z3Expr &amp;phi, Map&lt; u32_t, Z3Expr &gt; &amp;, Map&lt; u32_t, NumericLiteral &gt; &amp;, Map&lt; u32_t, NumericLiteral &gt; &amp;, Map&lt; u32_t, NumericLiteral &gt; &amp;, Map&lt; u32_t, NumericLiteral &gt; &amp;)</div><div class="ttdef"><b>Definition:</b> <a href="RelationSolver_8cpp_source.html#l00364">RelationSolver.cpp:364</a></div></div>
925
927
  <div class="ttc" id="aclassSVF_1_1Z3Expr_html"><div class="ttname"><a href="classSVF_1_1Z3Expr.html">SVF::Z3Expr</a></div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8h_source.html#l00038">Z3Expr.h:38</a></div></div>
926
- <div class="ttc" id="aclassSVF_1_1NumericLiteral_html_a4181e5e15e10304ea524e5f8b2a3f576"><div class="ttname"><a href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">SVF::NumericLiteral::getNumeral</a></div><div class="ttdeci">s64_t getNumeral() const</div><div class="ttdoc">Return Numeral.</div><div class="ttdef"><b>Definition:</b> <a href="NumericLiteral_8h_source.html#l00118">NumericLiteral.h:118</a></div></div>
928
+ <div class="ttc" id="aclassSVF_1_1NumericLiteral_html_a4181e5e15e10304ea524e5f8b2a3f576"><div class="ttname"><a href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">SVF::NumericLiteral::getNumeral</a></div><div class="ttdeci">s64_t getNumeral() const</div><div class="ttdoc">Return Numeral, default type is double in case to support both int and float.</div><div class="ttdef"><b>Definition:</b> <a href="NumericLiteral_8h_source.html#l00132">NumericLiteral.h:132</a></div></div>
927
929
  <div class="ttc" id="aclassSVF_1_1IntervalESBase_html"><div class="ttname"><a href="classSVF_1_1IntervalESBase.html">SVF::IntervalESBase</a></div><div class="ttdef"><b>Definition:</b> <a href="IntervalExeState_8h_source.html#l00054">IntervalExeState.h:54</a></div></div>
928
- <div class="ttc" id="aclassSVF_1_1RelationSolver_html_af860063ccaeca043bac84eb9eb2cf80a"><div class="ttname"><a href="classSVF_1_1RelationSolver.html#af860063ccaeca043bac84eb9eb2cf80a">SVF::RelationSolver::gamma_hat</a></div><div class="ttdeci">Z3Expr gamma_hat(const IntervalESBase &amp;exeState) const</div><div class="ttdoc">Return Z3Expr according to valToValMap.</div><div class="ttdef"><b>Definition:</b> <a href="RelationSolver_8cpp_source.html#l00196">RelationSolver.cpp:196</a></div></div>
930
+ <div class="ttc" id="aclassSVF_1_1RelationSolver_html_af860063ccaeca043bac84eb9eb2cf80a"><div class="ttname"><a href="classSVF_1_1RelationSolver.html#af860063ccaeca043bac84eb9eb2cf80a">SVF::RelationSolver::gamma_hat</a></div><div class="ttdeci">Z3Expr gamma_hat(const IntervalESBase &amp;exeState) const</div><div class="ttdoc">Return Z3Expr according to valToValMap.</div><div class="ttdef"><b>Definition:</b> <a href="RelationSolver_8cpp_source.html#l00199">RelationSolver.cpp:199</a></div></div>
929
931
  <div class="ttc" id="aclassSVF_1_1RelationSolver_html_af621897ab66f6475d5ee043ef2e33623"><div class="ttname"><a href="classSVF_1_1RelationSolver.html#af621897ab66f6475d5ee043ef2e33623">SVF::RelationSolver::toZ3Expr</a></div><div class="ttdeci">virtual Z3Expr toZ3Expr(u32_t varId) const</div><div class="ttdoc">Return Z3 expression lazily based on SVFVar ID.</div><div class="ttdef"><b>Definition:</b> <a href="RelationSolver_8h_source.html#l00061">RelationSolver.h:61</a></div></div>
930
- <div class="ttc" id="aclassSVF_1_1IntervalValue_html_adac2dc2c9f744a071ad3f0175ed40cd9"><div class="ttname"><a href="classSVF_1_1IntervalValue.html#adac2dc2c9f744a071ad3f0175ed40cd9">SVF::IntervalValue::ub</a></div><div class="ttdeci">const NumericLiteral &amp; ub() const</div><div class="ttdoc">Return the upper bound.</div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00225">IntervalValue.h:225</a></div></div>
932
+ <div class="ttc" id="aclassSVF_1_1IntervalValue_html_adac2dc2c9f744a071ad3f0175ed40cd9"><div class="ttname"><a href="classSVF_1_1IntervalValue.html#adac2dc2c9f744a071ad3f0175ed40cd9">SVF::IntervalValue::ub</a></div><div class="ttdeci">const NumericLiteral &amp; ub() const</div><div class="ttdoc">Return the upper bound.</div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00227">IntervalValue.h:227</a></div></div>
931
933
  <div class="ttc" id="aclassSVF_1_1IntervalESBase_html_a92a8531c7f12cc6f9117596aa5e534b6"><div class="ttname"><a href="classSVF_1_1IntervalESBase.html#a92a8531c7f12cc6f9117596aa5e534b6">SVF::IntervalESBase::meetWith</a></div><div class="ttdeci">void meetWith(const IntervalESBase &amp;other)</div><div class="ttdoc">domain meet with other, important! other widen this.</div><div class="ttdef"><b>Definition:</b> <a href="IntervalExeState_8cpp_source.html#l00164">IntervalExeState.cpp:164</a></div></div>
932
934
  <div class="ttc" id="aclassSVF_1_1IntervalESBase_html_ad2288306aed7301ccd30e55410c7b428"><div class="ttname"><a href="classSVF_1_1IntervalESBase.html#ad2288306aed7301ccd30e55410c7b428">SVF::IntervalESBase::_varToItvVal</a></div><div class="ttdeci">VarToValMap _varToItvVal</div><div class="ttdoc">Map a variable (symbol) to its interval value.</div><div class="ttdef"><b>Definition:</b> <a href="IntervalExeState_8h_source.html#l00147">IntervalExeState.h:147</a></div></div>
933
935
  <div class="ttc" id="aclassSVF_1_1IntervalValue_html"><div class="ttname"><a href="classSVF_1_1IntervalValue.html">SVF::IntervalValue</a></div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00043">IntervalValue.h:43</a></div></div>
934
- <div class="ttc" id="aclassSVF_1_1RelationSolver_html_af0c2db68bffbb223b845ca307b86c10a"><div class="ttname"><a href="classSVF_1_1RelationSolver.html#af0c2db68bffbb223b845ca307b86c10a">SVF::RelationSolver::beta</a></div><div class="ttdeci">IntervalESBase beta(const Map&lt; u32_t, double &gt; &amp;sigma, const IntervalESBase &amp;exeState) const</div><div class="ttdef"><b>Definition:</b> <a href="RelationSolver_8cpp_source.html#l00241">RelationSolver.cpp:241</a></div></div>
935
- <div class="ttc" id="aclassSVF_1_1RelationSolver_html_af00aee55faf18a994dc5558ca4bf4932"><div class="ttname"><a href="classSVF_1_1RelationSolver.html#af00aee55faf18a994dc5558ca4bf4932">SVF::RelationSolver::updateMap</a></div><div class="ttdeci">void updateMap(Map&lt; u32_t, NumericLiteral &gt; &amp;map, u32_t key, const NumericLiteral &amp;value)</div><div class="ttdef"><b>Definition:</b> <a href="RelationSolver_8cpp_source.html#l00253">RelationSolver.cpp:253</a></div></div>
936
+ <div class="ttc" id="anamespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="GeneralType_8h_source.html#l00047">GeneralType.h:47</a></div></div>
937
+ <div class="ttc" id="aclassSVF_1_1RelationSolver_html_af00aee55faf18a994dc5558ca4bf4932"><div class="ttname"><a href="classSVF_1_1RelationSolver.html#af00aee55faf18a994dc5558ca4bf4932">SVF::RelationSolver::updateMap</a></div><div class="ttdeci">void updateMap(Map&lt; u32_t, NumericLiteral &gt; &amp;map, u32_t key, const NumericLiteral &amp;value)</div><div class="ttdef"><b>Definition:</b> <a href="RelationSolver_8cpp_source.html#l00256">RelationSolver.cpp:256</a></div></div>
936
938
  <div class="ttc" id="aclassSVF_1_1IntervalESBase_html_a839e8ee927c1cad86aef3059b41ba2eb"><div class="ttname"><a href="classSVF_1_1IntervalESBase.html#a839e8ee927c1cad86aef3059b41ba2eb">SVF::IntervalESBase::bottom</a></div><div class="ttdeci">IntervalESBase bottom() const</div><div class="ttdoc">Set all value bottom.</div><div class="ttdef"><b>Definition:</b> <a href="IntervalExeState_8h_source.html#l00113">IntervalExeState.h:113</a></div></div>
937
- <div class="ttc" id="aclassSVF_1_1Z3Expr_html_afb3478316592a395c6d473791b5a0981"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#afb3478316592a395c6d473791b5a0981">SVF::Z3Expr::simplify</a></div><div class="ttdeci">Z3Expr simplify() const</div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8h_source.html#l00130">Z3Expr.h:130</a></div></div>
939
+ <div class="ttc" id="aclassSVF_1_1Z3Expr_html_afb3478316592a395c6d473791b5a0981"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#afb3478316592a395c6d473791b5a0981">SVF::Z3Expr::simplify</a></div><div class="ttdeci">Z3Expr simplify() const</div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8h_source.html#l00137">Z3Expr.h:137</a></div></div>
938
940
  <div class="ttc" id="acJSON_8h_html_ac76cea59d438ba893d2f82aabb367d14"><div class="ttname"><a href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a></div><div class="ttdeci">cJSON * item</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00222">cJSON.h:222</a></div></div>
939
941
  <div class="ttc" id="aclassSVF_1_1IntervalValue_html_a977128211266b93e58e298a7ac29a059"><div class="ttname"><a href="classSVF_1_1IntervalValue.html#a977128211266b93e58e298a7ac29a059">SVF::IntervalValue::isTop</a></div><div class="ttdeci">bool isTop() const override</div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00055">IntervalValue.h:55</a></div></div>
940
942
  <div class="ttc" id="aclassSVF_1_1NumericLiteral_html"><div class="ttname"><a href="classSVF_1_1NumericLiteral.html">SVF::NumericLiteral</a></div><div class="ttdef"><b>Definition:</b> <a href="NumericLiteral_8h_source.html#l00038">NumericLiteral.h:38</a></div></div>
941
943
  <div class="ttc" id="aclassSVF_1_1IntervalESBase_html_a903797577ba99ef57879774a3849bbfe"><div class="ttname"><a href="classSVF_1_1IntervalESBase.html#a903797577ba99ef57879774a3849bbfe">SVF::IntervalESBase::getVarToVal</a></div><div class="ttdeci">const VarToValMap &amp; getVarToVal() const</div><div class="ttdoc">get var2val map</div><div class="ttdef"><b>Definition:</b> <a href="IntervalExeState_8h_source.html#l00189">IntervalExeState.h:189</a></div></div>
942
- <div class="ttc" id="anamespaceSVF_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="GeneralType_8h_source.html#l00097">GeneralType.h:97</a></div></div>
943
- <div class="ttc" id="aclassSVF_1_1RelationSolver_html_a012d18ece2c66ba6e784ae9578171369"><div class="ttname"><a href="classSVF_1_1RelationSolver.html#a012d18ece2c66ba6e784ae9578171369">SVF::RelationSolver::abstract_consequence</a></div><div class="ttdeci">IntervalESBase abstract_consequence(const IntervalESBase &amp;lower, const IntervalESBase &amp;upper, const IntervalESBase &amp;domain) const</div><div class="ttdef"><b>Definition:</b> <a href="RelationSolver_8cpp_source.html#l00167">RelationSolver.cpp:167</a></div></div>
944
+ <div class="ttc" id="aclassSVF_1_1RelationSolver_html_ac4abc5e1eb3b638710572c958162c22c"><div class="ttname"><a href="classSVF_1_1RelationSolver.html#ac4abc5e1eb3b638710572c958162c22c">SVF::RelationSolver::beta</a></div><div class="ttdeci">IntervalESBase beta(const Map&lt; u32_t, s32_t &gt; &amp;sigma, const IntervalESBase &amp;exeState) const</div><div class="ttdef"><b>Definition:</b> <a href="RelationSolver_8cpp_source.html#l00244">RelationSolver.cpp:244</a></div></div>
945
+ <div class="ttc" id="anamespaceSVF_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="GeneralType_8h_source.html#l00101">GeneralType.h:101</a></div></div>
946
+ <div class="ttc" id="aclassSVF_1_1RelationSolver_html_a012d18ece2c66ba6e784ae9578171369"><div class="ttname"><a href="classSVF_1_1RelationSolver.html#a012d18ece2c66ba6e784ae9578171369">SVF::RelationSolver::abstract_consequence</a></div><div class="ttdeci">IntervalESBase abstract_consequence(const IntervalESBase &amp;lower, const IntervalESBase &amp;upper, const IntervalESBase &amp;domain) const</div><div class="ttdef"><b>Definition:</b> <a href="RelationSolver_8cpp_source.html#l00170">RelationSolver.cpp:170</a></div></div>
944
947
  <div class="ttc" id="aclassSVF_1_1IntervalESBase_html_a33fd0e4a654dd4f5b7762b0088e11674"><div class="ttname"><a href="classSVF_1_1IntervalESBase.html#a33fd0e4a654dd4f5b7762b0088e11674">SVF::IntervalESBase::top</a></div><div class="ttdeci">IntervalESBase top() const</div><div class="ttdoc">Set all value top.</div><div class="ttdef"><b>Definition:</b> <a href="IntervalExeState_8h_source.html#l00124">IntervalExeState.h:124</a></div></div>
948
+ <div class="ttc" id="aclassSVF_1_1NumericLiteral_html_ac2994e13c3572b114c57a9bb4f155d67"><div class="ttname"><a href="classSVF_1_1NumericLiteral.html#ac2994e13c3572b114c57a9bb4f155d67">SVF::NumericLiteral::getExpr</a></div><div class="ttdeci">Z3Expr getExpr() const</div><div class="ttdoc">Return Expr.</div><div class="ttdef"><b>Definition:</b> <a href="NumericLiteral_8h_source.html#l00138">NumericLiteral.h:138</a></div></div>
945
949
  <div class="ttc" id="aclassSVF_1_1IntervalESBase_html_adc0db607e4c0f117760535df67b91fbd"><div class="ttname"><a href="classSVF_1_1IntervalESBase.html#adc0db607e4c0f117760535df67b91fbd">SVF::IntervalESBase::joinWith</a></div><div class="ttdeci">void joinWith(const IntervalESBase &amp;other)</div><div class="ttdoc">domain join with other, important! other widen this.</div><div class="ttdef"><b>Definition:</b> <a href="IntervalExeState_8cpp_source.html#l00113">IntervalExeState.cpp:113</a></div></div>
946
950
  <div class="ttc" id="aclassSVF_1_1Z3Expr_html_a16721e960145864d0835eb95f2ae4681"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#a16721e960145864d0835eb95f2ae4681">SVF::Z3Expr::getSolver</a></div><div class="ttdeci">static z3::solver &amp; getSolver()</div><div class="ttdoc">Get z3 solver, singleton design here to make sure we only have one context.</div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8cpp_source.html#l00056">Z3Expr.cpp:56</a></div></div>
947
951
  <!-- start footer part -->