svf-tools 1.0.905 → 1.0.907
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.
- package/SVF-doxygen/html/AbstractInterpretation_8cpp.html +217 -0
- package/SVF-doxygen/html/AbstractInterpretation_8cpp_source.html +2093 -0
- package/SVF-doxygen/html/AbstractInterpretation_8h.html +115 -0
- package/SVF-doxygen/html/AbstractInterpretation_8h_source.html +459 -0
- package/SVF-doxygen/html/AbstractState_8cpp.html +84 -0
- package/SVF-doxygen/html/AbstractState_8cpp_source.html +461 -0
- package/SVF-doxygen/html/AbstractState_8h.html +105 -0
- package/SVF-doxygen/html/AbstractState_8h_source.html +891 -0
- package/SVF-doxygen/html/AbstractValue_8h.html +3 -3
- package/SVF-doxygen/html/AbstractValue_8h_source.html +652 -62
- package/SVF-doxygen/html/AddressValue_8h.html +4 -4
- package/SVF-doxygen/html/AddressValue_8h_source.html +180 -177
- package/SVF-doxygen/html/BufOverflowChecker_8cpp_source.html +782 -776
- package/SVF-doxygen/html/BufOverflowChecker_8h.html +1 -1
- package/SVF-doxygen/html/BufOverflowChecker_8h_source.html +19 -19
- package/SVF-doxygen/html/CFLGraph_8h_source.html +3 -3
- package/SVF-doxygen/html/CSC_8h_source.html +1 -1
- package/SVF-doxygen/html/ConsExeState_8cpp_source.html +1 -1
- package/SVF-doxygen/html/ConsExeState_8h_source.html +2 -2
- package/SVF-doxygen/html/ExeState_8cpp.html +1 -1
- package/SVF-doxygen/html/ExeState_8cpp_source.html +2 -2
- package/SVF-doxygen/html/ExeState_8h_source.html +8 -8
- package/SVF-doxygen/html/ICFGSimplification_8h.html +2 -2
- package/SVF-doxygen/html/ICFGSimplification_8h_source.html +17 -18
- package/SVF-doxygen/html/ICFG_8h_source.html +1 -1
- package/SVF-doxygen/html/IntervalValue_8h.html +2 -2
- package/SVF-doxygen/html/IntervalValue_8h_source.html +846 -864
- package/SVF-doxygen/html/LLVMModule_8cpp_source.html +1 -1
- package/SVF-doxygen/html/MSSAMuChi_8h_source.html +1 -1
- package/SVF-doxygen/html/MemRegion_8cpp_source.html +1 -1
- package/SVF-doxygen/html/ObjTypeInference_8cpp_source.html +1 -1
- package/SVF-doxygen/html/PointsTo_8cpp_source.html +3 -3
- package/SVF-doxygen/html/PointsTo_8h_source.html +3 -3
- package/SVF-doxygen/html/RelExeState_8h_source.html +5 -5
- package/SVF-doxygen/html/RelationSolver_8cpp_source.html +67 -68
- package/SVF-doxygen/html/RelationSolver_8h.html +1 -1
- package/SVF-doxygen/html/RelationSolver_8h_source.html +17 -17
- package/SVF-doxygen/html/SVFIR2AbsState_8cpp.html +84 -0
- package/SVF-doxygen/html/SVFIR2AbsState_8cpp_source.html +1348 -0
- package/SVF-doxygen/html/SVFIR2AbsState_8h.html +100 -0
- package/SVF-doxygen/html/SVFIR2AbsState_8h_source.html +378 -0
- package/SVF-doxygen/html/SVFIR2ConsExeState_8cpp_source.html +9 -8
- package/SVF-doxygen/html/SVFIR2ItvExeState_8cpp_source.html +920 -952
- package/SVF-doxygen/html/SVFIR2ItvExeState_8h.html +2 -3
- package/SVF-doxygen/html/SVFIR2ItvExeState_8h_source.html +202 -207
- package/SVF-doxygen/html/SVFIR2Relation_8cpp.html +1 -1
- package/SVF-doxygen/html/SVFIR2Relation_8cpp_source.html +76 -72
- package/SVF-doxygen/html/SVFType_8cpp_source.html +1 -1
- package/SVF-doxygen/html/SVFType_8h_source.html +1 -1
- package/SVF-doxygen/html/SVFValue_8h_source.html +1 -1
- package/SVF-doxygen/html/SparseBitVector_8h_source.html +3 -3
- package/SVF-doxygen/html/WorkList_8h_source.html +1 -1
- package/SVF-doxygen/html/ae_8cpp.html +57 -57
- package/SVF-doxygen/html/ae_8cpp_source.html +462 -466
- package/SVF-doxygen/html/annotated.html +409 -418
- package/SVF-doxygen/html/classSVF_1_1AEStat-members.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1AEStat.html +184 -190
- package/SVF-doxygen/html/classSVF_1_1AbstractInterpretation-members.html +161 -0
- package/SVF-doxygen/html/classSVF_1_1AbstractInterpretation.html +4325 -0
- package/SVF-doxygen/html/classSVF_1_1AbstractInterpretation.png +0 -0
- package/SVF-doxygen/html/classSVF_1_1AbstractState-members.html +134 -0
- package/SVF-doxygen/html/classSVF_1_1AbstractState.html +2166 -0
- package/SVF-doxygen/html/classSVF_1_1AbstractState.png +0 -0
- package/SVF-doxygen/html/classSVF_1_1AddressValue-members.html +15 -28
- package/SVF-doxygen/html/classSVF_1_1AddressValue.html +171 -230
- package/SVF-doxygen/html/classSVF_1_1BoundedZ3Expr.html +0 -1
- package/SVF-doxygen/html/classSVF_1_1BoundedZ3Expr.png +0 -0
- package/SVF-doxygen/html/classSVF_1_1BufOverflowChecker-members.html +73 -73
- package/SVF-doxygen/html/classSVF_1_1BufOverflowChecker.html +578 -574
- package/SVF-doxygen/html/classSVF_1_1BufOverflowChecker.png +0 -0
- package/SVF-doxygen/html/classSVF_1_1CFLNode-members.html +48 -49
- package/SVF-doxygen/html/classSVF_1_1CFLNode.html +25 -25
- package/SVF-doxygen/html/classSVF_1_1ConsExeState.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1ExeState.html +12 -14
- package/SVF-doxygen/html/classSVF_1_1ExeState.png +0 -0
- package/SVF-doxygen/html/classSVF_1_1FILOWorkList.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1GenericNode.html +22 -8
- package/SVF-doxygen/html/classSVF_1_1GenericNode.png +0 -0
- package/SVF-doxygen/html/classSVF_1_1ICFGSimplification.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1IntervalValue-members.html +50 -64
- package/SVF-doxygen/html/classSVF_1_1IntervalValue.html +349 -459
- package/SVF-doxygen/html/classSVF_1_1LLVMModuleSet.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1ObjTypeInference.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1RelExeState-members.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1RelExeState.html +8 -8
- package/SVF-doxygen/html/classSVF_1_1RelationSolver-members.html +8 -8
- package/SVF-doxygen/html/classSVF_1_1RelationSolver.html +106 -107
- package/SVF-doxygen/html/classSVF_1_1SVFIR2AbsState-members.html +141 -0
- package/SVF-doxygen/html/classSVF_1_1SVFIR2AbsState.html +3137 -0
- package/SVF-doxygen/html/classSVF_1_1SVFIR2ConsExeState.html +5 -5
- package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState-members.html +56 -57
- package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState.html +1128 -1178
- package/SVF-doxygen/html/classSVF_1_1SVFStat.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1SparseAbstractState-members.html +157 -0
- package/SVF-doxygen/html/classSVF_1_1SparseAbstractState.html +1512 -0
- package/SVF-doxygen/html/classSVF_1_1SparseAbstractState.png +0 -0
- package/SVF-doxygen/html/classSVF_1_1Z3Expr.html +0 -1
- package/SVF-doxygen/html/classSVF_1_1Z3Expr.png +0 -0
- package/SVF-doxygen/html/classSymblicAbstractionTest-members.html +3 -3
- package/SVF-doxygen/html/classSymblicAbstractionTest.html +400 -404
- package/SVF-doxygen/html/classes.html +326 -336
- package/SVF-doxygen/html/dir_2c6fb801affc4b3efe6e1ed5974683f6.html +2 -10
- package/SVF-doxygen/html/dir_81caa96ab1d3de93b353e2bbe80e6067.html +2 -4
- package/SVF-doxygen/html/dir_9a8e7a56f4029a0d9f62b1c6d1f6e85b.html +2 -8
- package/SVF-doxygen/html/dir_fbec400583b4bd6c5f2e89c86c5943a6.html +2 -4
- package/SVF-doxygen/html/fastcluster__dm_8cpp_8inc_source.html +1 -1
- package/SVF-doxygen/html/files.html +18 -27
- package/SVF-doxygen/html/functions.html +33 -56
- package/SVF-doxygen/html/functions_a.html +29 -42
- package/SVF-doxygen/html/functions_b.html +14 -21
- package/SVF-doxygen/html/functions_c.html +42 -52
- package/SVF-doxygen/html/functions_d.html +7 -4
- package/SVF-doxygen/html/functions_e.html +7 -21
- package/SVF-doxygen/html/functions_enum.html +4 -7
- package/SVF-doxygen/html/functions_eval.html +2 -2
- package/SVF-doxygen/html/functions_eval_c.html +0 -3
- package/SVF-doxygen/html/functions_eval_i.html +2 -3
- package/SVF-doxygen/html/functions_eval_m.html +2 -2
- package/SVF-doxygen/html/functions_eval_s.html +2 -5
- package/SVF-doxygen/html/functions_eval_u.html +4 -1
- package/SVF-doxygen/html/functions_f.html +6 -6
- package/SVF-doxygen/html/functions_func.html +24 -31
- package/SVF-doxygen/html/functions_func_b.html +10 -16
- package/SVF-doxygen/html/functions_func_c.html +30 -39
- package/SVF-doxygen/html/functions_func_d.html +1 -1
- package/SVF-doxygen/html/functions_func_e.html +7 -17
- package/SVF-doxygen/html/functions_func_g.html +61 -115
- package/SVF-doxygen/html/functions_func_h.html +22 -24
- package/SVF-doxygen/html/functions_func_i.html +64 -94
- package/SVF-doxygen/html/functions_func_j.html +4 -6
- package/SVF-doxygen/html/functions_func_l.html +9 -23
- package/SVF-doxygen/html/functions_func_m.html +7 -8
- package/SVF-doxygen/html/functions_func_n.html +8 -13
- package/SVF-doxygen/html/functions_func_o.html +57 -48
- package/SVF-doxygen/html/functions_func_p.html +6 -11
- package/SVF-doxygen/html/functions_func_r.html +4 -4
- package/SVF-doxygen/html/functions_func_s.html +35 -50
- package/SVF-doxygen/html/functions_func_t.html +26 -40
- package/SVF-doxygen/html/functions_func_u.html +6 -5
- package/SVF-doxygen/html/functions_func_v.html +2 -9
- package/SVF-doxygen/html/functions_func_w.html +9 -8
- package/SVF-doxygen/html/functions_func_z.html +1 -2
- package/SVF-doxygen/html/functions_func_~.html +10 -22
- package/SVF-doxygen/html/functions_g.html +61 -118
- package/SVF-doxygen/html/functions_h.html +21 -23
- package/SVF-doxygen/html/functions_i.html +76 -106
- package/SVF-doxygen/html/functions_j.html +4 -6
- package/SVF-doxygen/html/functions_k.html +0 -6
- package/SVF-doxygen/html/functions_l.html +11 -25
- package/SVF-doxygen/html/functions_m.html +8 -9
- package/SVF-doxygen/html/functions_n.html +14 -17
- package/SVF-doxygen/html/functions_o.html +71 -90
- package/SVF-doxygen/html/functions_p.html +31 -30
- package/SVF-doxygen/html/functions_r.html +11 -15
- package/SVF-doxygen/html/functions_rela.html +2 -3
- package/SVF-doxygen/html/functions_rela_b.html +0 -1
- package/SVF-doxygen/html/functions_rela_e.html +0 -1
- package/SVF-doxygen/html/functions_rela_i.html +0 -2
- package/SVF-doxygen/html/functions_rela_l.html +0 -1
- package/SVF-doxygen/html/functions_rela_o.html +0 -18
- package/SVF-doxygen/html/functions_rela_r.html +2 -2
- package/SVF-doxygen/html/functions_rela_s.html +4 -9
- package/SVF-doxygen/html/functions_s.html +45 -70
- package/SVF-doxygen/html/functions_t.html +29 -45
- package/SVF-doxygen/html/functions_type.html +0 -5
- package/SVF-doxygen/html/functions_type_c.html +1 -1
- package/SVF-doxygen/html/functions_type_k.html +0 -6
- package/SVF-doxygen/html/functions_type_l.html +4 -3
- package/SVF-doxygen/html/functions_type_t.html +0 -3
- package/SVF-doxygen/html/functions_type_v.html +3 -5
- package/SVF-doxygen/html/functions_u.html +8 -4
- package/SVF-doxygen/html/functions_v.html +11 -20
- package/SVF-doxygen/html/functions_vars.html +33 -56
- package/SVF-doxygen/html/functions_vars_a.html +3 -0
- package/SVF-doxygen/html/functions_vars_g.html +2 -5
- package/SVF-doxygen/html/functions_vars_i.html +3 -0
- package/SVF-doxygen/html/functions_vars_t.html +1 -0
- package/SVF-doxygen/html/functions_w.html +11 -10
- package/SVF-doxygen/html/functions_z.html +1 -2
- package/SVF-doxygen/html/functions_~.html +10 -22
- package/SVF-doxygen/html/globals.html +2 -2
- package/SVF-doxygen/html/globals_defs.html +1 -4
- package/SVF-doxygen/html/globals_n.html +2 -5
- package/SVF-doxygen/html/globals_s.html +1 -1
- package/SVF-doxygen/html/globals_vars.html +5 -5
- package/SVF-doxygen/html/globals_z.html +3 -3
- package/SVF-doxygen/html/hierarchy.html +622 -631
- package/SVF-doxygen/html/namespaceSVF.html +449 -458
- package/SVF-doxygen/html/search/all_0.js +155 -161
- package/SVF-doxygen/html/search/all_1.js +502 -503
- package/SVF-doxygen/html/search/all_10.js +325 -326
- package/SVF-doxygen/html/search/all_11.js +227 -227
- package/SVF-doxygen/html/search/all_12.js +563 -574
- package/SVF-doxygen/html/search/all_13.js +206 -208
- package/SVF-doxygen/html/search/all_14.js +74 -73
- package/SVF-doxygen/html/search/all_15.js +175 -176
- package/SVF-doxygen/html/search/all_16.js +77 -77
- package/SVF-doxygen/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/search/all_18.js +1 -1
- package/SVF-doxygen/html/search/all_19.js +27 -27
- package/SVF-doxygen/html/search/all_1a.js +175 -179
- package/SVF-doxygen/html/search/all_2.js +180 -182
- package/SVF-doxygen/html/search/all_3.js +636 -642
- package/SVF-doxygen/html/search/all_4.js +237 -236
- package/SVF-doxygen/html/search/all_5.js +120 -126
- package/SVF-doxygen/html/search/all_6.js +236 -236
- package/SVF-doxygen/html/search/all_7.js +1040 -1056
- package/SVF-doxygen/html/search/all_8.js +211 -215
- package/SVF-doxygen/html/search/all_9.js +631 -638
- package/SVF-doxygen/html/search/all_a.js +46 -46
- package/SVF-doxygen/html/search/all_b.js +24 -26
- package/SVF-doxygen/html/search/all_c.js +113 -115
- package/SVF-doxygen/html/search/all_d.js +205 -205
- package/SVF-doxygen/html/search/all_e.js +207 -209
- package/SVF-doxygen/html/search/all_f.js +122 -122
- package/SVF-doxygen/html/search/classes_0.js +29 -28
- package/SVF-doxygen/html/search/classes_1.js +11 -11
- package/SVF-doxygen/html/search/classes_10.js +72 -74
- package/SVF-doxygen/html/search/classes_11.js +14 -14
- package/SVF-doxygen/html/search/classes_12.js +2 -2
- package/SVF-doxygen/html/search/classes_13.js +10 -10
- package/SVF-doxygen/html/search/classes_14.js +19 -19
- package/SVF-doxygen/html/search/classes_15.js +1 -1
- package/SVF-doxygen/html/search/classes_2.js +72 -73
- package/SVF-doxygen/html/search/classes_3.js +35 -35
- package/SVF-doxygen/html/search/classes_4.js +7 -8
- package/SVF-doxygen/html/search/classes_5.js +28 -28
- package/SVF-doxygen/html/search/classes_6.js +98 -98
- package/SVF-doxygen/html/search/classes_7.js +34 -38
- package/SVF-doxygen/html/search/classes_8.js +57 -59
- package/SVF-doxygen/html/search/classes_9.js +1 -1
- package/SVF-doxygen/html/search/classes_a.js +12 -12
- package/SVF-doxygen/html/search/classes_b.js +29 -29
- package/SVF-doxygen/html/search/classes_c.js +6 -6
- package/SVF-doxygen/html/search/classes_d.js +19 -19
- package/SVF-doxygen/html/search/classes_e.js +36 -36
- package/SVF-doxygen/html/search/classes_f.js +25 -25
- package/SVF-doxygen/html/search/defines_0.js +3 -3
- package/SVF-doxygen/html/search/defines_1.js +3 -3
- package/SVF-doxygen/html/search/defines_10.js +2 -2
- package/SVF-doxygen/html/search/defines_2.js +30 -30
- package/SVF-doxygen/html/search/defines_3.js +20 -20
- package/SVF-doxygen/html/search/defines_4.js +3 -3
- package/SVF-doxygen/html/search/defines_5.js +4 -4
- package/SVF-doxygen/html/search/defines_6.js +2 -2
- package/SVF-doxygen/html/search/defines_7.js +5 -5
- package/SVF-doxygen/html/search/defines_8.js +11 -11
- package/SVF-doxygen/html/search/defines_9.js +9 -9
- package/SVF-doxygen/html/search/defines_a.js +2 -2
- package/SVF-doxygen/html/search/defines_b.js +1 -1
- package/SVF-doxygen/html/search/defines_c.js +3 -4
- package/SVF-doxygen/html/search/defines_d.js +2 -2
- package/SVF-doxygen/html/search/defines_e.js +8 -8
- package/SVF-doxygen/html/search/defines_f.js +4 -4
- package/SVF-doxygen/html/search/enums_0.js +3 -4
- package/SVF-doxygen/html/search/enums_1.js +2 -2
- package/SVF-doxygen/html/search/enums_10.js +1 -1
- package/SVF-doxygen/html/search/enums_11.js +1 -1
- package/SVF-doxygen/html/search/enums_2.js +9 -9
- package/SVF-doxygen/html/search/enums_3.js +2 -1
- package/SVF-doxygen/html/search/enums_4.js +3 -4
- package/SVF-doxygen/html/search/enums_5.js +1 -1
- package/SVF-doxygen/html/search/enums_6.js +2 -2
- package/SVF-doxygen/html/search/enums_7.js +2 -2
- package/SVF-doxygen/html/search/enums_8.js +4 -4
- package/SVF-doxygen/html/search/enums_9.js +1 -1
- package/SVF-doxygen/html/search/enums_a.js +1 -1
- package/SVF-doxygen/html/search/enums_b.js +7 -7
- package/SVF-doxygen/html/search/enums_c.js +1 -1
- package/SVF-doxygen/html/search/enums_d.js +4 -4
- package/SVF-doxygen/html/search/enums_e.js +2 -2
- package/SVF-doxygen/html/search/enums_f.js +4 -4
- package/SVF-doxygen/html/search/enumvalues_0.js +15 -15
- package/SVF-doxygen/html/search/enumvalues_1.js +16 -16
- package/SVF-doxygen/html/search/enumvalues_10.js +36 -36
- package/SVF-doxygen/html/search/enumvalues_11.js +6 -5
- package/SVF-doxygen/html/search/enumvalues_12.js +10 -10
- package/SVF-doxygen/html/search/enumvalues_13.js +1 -1
- package/SVF-doxygen/html/search/enumvalues_14.js +1 -1
- package/SVF-doxygen/html/search/enumvalues_15.js +4 -4
- package/SVF-doxygen/html/search/enumvalues_2.js +36 -37
- package/SVF-doxygen/html/search/enumvalues_3.js +13 -13
- package/SVF-doxygen/html/search/enumvalues_4.js +2 -2
- package/SVF-doxygen/html/search/enumvalues_5.js +50 -50
- package/SVF-doxygen/html/search/enumvalues_6.js +6 -6
- package/SVF-doxygen/html/search/enumvalues_7.js +8 -8
- package/SVF-doxygen/html/search/enumvalues_8.js +24 -24
- package/SVF-doxygen/html/search/enumvalues_9.js +6 -6
- package/SVF-doxygen/html/search/enumvalues_a.js +17 -17
- package/SVF-doxygen/html/search/enumvalues_b.js +11 -11
- package/SVF-doxygen/html/search/enumvalues_c.js +5 -5
- package/SVF-doxygen/html/search/enumvalues_d.js +19 -19
- package/SVF-doxygen/html/search/enumvalues_e.js +9 -9
- package/SVF-doxygen/html/search/enumvalues_f.js +48 -49
- package/SVF-doxygen/html/search/files_0.js +18 -16
- package/SVF-doxygen/html/search/files_1.js +9 -9
- package/SVF-doxygen/html/search/files_10.js +8 -8
- package/SVF-doxygen/html/search/files_11.js +8 -8
- package/SVF-doxygen/html/search/files_12.js +2 -2
- package/SVF-doxygen/html/search/files_2.js +51 -53
- package/SVF-doxygen/html/search/files_3.js +14 -14
- package/SVF-doxygen/html/search/files_4.js +3 -5
- package/SVF-doxygen/html/search/files_5.js +13 -13
- package/SVF-doxygen/html/search/files_6.js +10 -10
- package/SVF-doxygen/html/search/files_7.js +15 -17
- package/SVF-doxygen/html/search/files_8.js +13 -13
- package/SVF-doxygen/html/search/files_9.js +18 -18
- package/SVF-doxygen/html/search/files_a.js +3 -3
- package/SVF-doxygen/html/search/files_b.js +4 -4
- package/SVF-doxygen/html/search/files_c.js +20 -20
- package/SVF-doxygen/html/search/files_d.js +4 -4
- package/SVF-doxygen/html/search/files_e.js +57 -62
- package/SVF-doxygen/html/search/files_f.js +8 -8
- package/SVF-doxygen/html/search/functions_0.js +13 -13
- package/SVF-doxygen/html/search/functions_1.js +366 -368
- package/SVF-doxygen/html/search/functions_10.js +139 -140
- package/SVF-doxygen/html/search/functions_11.js +140 -140
- package/SVF-doxygen/html/search/functions_12.js +294 -299
- package/SVF-doxygen/html/search/functions_13.js +72 -73
- package/SVF-doxygen/html/search/functions_14.js +41 -41
- package/SVF-doxygen/html/search/functions_15.js +70 -72
- package/SVF-doxygen/html/search/functions_16.js +38 -38
- package/SVF-doxygen/html/search/functions_17.js +3 -3
- package/SVF-doxygen/html/search/functions_18.js +175 -179
- package/SVF-doxygen/html/search/functions_2.js +92 -94
- package/SVF-doxygen/html/search/functions_3.js +258 -261
- package/SVF-doxygen/html/search/functions_4.js +85 -85
- package/SVF-doxygen/html/search/functions_5.js +54 -57
- package/SVF-doxygen/html/search/functions_6.js +65 -65
- package/SVF-doxygen/html/search/functions_7.js +857 -872
- package/SVF-doxygen/html/search/functions_8.js +162 -162
- package/SVF-doxygen/html/search/functions_9.js +440 -446
- package/SVF-doxygen/html/search/functions_a.js +30 -30
- package/SVF-doxygen/html/search/functions_b.js +2 -2
- package/SVF-doxygen/html/search/functions_c.js +22 -25
- package/SVF-doxygen/html/search/functions_d.js +82 -82
- package/SVF-doxygen/html/search/functions_e.js +34 -36
- package/SVF-doxygen/html/search/functions_f.js +58 -58
- package/SVF-doxygen/html/search/namespaces_0.js +1 -1
- package/SVF-doxygen/html/search/namespaces_1.js +7 -7
- package/SVF-doxygen/html/search/related_0.js +4 -4
- package/SVF-doxygen/html/search/related_1.js +2 -2
- package/SVF-doxygen/html/search/related_2.js +2 -2
- package/SVF-doxygen/html/search/related_3.js +2 -2
- package/SVF-doxygen/html/search/related_4.js +2 -2
- package/SVF-doxygen/html/search/related_5.js +1 -1
- package/SVF-doxygen/html/search/related_6.js +2 -2
- package/SVF-doxygen/html/search/related_7.js +5 -5
- package/SVF-doxygen/html/search/related_8.js +2 -2
- package/SVF-doxygen/html/search/related_9.js +4 -4
- package/SVF-doxygen/html/search/related_a.js +19 -19
- package/SVF-doxygen/html/search/related_b.js +4 -4
- package/SVF-doxygen/html/search/related_c.js +2 -2
- package/SVF-doxygen/html/search/related_d.js +11 -12
- package/SVF-doxygen/html/search/related_e.js +2 -2
- package/SVF-doxygen/html/search/related_f.js +2 -2
- package/SVF-doxygen/html/search/typedefs_0.js +18 -19
- package/SVF-doxygen/html/search/typedefs_1.js +27 -27
- package/SVF-doxygen/html/search/typedefs_10.js +65 -65
- package/SVF-doxygen/html/search/typedefs_11.js +12 -13
- package/SVF-doxygen/html/search/typedefs_12.js +13 -13
- package/SVF-doxygen/html/search/typedefs_13.js +40 -40
- package/SVF-doxygen/html/search/typedefs_14.js +11 -11
- package/SVF-doxygen/html/search/typedefs_2.js +125 -125
- package/SVF-doxygen/html/search/typedefs_3.js +39 -39
- package/SVF-doxygen/html/search/typedefs_4.js +17 -17
- package/SVF-doxygen/html/search/typedefs_5.js +42 -42
- package/SVF-doxygen/html/search/typedefs_6.js +54 -54
- package/SVF-doxygen/html/search/typedefs_7.js +47 -47
- package/SVF-doxygen/html/search/typedefs_8.js +1 -1
- package/SVF-doxygen/html/search/typedefs_9.js +4 -6
- package/SVF-doxygen/html/search/typedefs_a.js +30 -29
- package/SVF-doxygen/html/search/typedefs_b.js +29 -29
- package/SVF-doxygen/html/search/typedefs_c.js +41 -41
- package/SVF-doxygen/html/search/typedefs_d.js +15 -15
- package/SVF-doxygen/html/search/typedefs_e.js +52 -52
- package/SVF-doxygen/html/search/typedefs_f.js +14 -14
- package/SVF-doxygen/html/search/variables_0.js +171 -177
- package/SVF-doxygen/html/search/variables_1.js +78 -77
- package/SVF-doxygen/html/search/variables_10.js +98 -98
- package/SVF-doxygen/html/search/variables_11.js +47 -47
- package/SVF-doxygen/html/search/variables_12.js +93 -93
- package/SVF-doxygen/html/search/variables_13.js +76 -76
- package/SVF-doxygen/html/search/variables_14.js +14 -14
- package/SVF-doxygen/html/search/variables_15.js +49 -49
- package/SVF-doxygen/html/search/variables_16.js +11 -11
- package/SVF-doxygen/html/search/variables_17.js +1 -1
- package/SVF-doxygen/html/search/variables_18.js +17 -17
- package/SVF-doxygen/html/search/variables_2.js +40 -40
- package/SVF-doxygen/html/search/variables_3.js +143 -143
- package/SVF-doxygen/html/search/variables_4.js +51 -51
- package/SVF-doxygen/html/search/variables_5.js +39 -39
- package/SVF-doxygen/html/search/variables_6.js +66 -66
- package/SVF-doxygen/html/search/variables_7.js +33 -34
- package/SVF-doxygen/html/search/variables_8.js +8 -8
- package/SVF-doxygen/html/search/variables_9.js +80 -79
- package/SVF-doxygen/html/search/variables_a.js +4 -4
- package/SVF-doxygen/html/search/variables_b.js +10 -10
- package/SVF-doxygen/html/search/variables_c.js +44 -44
- package/SVF-doxygen/html/search/variables_d.js +58 -58
- package/SVF-doxygen/html/search/variables_e.js +123 -123
- package/SVF-doxygen/html/search/variables_f.js +31 -31
- package/SVF-doxygen/html/structSVF_1_1AbstractValue-members.html +164 -0
- package/SVF-doxygen/html/structSVF_1_1AbstractValue.html +2820 -0
- package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1SparseAbstractState_01_4-members.html +84 -0
- package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1SparseAbstractState_01_4.html +130 -0
- package/SVF-doxygen/html/svf-ex_8cpp.html +25 -25
- package/SVF-doxygen/html/svf-ex_8cpp_source.html +26 -26
- package/package.json +1 -1
- package/svf/include/AE/Core/AbstractState.h +749 -0
- package/svf/include/AE/Core/AbstractValue.h +514 -39
- package/svf/include/AE/Core/AddressValue.h +32 -25
- package/svf/include/AE/Core/IntervalValue.h +10 -24
- package/svf/include/AE/Core/RelExeState.h +1 -1
- package/svf/include/AE/Core/RelationSolver.h +9 -9
- package/svf/include/AE/Svfexe/{AbstractExecution.h → AbstractInterpretation.h} +27 -26
- package/svf/include/AE/Svfexe/BufOverflowChecker.h +5 -5
- package/svf/include/AE/Svfexe/ICFGSimplification.h +1 -2
- package/svf/include/AE/Svfexe/{SVFIR2ItvExeState.h → SVFIR2AbsState.h} +30 -33
- package/svf/lib/AE/Core/AbstractState.cpp +357 -0
- package/svf/lib/AE/Core/RelationSolver.cpp +31 -31
- package/svf/lib/AE/Core/SVFIR2Relation.cpp +17 -16
- package/svf/lib/AE/Svfexe/{AbstractExecution.cpp → AbstractInterpretation.cpp} +166 -156
- package/svf/lib/AE/Svfexe/BufOverflowChecker.cpp +51 -47
- package/svf/lib/AE/Svfexe/{SVFIR2ItvExeState.cpp → SVFIR2AbsState.cpp} +211 -247
- package/svf-llvm/tools/AE/ae.cpp +105 -108
- package/svf-llvm/tools/Example/svf-ex.cpp +2 -2
- package/svf/include/AE/Core/ConsExeState.h +0 -453
- package/svf/include/AE/Core/ExeState.h +0 -304
- package/svf/include/AE/Core/IntervalExeState.h +0 -650
- package/svf/include/AE/Core/SingleAbsValue.h +0 -477
- package/svf/include/AE/Core/SymState.h +0 -221
- package/svf/include/AE/Svfexe/SVFIR2ConsExeState.h +0 -148
- package/svf/lib/AE/Core/ConsExeState.cpp +0 -603
- package/svf/lib/AE/Core/ExeState.cpp +0 -117
- package/svf/lib/AE/Core/IntervalExeState.cpp +0 -329
- package/svf/lib/AE/Core/SymState.cpp +0 -37
- package/svf/lib/AE/Svfexe/SVFIR2ConsExeState.cpp +0 -772
|
@@ -78,12 +78,12 @@ Public Member Functions</h2></td></tr>
|
|
|
78
78
|
<tr class="separator:a5d3a169debb25093761f6e9f812f29b4"><td class="memSeparator" colspan="2"> </td></tr>
|
|
79
79
|
<tr class="memitem:a99d94e268fb6e622a85a9acae737fd6f"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSymblicAbstractionTest.html#a99d94e268fb6e622a85a9acae737fd6f">test_print</a> ()</td></tr>
|
|
80
80
|
<tr class="separator:a99d94e268fb6e622a85a9acae737fd6f"><td class="memSeparator" colspan="2"> </td></tr>
|
|
81
|
-
<tr class="memitem:
|
|
82
|
-
<tr class="separator:
|
|
83
|
-
<tr class="memitem:
|
|
84
|
-
<tr class="separator:
|
|
85
|
-
<tr class="memitem:
|
|
86
|
-
<tr class="separator:
|
|
81
|
+
<tr class="memitem:a96a651463812ee4cdb597926ba3dc1cf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1AbstractState.html">AbstractState</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSymblicAbstractionTest.html#a96a651463812ee4cdb597926ba3dc1cf">RSY_time</a> (<a class="el" href="classSVF_1_1AbstractState.html">AbstractState</a> &inv, const <a class="el" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &phi, <a class="el" href="classSVF_1_1RelationSolver.html">RelationSolver</a> &rs)</td></tr>
|
|
82
|
+
<tr class="separator:a96a651463812ee4cdb597926ba3dc1cf"><td class="memSeparator" colspan="2"> </td></tr>
|
|
83
|
+
<tr class="memitem:ad9539ad539a0e3848b7ad1d65ebe81fe"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1AbstractState.html">AbstractState</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSymblicAbstractionTest.html#ad9539ad539a0e3848b7ad1d65ebe81fe">Bilateral_time</a> (<a class="el" href="classSVF_1_1AbstractState.html">AbstractState</a> &inv, const <a class="el" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &phi, <a class="el" href="classSVF_1_1RelationSolver.html">RelationSolver</a> &rs)</td></tr>
|
|
84
|
+
<tr class="separator:ad9539ad539a0e3848b7ad1d65ebe81fe"><td class="memSeparator" colspan="2"> </td></tr>
|
|
85
|
+
<tr class="memitem:a00618d1c3ca0c30883aad8f95e9f9f30"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1AbstractState.html">AbstractState</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSymblicAbstractionTest.html#a00618d1c3ca0c30883aad8f95e9f9f30">BS_time</a> (<a class="el" href="classSVF_1_1AbstractState.html">AbstractState</a> &inv, const <a class="el" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &phi, <a class="el" href="classSVF_1_1RelationSolver.html">RelationSolver</a> &rs)</td></tr>
|
|
86
|
+
<tr class="separator:a00618d1c3ca0c30883aad8f95e9f9f30"><td class="memSeparator" colspan="2"> </td></tr>
|
|
87
87
|
<tr class="memitem:acc4852ec2f03ec67e39c67629275cdf5"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSymblicAbstractionTest.html#acc4852ec2f03ec67e39c67629275cdf5">testRelExeState1_1</a> ()</td></tr>
|
|
88
88
|
<tr class="separator:acc4852ec2f03ec67e39c67629275cdf5"><td class="memSeparator" colspan="2"> </td></tr>
|
|
89
89
|
<tr class="memitem:a0316fb86d1751ecacf5845ca07764f40"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSymblicAbstractionTest.html#a0316fb86d1751ecacf5845ca07764f40">testRelExeState1_2</a> ()</td></tr>
|
|
@@ -171,8 +171,8 @@ Static Public Member Functions</h2></td></tr>
|
|
|
171
171
|
</div>
|
|
172
172
|
</div>
|
|
173
173
|
<h2 class="groupheader">Member Function Documentation</h2>
|
|
174
|
-
<a id="
|
|
175
|
-
<h2 class="memtitle"><span class="permalink"><a href="#
|
|
174
|
+
<a id="ad9539ad539a0e3848b7ad1d65ebe81fe"></a>
|
|
175
|
+
<h2 class="memtitle"><span class="permalink"><a href="#ad9539ad539a0e3848b7ad1d65ebe81fe">◆ </a></span>Bilateral_time()</h2>
|
|
176
176
|
|
|
177
177
|
<div class="memitem">
|
|
178
178
|
<div class="memproto">
|
|
@@ -181,9 +181,9 @@ Static Public Member Functions</h2></td></tr>
|
|
|
181
181
|
<td class="mlabels-left">
|
|
182
182
|
<table class="memname">
|
|
183
183
|
<tr>
|
|
184
|
-
<td class="memname"><a class="el" href="
|
|
184
|
+
<td class="memname"><a class="el" href="classSVF_1_1AbstractState.html">AbstractState</a> SymblicAbstractionTest::Bilateral_time </td>
|
|
185
185
|
<td>(</td>
|
|
186
|
-
<td class="paramtype"><a class="el" href="
|
|
186
|
+
<td class="paramtype"><a class="el" href="classSVF_1_1AbstractState.html">AbstractState</a> & </td>
|
|
187
187
|
<td class="paramname"><em>inv</em>, </td>
|
|
188
188
|
</tr>
|
|
189
189
|
<tr>
|
|
@@ -214,7 +214,7 @@ Static Public Member Functions</h2></td></tr>
|
|
|
214
214
|
<p class="definition">Definition at line <a class="el" href="ae_8cpp_source.html#l00078">78</a> of file <a class="el" href="ae_8cpp_source.html">ae.cpp</a>.</p>
|
|
215
215
|
<div class="fragment"><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  {</div>
|
|
216
216
|
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">auto</span> start_time = std::chrono::high_resolution_clock::now();</div>
|
|
217
|
-
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <a class="code" href="
|
|
217
|
+
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> resBilateral = rs.<a class="code" href="classSVF_1_1RelationSolver.html#a23c59e437950b139dde49f11eb45b63a">bilateral</a>(inv, phi);</div>
|
|
218
218
|
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">auto</span> end_time = std::chrono::high_resolution_clock::now();</div>
|
|
219
219
|
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keyword">auto</span> duration = std::chrono::duration_cast<std::chrono::microseconds>(</div>
|
|
220
220
|
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  end_time - start_time);</div>
|
|
@@ -225,8 +225,8 @@ Static Public Member Functions</h2></td></tr>
|
|
|
225
225
|
</div><!-- fragment -->
|
|
226
226
|
</div>
|
|
227
227
|
</div>
|
|
228
|
-
<a id="
|
|
229
|
-
<h2 class="memtitle"><span class="permalink"><a href="#
|
|
228
|
+
<a id="a00618d1c3ca0c30883aad8f95e9f9f30"></a>
|
|
229
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a00618d1c3ca0c30883aad8f95e9f9f30">◆ </a></span>BS_time()</h2>
|
|
230
230
|
|
|
231
231
|
<div class="memitem">
|
|
232
232
|
<div class="memproto">
|
|
@@ -235,9 +235,9 @@ Static Public Member Functions</h2></td></tr>
|
|
|
235
235
|
<td class="mlabels-left">
|
|
236
236
|
<table class="memname">
|
|
237
237
|
<tr>
|
|
238
|
-
<td class="memname"><a class="el" href="
|
|
238
|
+
<td class="memname"><a class="el" href="classSVF_1_1AbstractState.html">AbstractState</a> SymblicAbstractionTest::BS_time </td>
|
|
239
239
|
<td>(</td>
|
|
240
|
-
<td class="paramtype"><a class="el" href="
|
|
240
|
+
<td class="paramtype"><a class="el" href="classSVF_1_1AbstractState.html">AbstractState</a> & </td>
|
|
241
241
|
<td class="paramname"><em>inv</em>, </td>
|
|
242
242
|
</tr>
|
|
243
243
|
<tr>
|
|
@@ -268,7 +268,7 @@ Static Public Member Functions</h2></td></tr>
|
|
|
268
268
|
<p class="definition">Definition at line <a class="el" href="ae_8cpp_source.html#l00090">90</a> of file <a class="el" href="ae_8cpp_source.html">ae.cpp</a>.</p>
|
|
269
269
|
<div class="fragment"><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  {</div>
|
|
270
270
|
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keyword">auto</span> start_time = std::chrono::high_resolution_clock::now();</div>
|
|
271
|
-
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <a class="code" href="
|
|
271
|
+
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> resBS = rs.<a class="code" href="classSVF_1_1RelationSolver.html#a98f7e3ae9f43aea178d77a58ac8e927f">BS</a>(inv, phi);</div>
|
|
272
272
|
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keyword">auto</span> end_time = std::chrono::high_resolution_clock::now();</div>
|
|
273
273
|
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keyword">auto</span> duration = std::chrono::duration_cast<std::chrono::microseconds>(</div>
|
|
274
274
|
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  end_time - start_time);</div>
|
|
@@ -309,8 +309,8 @@ Static Public Member Functions</h2></td></tr>
|
|
|
309
309
|
</div><!-- fragment -->
|
|
310
310
|
</div>
|
|
311
311
|
</div>
|
|
312
|
-
<a id="
|
|
313
|
-
<h2 class="memtitle"><span class="permalink"><a href="#
|
|
312
|
+
<a id="a96a651463812ee4cdb597926ba3dc1cf"></a>
|
|
313
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a96a651463812ee4cdb597926ba3dc1cf">◆ </a></span>RSY_time()</h2>
|
|
314
314
|
|
|
315
315
|
<div class="memitem">
|
|
316
316
|
<div class="memproto">
|
|
@@ -319,9 +319,9 @@ Static Public Member Functions</h2></td></tr>
|
|
|
319
319
|
<td class="mlabels-left">
|
|
320
320
|
<table class="memname">
|
|
321
321
|
<tr>
|
|
322
|
-
<td class="memname"><a class="el" href="
|
|
322
|
+
<td class="memname"><a class="el" href="classSVF_1_1AbstractState.html">AbstractState</a> SymblicAbstractionTest::RSY_time </td>
|
|
323
323
|
<td>(</td>
|
|
324
|
-
<td class="paramtype"><a class="el" href="
|
|
324
|
+
<td class="paramtype"><a class="el" href="classSVF_1_1AbstractState.html">AbstractState</a> & </td>
|
|
325
325
|
<td class="paramname"><em>inv</em>, </td>
|
|
326
326
|
</tr>
|
|
327
327
|
<tr>
|
|
@@ -352,7 +352,7 @@ Static Public Member Functions</h2></td></tr>
|
|
|
352
352
|
<p class="definition">Definition at line <a class="el" href="ae_8cpp_source.html#l00066">66</a> of file <a class="el" href="ae_8cpp_source.html">ae.cpp</a>.</p>
|
|
353
353
|
<div class="fragment"><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  {</div>
|
|
354
354
|
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keyword">auto</span> start_time = std::chrono::high_resolution_clock::now();</div>
|
|
355
|
-
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <a class="code" href="
|
|
355
|
+
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> resRSY = rs.<a class="code" href="classSVF_1_1RelationSolver.html#a0bc76a5f96dab54e1c9678312579d51a">RSY</a>(inv, phi);</div>
|
|
356
356
|
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keyword">auto</span> end_time = std::chrono::high_resolution_clock::now();</div>
|
|
357
357
|
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">auto</span> duration = std::chrono::duration_cast<std::chrono::microseconds>(</div>
|
|
358
358
|
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  end_time - start_time);</div>
|
|
@@ -419,7 +419,7 @@ Static Public Member Functions</h2></td></tr>
|
|
|
419
419
|
<p class="definition">Definition at line <a class="el" href="ae_8cpp_source.html#l00103">103</a> of file <a class="el" href="ae_8cpp_source.html">ae.cpp</a>.</p>
|
|
420
420
|
<div class="fragment"><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  {</div>
|
|
421
421
|
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a05dc00b2bd9a8176aae31b6cfffe725d">sucMsg</a>(<span class="stringliteral">"\t SUCCESS :"</span>) << <span class="stringliteral">"test1_1 start\n"</span>;</div>
|
|
422
|
-
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <a class="code" href="
|
|
422
|
+
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> itv;</div>
|
|
423
423
|
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <a class="code" href="classSVF_1_1RelExeState.html">RelExeState</a> relation;</div>
|
|
424
424
|
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="comment">// var0 := [0, 1];</span></div>
|
|
425
425
|
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  itv[0] = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 1);</div>
|
|
@@ -432,22 +432,22 @@ Static Public Member Functions</h2></td></tr>
|
|
|
432
432
|
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<u32_t></a> res;</div>
|
|
433
433
|
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  relation.<a class="code" href="classSVF_1_1RelExeState.html#a3393f160508c33e68ebedd042d1d296f">extractSubVars</a>(relation[1], res);</div>
|
|
434
434
|
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  assert(res == <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<u32_t></a>({0, 1}) && <span class="stringliteral">"inconsistency occurs"</span>);</div>
|
|
435
|
-
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <a class="code" href="
|
|
435
|
+
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> inv = itv.<a class="code" href="classSVF_1_1AbstractState.html#ae9897b85e3cb2dc675d3a2df76c44878">sliceState</a>(res);</div>
|
|
436
436
|
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <a class="code" href="classSVF_1_1RelationSolver.html">RelationSolver</a> rs;</div>
|
|
437
437
|
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>& relExpr = relation[1];</div>
|
|
438
|
-
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>& initExpr = rs.<a class="code" href="classSVF_1_1RelationSolver.html#
|
|
438
|
+
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>& initExpr = rs.<a class="code" href="classSVF_1_1RelationSolver.html#a04f145c44a67ebda99ccc5a3081239ff">gamma_hat</a>(inv);</div>
|
|
439
439
|
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>& phi = (relExpr && initExpr).simplify();</div>
|
|
440
|
-
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <a class="code" href="
|
|
441
|
-
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <a class="code" href="
|
|
442
|
-
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <a class="code" href="
|
|
440
|
+
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> resRSY = rs.<a class="code" href="classSVF_1_1RelationSolver.html#a0bc76a5f96dab54e1c9678312579d51a">RSY</a>(inv, phi);</div>
|
|
441
|
+
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> resBilateral = rs.<a class="code" href="classSVF_1_1RelationSolver.html#a23c59e437950b139dde49f11eb45b63a">bilateral</a>(inv, phi);</div>
|
|
442
|
+
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> resBS = rs.<a class="code" href="classSVF_1_1RelationSolver.html#a98f7e3ae9f43aea178d77a58ac8e927f">BS</a>(inv, phi);</div>
|
|
443
443
|
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="comment">// 0:[0,1] 1:[1,2]</span></div>
|
|
444
444
|
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  assert(resRSY == resBS && resBS == resBilateral && <span class="stringliteral">"inconsistency occurs"</span>);</div>
|
|
445
|
-
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> r : resRSY.<a class="code" href="
|
|
445
|
+
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> r : resRSY.<a class="code" href="classSVF_1_1AbstractState.html#a4e4525823fd31c718216c698ed6e0a06">getVarToVal</a>())</div>
|
|
446
446
|
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  {</div>
|
|
447
|
-
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << r.first << <span class="stringliteral">" "</span> << r.second << <span class="stringliteral">"\n"</span>;</div>
|
|
447
|
+
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << r.first << <span class="stringliteral">" "</span> << r.second.getInterval() << <span class="stringliteral">"\n"</span>;</div>
|
|
448
448
|
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  }</div>
|
|
449
|
-
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <a class="code" href="
|
|
450
|
-
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  assert(
|
|
449
|
+
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <a class="code" href="classSVF_1_1AbstractState.html#ab8e7d112c380f0c3fe66b487af90c03e">AbstractState::VarToAbsValMap</a> intendedRes = {{0, <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 1)}, {1, <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(1, 2)}};</div>
|
|
450
|
+
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  assert(AbstractState::eqVarToValMap(resBS.<a class="code" href="classSVF_1_1AbstractState.html#a4e4525823fd31c718216c698ed6e0a06">getVarToVal</a>(), intendedRes) && <span class="stringliteral">"inconsistency occurs"</span>);</div>
|
|
451
451
|
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div>
|
|
452
452
|
</div><!-- fragment -->
|
|
453
453
|
</div>
|
|
@@ -478,7 +478,7 @@ Static Public Member Functions</h2></td></tr>
|
|
|
478
478
|
<p class="definition">Definition at line <a class="el" href="ae_8cpp_source.html#l00137">137</a> of file <a class="el" href="ae_8cpp_source.html">ae.cpp</a>.</p>
|
|
479
479
|
<div class="fragment"><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  {</div>
|
|
480
480
|
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"test1_2 start\n"</span>;</div>
|
|
481
|
-
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <a class="code" href="
|
|
481
|
+
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> itv;</div>
|
|
482
482
|
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <a class="code" href="classSVF_1_1RelExeState.html">RelExeState</a> relation;</div>
|
|
483
483
|
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="comment">// var0 := [0, 1];</span></div>
|
|
484
484
|
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  relation[0] = <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"0"</span>);</div>
|
|
@@ -492,22 +492,22 @@ Static Public Member Functions</h2></td></tr>
|
|
|
492
492
|
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<u32_t></a> res;</div>
|
|
493
493
|
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  relation.<a class="code" href="classSVF_1_1RelExeState.html#a3393f160508c33e68ebedd042d1d296f">extractSubVars</a>(relation[1], res);</div>
|
|
494
494
|
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  assert(res == <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<u32_t></a>({0, 1}) && <span class="stringliteral">"inconsistency occurs"</span>);</div>
|
|
495
|
-
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <a class="code" href="
|
|
495
|
+
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> inv = itv.<a class="code" href="classSVF_1_1AbstractState.html#ae9897b85e3cb2dc675d3a2df76c44878">sliceState</a>(res);</div>
|
|
496
496
|
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <a class="code" href="classSVF_1_1RelationSolver.html">RelationSolver</a> rs;</div>
|
|
497
497
|
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>& relExpr = relation[1];</div>
|
|
498
|
-
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>& initExpr = rs.<a class="code" href="classSVF_1_1RelationSolver.html#
|
|
498
|
+
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>& initExpr = rs.<a class="code" href="classSVF_1_1RelationSolver.html#a04f145c44a67ebda99ccc5a3081239ff">gamma_hat</a>(inv);</div>
|
|
499
499
|
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>& phi = (relExpr && initExpr).simplify();</div>
|
|
500
|
-
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <a class="code" href="
|
|
501
|
-
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <a class="code" href="
|
|
502
|
-
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <a class="code" href="
|
|
500
|
+
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> resRSY = rs.<a class="code" href="classSVF_1_1RelationSolver.html#a0bc76a5f96dab54e1c9678312579d51a">RSY</a>(inv, phi);</div>
|
|
501
|
+
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> resBilateral = rs.<a class="code" href="classSVF_1_1RelationSolver.html#a23c59e437950b139dde49f11eb45b63a">bilateral</a>(inv, phi);</div>
|
|
502
|
+
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> resBS = rs.<a class="code" href="classSVF_1_1RelationSolver.html#a98f7e3ae9f43aea178d77a58ac8e927f">BS</a>(inv, phi);</div>
|
|
503
503
|
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="comment">// 0:[0,1] 1:[0,2]</span></div>
|
|
504
504
|
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  assert(resRSY == resBS && resBS == resBilateral && <span class="stringliteral">"inconsistency occurs"</span>);</div>
|
|
505
|
-
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> r : resRSY.<a class="code" href="
|
|
505
|
+
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> r : resRSY.<a class="code" href="classSVF_1_1AbstractState.html#a4e4525823fd31c718216c698ed6e0a06">getVarToVal</a>())</div>
|
|
506
506
|
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  {</div>
|
|
507
|
-
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << r.first << <span class="stringliteral">" "</span> << r.second << <span class="stringliteral">"\n"</span>;</div>
|
|
507
|
+
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << r.first << <span class="stringliteral">" "</span> << r.second.getInterval() << <span class="stringliteral">"\n"</span>;</div>
|
|
508
508
|
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  }</div>
|
|
509
|
-
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <a class="code" href="
|
|
510
|
-
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  assert(
|
|
509
|
+
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <a class="code" href="classSVF_1_1AbstractState.html#ab8e7d112c380f0c3fe66b487af90c03e">AbstractState::VarToAbsValMap</a> intendedRes = {{0, <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 1)}, {1, <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 2)}};</div>
|
|
510
|
+
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  assert(AbstractState::eqVarToValMap(resBS.<a class="code" href="classSVF_1_1AbstractState.html#a4e4525823fd31c718216c698ed6e0a06">getVarToVal</a>(), intendedRes) && <span class="stringliteral">"inconsistency occurs"</span>);</div>
|
|
511
511
|
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  }</div>
|
|
512
512
|
</div><!-- fragment -->
|
|
513
513
|
</div>
|
|
@@ -538,7 +538,7 @@ Static Public Member Functions</h2></td></tr>
|
|
|
538
538
|
<p class="definition">Definition at line <a class="el" href="ae_8cpp_source.html#l00172">172</a> of file <a class="el" href="ae_8cpp_source.html">ae.cpp</a>.</p>
|
|
539
539
|
<div class="fragment"><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  {</div>
|
|
540
540
|
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"test2_1 start\n"</span>;</div>
|
|
541
|
-
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <a class="code" href="
|
|
541
|
+
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> itv;</div>
|
|
542
542
|
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <a class="code" href="classSVF_1_1RelExeState.html">RelExeState</a> relation;</div>
|
|
543
543
|
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="comment">// var0 := [0, 10];</span></div>
|
|
544
544
|
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  relation[0] = <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"0"</span>);</div>
|
|
@@ -555,26 +555,26 @@ Static Public Member Functions</h2></td></tr>
|
|
|
555
555
|
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<u32_t></a> res;</div>
|
|
556
556
|
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  relation.<a class="code" href="classSVF_1_1RelExeState.html#a3393f160508c33e68ebedd042d1d296f">extractSubVars</a>(relation[2], res);</div>
|
|
557
557
|
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  assert(res == <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<u32_t></a>({0, 1, 2}) && <span class="stringliteral">"inconsistency occurs"</span>);</div>
|
|
558
|
-
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <a class="code" href="
|
|
558
|
+
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> inv = itv.<a class="code" href="classSVF_1_1AbstractState.html#ae9897b85e3cb2dc675d3a2df76c44878">sliceState</a>(res);</div>
|
|
559
559
|
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <a class="code" href="classSVF_1_1RelationSolver.html">RelationSolver</a> rs;</div>
|
|
560
560
|
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>& relExpr = relation[2] && relation[1];</div>
|
|
561
|
-
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>& initExpr = rs.<a class="code" href="classSVF_1_1RelationSolver.html#
|
|
561
|
+
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>& initExpr = rs.<a class="code" href="classSVF_1_1RelationSolver.html#a04f145c44a67ebda99ccc5a3081239ff">gamma_hat</a>(inv);</div>
|
|
562
562
|
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>& phi = (relExpr && initExpr).simplify();</div>
|
|
563
|
-
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <a class="code" href="
|
|
564
|
-
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <a class="code" href="
|
|
565
|
-
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <a class="code" href="
|
|
563
|
+
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> resRSY = rs.<a class="code" href="classSVF_1_1RelationSolver.html#a0bc76a5f96dab54e1c9678312579d51a">RSY</a>(inv, phi);</div>
|
|
564
|
+
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> resBilateral = rs.<a class="code" href="classSVF_1_1RelationSolver.html#a23c59e437950b139dde49f11eb45b63a">bilateral</a>(inv, phi);</div>
|
|
565
|
+
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> resBS = rs.<a class="code" href="classSVF_1_1RelationSolver.html#a98f7e3ae9f43aea178d77a58ac8e927f">BS</a>(inv, phi);</div>
|
|
566
566
|
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="comment">// 0:[0,10] 1:[0,10] 2:[0,0]</span></div>
|
|
567
567
|
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  assert(resRSY == resBS && resBS == resBilateral && <span class="stringliteral">"inconsistency occurs"</span>);</div>
|
|
568
|
-
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> r : resRSY.<a class="code" href="
|
|
568
|
+
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> r : resRSY.<a class="code" href="classSVF_1_1AbstractState.html#a4e4525823fd31c718216c698ed6e0a06">getVarToVal</a>())</div>
|
|
569
569
|
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  {</div>
|
|
570
|
-
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << r.first << <span class="stringliteral">" "</span> << r.second << <span class="stringliteral">"\n"</span>;</div>
|
|
570
|
+
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << r.first << <span class="stringliteral">" "</span> << r.second.getInterval() << <span class="stringliteral">"\n"</span>;</div>
|
|
571
571
|
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  }</div>
|
|
572
572
|
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="comment">// ground truth</span></div>
|
|
573
|
-
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <a class="code" href="
|
|
573
|
+
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <a class="code" href="classSVF_1_1AbstractState.html#ab8e7d112c380f0c3fe66b487af90c03e">AbstractState::VarToAbsValMap</a> intendedRes = {{0, <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 10)},</div>
|
|
574
574
|
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  {1, <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 10)},</div>
|
|
575
575
|
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  {2, <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 0)}</div>
|
|
576
576
|
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  };</div>
|
|
577
|
-
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  assert(
|
|
577
|
+
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  assert(AbstractState::eqVarToValMap(resBS.<a class="code" href="classSVF_1_1AbstractState.html#a4e4525823fd31c718216c698ed6e0a06">getVarToVal</a>(), intendedRes) && <span class="stringliteral">"inconsistency occurs"</span>);</div>
|
|
578
578
|
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  }</div>
|
|
579
579
|
</div><!-- fragment -->
|
|
580
580
|
</div>
|
|
@@ -605,7 +605,7 @@ Static Public Member Functions</h2></td></tr>
|
|
|
605
605
|
<p class="definition">Definition at line <a class="el" href="ae_8cpp_source.html#l00214">214</a> of file <a class="el" href="ae_8cpp_source.html">ae.cpp</a>.</p>
|
|
606
606
|
<div class="fragment"><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  {</div>
|
|
607
607
|
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"test2_2 start\n"</span>;</div>
|
|
608
|
-
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <a class="code" href="
|
|
608
|
+
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> itv;</div>
|
|
609
609
|
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <a class="code" href="classSVF_1_1RelExeState.html">RelExeState</a> relation;</div>
|
|
610
610
|
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="comment">// var0 := [0, 100];</span></div>
|
|
611
611
|
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  relation[0] = <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"0"</span>);</div>
|
|
@@ -623,26 +623,26 @@ Static Public Member Functions</h2></td></tr>
|
|
|
623
623
|
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<u32_t></a> res;</div>
|
|
624
624
|
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  relation.<a class="code" href="classSVF_1_1RelExeState.html#a3393f160508c33e68ebedd042d1d296f">extractSubVars</a>(relation[2], res);</div>
|
|
625
625
|
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  assert(res == <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<u32_t></a>({0, 1, 2}) && <span class="stringliteral">"inconsistency occurs"</span>);</div>
|
|
626
|
-
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <a class="code" href="
|
|
626
|
+
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> inv = itv.<a class="code" href="classSVF_1_1AbstractState.html#ae9897b85e3cb2dc675d3a2df76c44878">sliceState</a>(res);</div>
|
|
627
627
|
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <a class="code" href="classSVF_1_1RelationSolver.html">RelationSolver</a> rs;</div>
|
|
628
628
|
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>& relExpr = relation[2] && relation[1];</div>
|
|
629
|
-
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>& initExpr = rs.<a class="code" href="classSVF_1_1RelationSolver.html#
|
|
629
|
+
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>& initExpr = rs.<a class="code" href="classSVF_1_1RelationSolver.html#a04f145c44a67ebda99ccc5a3081239ff">gamma_hat</a>(inv);</div>
|
|
630
630
|
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>& phi = (relExpr && initExpr).simplify();</div>
|
|
631
|
-
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <a class="code" href="
|
|
632
|
-
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <a class="code" href="
|
|
633
|
-
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <a class="code" href="
|
|
631
|
+
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> resRSY = rs.<a class="code" href="classSVF_1_1RelationSolver.html#a0bc76a5f96dab54e1c9678312579d51a">RSY</a>(inv, phi);</div>
|
|
632
|
+
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> resBilateral = rs.<a class="code" href="classSVF_1_1RelationSolver.html#a23c59e437950b139dde49f11eb45b63a">bilateral</a>(inv, phi);</div>
|
|
633
|
+
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> resBS = rs.<a class="code" href="classSVF_1_1RelationSolver.html#a98f7e3ae9f43aea178d77a58ac8e927f">BS</a>(inv, phi);</div>
|
|
634
634
|
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="comment">// 0:[0,100] 1:[0,100] 2:[0,0]</span></div>
|
|
635
635
|
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  assert(resRSY == resBS && resBS == resBilateral && <span class="stringliteral">"inconsistency occurs"</span>);</div>
|
|
636
|
-
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> r : resRSY.<a class="code" href="
|
|
636
|
+
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> r : resRSY.<a class="code" href="classSVF_1_1AbstractState.html#a4e4525823fd31c718216c698ed6e0a06">getVarToVal</a>())</div>
|
|
637
637
|
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  {</div>
|
|
638
|
-
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << r.first << <span class="stringliteral">" "</span> << r.second << <span class="stringliteral">"\n"</span>;</div>
|
|
638
|
+
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << r.first << <span class="stringliteral">" "</span> << r.second.getInterval() << <span class="stringliteral">"\n"</span>;</div>
|
|
639
639
|
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  }</div>
|
|
640
640
|
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="comment">// ground truth</span></div>
|
|
641
|
-
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <a class="code" href="
|
|
641
|
+
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <a class="code" href="classSVF_1_1AbstractState.html#ab8e7d112c380f0c3fe66b487af90c03e">AbstractState::VarToAbsValMap</a> intendedRes = {{0, <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 100)},</div>
|
|
642
642
|
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  {1, <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 100)},</div>
|
|
643
643
|
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  {2, <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 0)}</div>
|
|
644
644
|
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  };</div>
|
|
645
|
-
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  assert(
|
|
645
|
+
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  assert(AbstractState::eqVarToValMap(resBS.<a class="code" href="classSVF_1_1AbstractState.html#a4e4525823fd31c718216c698ed6e0a06">getVarToVal</a>(), intendedRes) && <span class="stringliteral">"inconsistency occurs"</span>);</div>
|
|
646
646
|
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  }</div>
|
|
647
647
|
</div><!-- fragment -->
|
|
648
648
|
</div>
|
|
@@ -673,7 +673,7 @@ Static Public Member Functions</h2></td></tr>
|
|
|
673
673
|
<p class="definition">Definition at line <a class="el" href="ae_8cpp_source.html#l00257">257</a> of file <a class="el" href="ae_8cpp_source.html">ae.cpp</a>.</p>
|
|
674
674
|
<div class="fragment"><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  {</div>
|
|
675
675
|
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"test2_3 start\n"</span>;</div>
|
|
676
|
-
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <a class="code" href="
|
|
676
|
+
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> itv;</div>
|
|
677
677
|
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <a class="code" href="classSVF_1_1RelExeState.html">RelExeState</a> relation;</div>
|
|
678
678
|
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="comment">// var0 := [0, 1000];</span></div>
|
|
679
679
|
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  relation[0] = <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"0"</span>);</div>
|
|
@@ -691,28 +691,27 @@ Static Public Member Functions</h2></td></tr>
|
|
|
691
691
|
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<u32_t></a> res;</div>
|
|
692
692
|
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  relation.<a class="code" href="classSVF_1_1RelExeState.html#a3393f160508c33e68ebedd042d1d296f">extractSubVars</a>(relation[2], res);</div>
|
|
693
693
|
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  assert(res == <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<u32_t></a>({0, 1, 2}) && <span class="stringliteral">"inconsistency occurs"</span>);</div>
|
|
694
|
-
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <a class="code" href="
|
|
694
|
+
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> inv = itv.<a class="code" href="classSVF_1_1AbstractState.html#ae9897b85e3cb2dc675d3a2df76c44878">sliceState</a>(res);</div>
|
|
695
695
|
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <a class="code" href="classSVF_1_1RelationSolver.html">RelationSolver</a> rs;</div>
|
|
696
696
|
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>& relExpr = relation[2] && relation[1];</div>
|
|
697
|
-
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>& initExpr = rs.<a class="code" href="classSVF_1_1RelationSolver.html#
|
|
697
|
+
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>& initExpr = rs.<a class="code" href="classSVF_1_1RelationSolver.html#a04f145c44a67ebda99ccc5a3081239ff">gamma_hat</a>(inv);</div>
|
|
698
698
|
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>& phi = (relExpr && initExpr).simplify();</div>
|
|
699
|
-
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <a class="code" href="
|
|
700
|
-
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <a class="code" href="
|
|
701
|
-
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <a class="code" href="
|
|
699
|
+
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> resRSY = rs.<a class="code" href="classSVF_1_1RelationSolver.html#a0bc76a5f96dab54e1c9678312579d51a">RSY</a>(inv, phi);</div>
|
|
700
|
+
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> resBilateral = rs.<a class="code" href="classSVF_1_1RelationSolver.html#a23c59e437950b139dde49f11eb45b63a">bilateral</a>(inv, phi);</div>
|
|
701
|
+
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> resBS = rs.<a class="code" href="classSVF_1_1RelationSolver.html#a98f7e3ae9f43aea178d77a58ac8e927f">BS</a>(inv, phi);</div>
|
|
702
702
|
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="comment">// 0:[0,1000] 1:[0,1000] 2:[0,0]</span></div>
|
|
703
703
|
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  assert(resRSY == resBS && resBS == resBilateral && <span class="stringliteral">"inconsistency occurs"</span>);</div>
|
|
704
|
-
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> r : resRSY.<a class="code" href="
|
|
704
|
+
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> r : resRSY.<a class="code" href="classSVF_1_1AbstractState.html#a4e4525823fd31c718216c698ed6e0a06">getVarToVal</a>())</div>
|
|
705
705
|
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  {</div>
|
|
706
|
-
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << r.first << <span class="stringliteral">" "</span> << r.second << <span class="stringliteral">"\n"</span>;</div>
|
|
706
|
+
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << r.first << <span class="stringliteral">" "</span> << r.second.getInterval() << <span class="stringliteral">"\n"</span>;</div>
|
|
707
707
|
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  }</div>
|
|
708
708
|
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="comment">// ground truth</span></div>
|
|
709
|
-
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <
|
|
710
|
-
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span> 
|
|
711
|
-
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  {
|
|
712
|
-
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span> 
|
|
713
|
-
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span> 
|
|
714
|
-
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span> 
|
|
715
|
-
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  }</div>
|
|
709
|
+
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <a class="code" href="classSVF_1_1AbstractState.html#ab8e7d112c380f0c3fe66b487af90c03e">AbstractState::VarToAbsValMap</a> intendedRes = {{0, <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 1000)},</div>
|
|
710
|
+
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  {1, <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 1000)},</div>
|
|
711
|
+
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  {2, <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 0)}</div>
|
|
712
|
+
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  };</div>
|
|
713
|
+
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  assert(AbstractState::eqVarToValMap(resBS.<a class="code" href="classSVF_1_1AbstractState.html#a4e4525823fd31c718216c698ed6e0a06">getVarToVal</a>(), intendedRes) && <span class="stringliteral">"inconsistency occurs"</span>);</div>
|
|
714
|
+
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  }</div>
|
|
716
715
|
</div><!-- fragment -->
|
|
717
716
|
</div>
|
|
718
717
|
</div>
|
|
@@ -739,49 +738,48 @@ Static Public Member Functions</h2></td></tr>
|
|
|
739
738
|
</table>
|
|
740
739
|
</div><div class="memdoc">
|
|
741
740
|
|
|
742
|
-
<p class="definition">Definition at line <a class="el" href="ae_8cpp_source.html#
|
|
743
|
-
<div class="fragment"><div class="line"><a name="
|
|
744
|
-
<div class="line"><a name="
|
|
745
|
-
<div class="line"><a name="
|
|
746
|
-
<div class="line"><a name="
|
|
747
|
-
<div class="line"><a name="
|
|
748
|
-
<div class="line"><a name="
|
|
749
|
-
<div class="line"><a name="
|
|
750
|
-
<div class="line"><a name="
|
|
751
|
-
<div class="line"><a name="
|
|
752
|
-
<div class="line"><a name="
|
|
753
|
-
<div class="line"><a name="
|
|
754
|
-
<div class="line"><a name="
|
|
755
|
-
<div class="line"><a name="
|
|
756
|
-
<div class="line"><a name="
|
|
757
|
-
<div class="line"><a name="
|
|
758
|
-
<div class="line"><a name="
|
|
759
|
-
<div class="line"><a name="
|
|
760
|
-
<div class="line"><a name="
|
|
761
|
-
<div class="line"><a name="
|
|
762
|
-
<div class="line"><a name="
|
|
763
|
-
<div class="line"><a name="
|
|
764
|
-
<div class="line"><a name="
|
|
765
|
-
<div class="line"><a name="
|
|
766
|
-
<div class="line"><a name="
|
|
767
|
-
<div class="line"><a name="
|
|
768
|
-
<div class="line"><a name="
|
|
769
|
-
<div class="line"><a name="
|
|
770
|
-
<div class="line"><a name="
|
|
771
|
-
<div class="line"><a name="
|
|
772
|
-
<div class="line"><a name="
|
|
773
|
-
<div class="line"><a name="
|
|
774
|
-
<div class="line"><a name="
|
|
775
|
-
<div class="line"><a name="
|
|
776
|
-
<div class="line"><a name="
|
|
777
|
-
<div class="line"><a name="
|
|
778
|
-
<div class="line"><a name="
|
|
779
|
-
<div class="line"><a name="
|
|
780
|
-
<div class="line"><a name="
|
|
781
|
-
<div class="line"><a name="
|
|
782
|
-
<div class="line"><a name="
|
|
783
|
-
<div class="line"><a name="
|
|
784
|
-
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  }</div>
|
|
741
|
+
<p class="definition">Definition at line <a class="el" href="ae_8cpp_source.html#l00300">300</a> of file <a class="el" href="ae_8cpp_source.html">ae.cpp</a>.</p>
|
|
742
|
+
<div class="fragment"><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  {</div>
|
|
743
|
+
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"test2_4 start\n"</span>;</div>
|
|
744
|
+
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> itv;</div>
|
|
745
|
+
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <a class="code" href="classSVF_1_1RelExeState.html">RelExeState</a> relation;</div>
|
|
746
|
+
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="comment">// var0 := [0, 10000];</span></div>
|
|
747
|
+
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  relation[0] = <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"0"</span>);</div>
|
|
748
|
+
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  itv[0] = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 10000);</div>
|
|
749
|
+
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="comment">// var1 := var0;</span></div>
|
|
750
|
+
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  relation[1] =</div>
|
|
751
|
+
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"1"</span>) == <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"0"</span>);</div>
|
|
752
|
+
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  itv[1] = itv[0];</div>
|
|
753
|
+
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="comment">// var2 := var1 - var0;</span></div>
|
|
754
|
+
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  relation[2] = <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"2"</span>) ==</div>
|
|
755
|
+
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"1"</span>) - <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"0"</span>);</div>
|
|
756
|
+
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  itv[2] = itv[1] - itv[0];</div>
|
|
757
|
+
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  </div>
|
|
758
|
+
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="comment">// Test extract sub vars</span></div>
|
|
759
|
+
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<u32_t></a> res;</div>
|
|
760
|
+
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  relation.<a class="code" href="classSVF_1_1RelExeState.html#a3393f160508c33e68ebedd042d1d296f">extractSubVars</a>(relation[2], res);</div>
|
|
761
|
+
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  assert(res == <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<u32_t></a>({0, 1, 2}) && <span class="stringliteral">"inconsistency occurs"</span>);</div>
|
|
762
|
+
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> inv = itv.<a class="code" href="classSVF_1_1AbstractState.html#ae9897b85e3cb2dc675d3a2df76c44878">sliceState</a>(res);</div>
|
|
763
|
+
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <a class="code" href="classSVF_1_1RelationSolver.html">RelationSolver</a> rs;</div>
|
|
764
|
+
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>& relExpr = relation[2] && relation[1];</div>
|
|
765
|
+
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>& initExpr = rs.<a class="code" href="classSVF_1_1RelationSolver.html#a04f145c44a67ebda99ccc5a3081239ff">gamma_hat</a>(inv);</div>
|
|
766
|
+
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>& phi = (relExpr && initExpr).simplify();</div>
|
|
767
|
+
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> resRSY = <a class="code" href="classSymblicAbstractionTest.html#a96a651463812ee4cdb597926ba3dc1cf">RSY_time</a>(inv, phi, rs);</div>
|
|
768
|
+
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> resBilateral = <a class="code" href="classSymblicAbstractionTest.html#ad9539ad539a0e3848b7ad1d65ebe81fe">Bilateral_time</a>(inv, phi, rs);</div>
|
|
769
|
+
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> resBS = <a class="code" href="classSymblicAbstractionTest.html#a00618d1c3ca0c30883aad8f95e9f9f30">BS_time</a>(inv, phi, rs);</div>
|
|
770
|
+
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="comment">// 0:[0,10000] 1:[0,10000] 2:[0,0]</span></div>
|
|
771
|
+
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  assert(resRSY == resBS && resBS == resBilateral && <span class="stringliteral">"inconsistency occurs"</span>);</div>
|
|
772
|
+
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> r : resRSY.<a class="code" href="classSVF_1_1AbstractState.html#a4e4525823fd31c718216c698ed6e0a06">getVarToVal</a>())</div>
|
|
773
|
+
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  {</div>
|
|
774
|
+
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << r.first << <span class="stringliteral">" "</span> << r.second.getInterval() << <span class="stringliteral">"\n"</span>;</div>
|
|
775
|
+
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  }</div>
|
|
776
|
+
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="comment">// ground truth</span></div>
|
|
777
|
+
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <a class="code" href="classSVF_1_1AbstractState.html#ab8e7d112c380f0c3fe66b487af90c03e">AbstractState::VarToAbsValMap</a> intendedRes = {{0, <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 10000)},</div>
|
|
778
|
+
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  {1, <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 10000)},</div>
|
|
779
|
+
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  {2, <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 0)}</div>
|
|
780
|
+
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  };</div>
|
|
781
|
+
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  assert(AbstractState::eqVarToValMap(resBS.<a class="code" href="classSVF_1_1AbstractState.html#a4e4525823fd31c718216c698ed6e0a06">getVarToVal</a>(), intendedRes) && <span class="stringliteral">"inconsistency occurs"</span>);</div>
|
|
782
|
+
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  }</div>
|
|
785
783
|
</div><!-- fragment -->
|
|
786
784
|
</div>
|
|
787
785
|
</div>
|
|
@@ -808,49 +806,48 @@ Static Public Member Functions</h2></td></tr>
|
|
|
808
806
|
</table>
|
|
809
807
|
</div><div class="memdoc">
|
|
810
808
|
|
|
811
|
-
<p class="definition">Definition at line <a class="el" href="ae_8cpp_source.html#
|
|
812
|
-
<div class="fragment"><div class="line"><a name="
|
|
813
|
-
<div class="line"><a name="
|
|
814
|
-
<div class="line"><a name="
|
|
815
|
-
<div class="line"><a name="
|
|
816
|
-
<div class="line"><a name="
|
|
817
|
-
<div class="line"><a name="
|
|
818
|
-
<div class="line"><a name="
|
|
819
|
-
<div class="line"><a name="
|
|
820
|
-
<div class="line"><a name="
|
|
821
|
-
<div class="line"><a name="
|
|
822
|
-
<div class="line"><a name="
|
|
823
|
-
<div class="line"><a name="
|
|
824
|
-
<div class="line"><a name="
|
|
825
|
-
<div class="line"><a name="
|
|
826
|
-
<div class="line"><a name="
|
|
827
|
-
<div class="line"><a name="
|
|
828
|
-
<div class="line"><a name="
|
|
829
|
-
<div class="line"><a name="
|
|
830
|
-
<div class="line"><a name="
|
|
831
|
-
<div class="line"><a name="
|
|
832
|
-
<div class="line"><a name="
|
|
833
|
-
<div class="line"><a name="
|
|
834
|
-
<div class="line"><a name="
|
|
835
|
-
<div class="line"><a name="
|
|
836
|
-
<div class="line"><a name="
|
|
837
|
-
<div class="line"><a name="
|
|
838
|
-
<div class="line"><a name="
|
|
839
|
-
<div class="line"><a name="
|
|
840
|
-
<div class="line"><a name="
|
|
841
|
-
<div class="line"><a name="
|
|
842
|
-
<div class="line"><a name="
|
|
843
|
-
<div class="line"><a name="
|
|
844
|
-
<div class="line"><a name="
|
|
845
|
-
<div class="line"><a name="
|
|
846
|
-
<div class="line"><a name="
|
|
847
|
-
<div class="line"><a name="
|
|
848
|
-
<div class="line"><a name="
|
|
849
|
-
<div class="line"><a name="
|
|
850
|
-
<div class="line"><a name="
|
|
851
|
-
<div class="line"><a name="
|
|
852
|
-
<div class="line"><a name="
|
|
853
|
-
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  }</div>
|
|
809
|
+
<p class="definition">Definition at line <a class="el" href="ae_8cpp_source.html#l00343">343</a> of file <a class="el" href="ae_8cpp_source.html">ae.cpp</a>.</p>
|
|
810
|
+
<div class="fragment"><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  {</div>
|
|
811
|
+
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"test2_5 start\n"</span>;</div>
|
|
812
|
+
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> itv;</div>
|
|
813
|
+
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <a class="code" href="classSVF_1_1RelExeState.html">RelExeState</a> relation;</div>
|
|
814
|
+
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="comment">// var0 := [0, 100000];</span></div>
|
|
815
|
+
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  relation[0] = <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"0"</span>);</div>
|
|
816
|
+
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  itv[0] = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 100000);</div>
|
|
817
|
+
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="comment">// var1 := var0;</span></div>
|
|
818
|
+
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  relation[1] =</div>
|
|
819
|
+
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"1"</span>) == <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"0"</span>);</div>
|
|
820
|
+
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  itv[1] = itv[0];</div>
|
|
821
|
+
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <span class="comment">// var2 := var1 - var0;</span></div>
|
|
822
|
+
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  relation[2] = <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"2"</span>) ==</div>
|
|
823
|
+
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"1"</span>) - <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"0"</span>);</div>
|
|
824
|
+
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  itv[2] = itv[1] - itv[0];</div>
|
|
825
|
+
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  </div>
|
|
826
|
+
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="comment">// Test extract sub vars</span></div>
|
|
827
|
+
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<u32_t></a> res;</div>
|
|
828
|
+
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  relation.<a class="code" href="classSVF_1_1RelExeState.html#a3393f160508c33e68ebedd042d1d296f">extractSubVars</a>(relation[2], res);</div>
|
|
829
|
+
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  assert(res == <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<u32_t></a>({0, 1, 2}) && <span class="stringliteral">"inconsistency occurs"</span>);</div>
|
|
830
|
+
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> inv = itv.<a class="code" href="classSVF_1_1AbstractState.html#ae9897b85e3cb2dc675d3a2df76c44878">sliceState</a>(res);</div>
|
|
831
|
+
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <a class="code" href="classSVF_1_1RelationSolver.html">RelationSolver</a> rs;</div>
|
|
832
|
+
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>& relExpr = relation[2] && relation[1];</div>
|
|
833
|
+
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>& initExpr = rs.<a class="code" href="classSVF_1_1RelationSolver.html#a04f145c44a67ebda99ccc5a3081239ff">gamma_hat</a>(inv);</div>
|
|
834
|
+
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>& phi = (relExpr && initExpr).simplify();</div>
|
|
835
|
+
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> resRSY = <a class="code" href="classSymblicAbstractionTest.html#a96a651463812ee4cdb597926ba3dc1cf">RSY_time</a>(inv, phi, rs);</div>
|
|
836
|
+
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> resBilateral = <a class="code" href="classSymblicAbstractionTest.html#ad9539ad539a0e3848b7ad1d65ebe81fe">Bilateral_time</a>(inv, phi, rs);</div>
|
|
837
|
+
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> resBS = <a class="code" href="classSymblicAbstractionTest.html#a00618d1c3ca0c30883aad8f95e9f9f30">BS_time</a>(inv, phi, rs);</div>
|
|
838
|
+
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="comment">// 0:[0,100000] 1:[0,100000] 2:[0,0]</span></div>
|
|
839
|
+
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  assert(resRSY == resBS && resBS == resBilateral && <span class="stringliteral">"inconsistency occurs"</span>);</div>
|
|
840
|
+
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> r : resRSY.<a class="code" href="classSVF_1_1AbstractState.html#a4e4525823fd31c718216c698ed6e0a06">getVarToVal</a>())</div>
|
|
841
|
+
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  {</div>
|
|
842
|
+
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << r.first << <span class="stringliteral">" "</span> << r.second.getInterval() << <span class="stringliteral">"\n"</span>;</div>
|
|
843
|
+
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  }</div>
|
|
844
|
+
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="comment">// ground truth</span></div>
|
|
845
|
+
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <a class="code" href="classSVF_1_1AbstractState.html#ab8e7d112c380f0c3fe66b487af90c03e">AbstractState::VarToAbsValMap</a> intendedRes = {{0, <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 100000)},</div>
|
|
846
|
+
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  {1, <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 100000)},</div>
|
|
847
|
+
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  {2, <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 0)}</div>
|
|
848
|
+
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  };</div>
|
|
849
|
+
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  assert(AbstractState::eqVarToValMap(resBS.<a class="code" href="classSVF_1_1AbstractState.html#a4e4525823fd31c718216c698ed6e0a06">getVarToVal</a>(), intendedRes) && <span class="stringliteral">"inconsistency occurs"</span>);</div>
|
|
850
|
+
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  }</div>
|
|
854
851
|
</div><!-- fragment -->
|
|
855
852
|
</div>
|
|
856
853
|
</div>
|
|
@@ -877,47 +874,47 @@ Static Public Member Functions</h2></td></tr>
|
|
|
877
874
|
</table>
|
|
878
875
|
</div><div class="memdoc">
|
|
879
876
|
|
|
880
|
-
<p class="definition">Definition at line <a class="el" href="ae_8cpp_source.html#
|
|
881
|
-
<div class="fragment"><div class="line"><a name="
|
|
882
|
-
<div class="line"><a name="
|
|
883
|
-
<div class="line"><a name="
|
|
884
|
-
<div class="line"><a name="
|
|
885
|
-
<div class="line"><a name="
|
|
886
|
-
<div class="line"><a name="
|
|
887
|
-
<div class="line"><a name="
|
|
888
|
-
<div class="line"><a name="
|
|
889
|
-
<div class="line"><a name="
|
|
890
|
-
<div class="line"><a name="
|
|
891
|
-
<div class="line"><a name="
|
|
892
|
-
<div class="line"><a name="
|
|
893
|
-
<div class="line"><a name="
|
|
894
|
-
<div class="line"><a name="
|
|
895
|
-
<div class="line"><a name="
|
|
896
|
-
<div class="line"><a name="
|
|
897
|
-
<div class="line"><a name="
|
|
898
|
-
<div class="line"><a name="
|
|
899
|
-
<div class="line"><a name="
|
|
900
|
-
<div class="line"><a name="
|
|
901
|
-
<div class="line"><a name="
|
|
902
|
-
<div class="line"><a name="
|
|
903
|
-
<div class="line"><a name="
|
|
904
|
-
<div class="line"><a name="
|
|
905
|
-
<div class="line"><a name="
|
|
906
|
-
<div class="line"><a name="
|
|
907
|
-
<div class="line"><a name="
|
|
908
|
-
<div class="line"><a name="
|
|
909
|
-
<div class="line"><a name="
|
|
910
|
-
<div class="line"><a name="
|
|
911
|
-
<div class="line"><a name="
|
|
912
|
-
<div class="line"><a name="
|
|
913
|
-
<div class="line"><a name="
|
|
914
|
-
<div class="line"><a name="
|
|
915
|
-
<div class="line"><a name="
|
|
916
|
-
<div class="line"><a name="
|
|
917
|
-
<div class="line"><a name="
|
|
918
|
-
<div class="line"><a name="
|
|
919
|
-
<div class="line"><a name="
|
|
920
|
-
<div class="line"><a name="
|
|
877
|
+
<p class="definition">Definition at line <a class="el" href="ae_8cpp_source.html#l00386">386</a> of file <a class="el" href="ae_8cpp_source.html">ae.cpp</a>.</p>
|
|
878
|
+
<div class="fragment"><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  {</div>
|
|
879
|
+
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"test3_1 start\n"</span>;</div>
|
|
880
|
+
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> itv;</div>
|
|
881
|
+
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <a class="code" href="classSVF_1_1RelExeState.html">RelExeState</a> relation;</div>
|
|
882
|
+
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="comment">// var0 := [1, 10];</span></div>
|
|
883
|
+
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  relation[0] = <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"0"</span>);</div>
|
|
884
|
+
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  itv[0] = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(1, 10);</div>
|
|
885
|
+
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="comment">// var1 := var0;</span></div>
|
|
886
|
+
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  relation[1] =</div>
|
|
887
|
+
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"1"</span>) == <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"0"</span>);</div>
|
|
888
|
+
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  itv[1] = itv[0];</div>
|
|
889
|
+
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="comment">// var2 := var1 / var0;</span></div>
|
|
890
|
+
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  relation[2] = <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"2"</span>) ==</div>
|
|
891
|
+
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"1"</span>) / <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"0"</span>);</div>
|
|
892
|
+
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  itv[2] = itv[1] / itv[0];</div>
|
|
893
|
+
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="comment">// Test extract sub vars</span></div>
|
|
894
|
+
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<u32_t></a> res;</div>
|
|
895
|
+
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  relation.<a class="code" href="classSVF_1_1RelExeState.html#a3393f160508c33e68ebedd042d1d296f">extractSubVars</a>(relation[2], res);</div>
|
|
896
|
+
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  assert(res == <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<u32_t></a>({0, 1, 2}) && <span class="stringliteral">"inconsistency occurs"</span>);</div>
|
|
897
|
+
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> inv = itv.<a class="code" href="classSVF_1_1AbstractState.html#ae9897b85e3cb2dc675d3a2df76c44878">sliceState</a>(res);</div>
|
|
898
|
+
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <a class="code" href="classSVF_1_1RelationSolver.html">RelationSolver</a> rs;</div>
|
|
899
|
+
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>& relExpr = relation[2] && relation[1];</div>
|
|
900
|
+
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>& initExpr = rs.<a class="code" href="classSVF_1_1RelationSolver.html#a04f145c44a67ebda99ccc5a3081239ff">gamma_hat</a>(inv);</div>
|
|
901
|
+
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>& phi = (relExpr && initExpr).simplify();</div>
|
|
902
|
+
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> resRSY = rs.<a class="code" href="classSVF_1_1RelationSolver.html#a0bc76a5f96dab54e1c9678312579d51a">RSY</a>(inv, phi);</div>
|
|
903
|
+
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> resBilateral = rs.<a class="code" href="classSVF_1_1RelationSolver.html#a23c59e437950b139dde49f11eb45b63a">bilateral</a>(inv, phi);</div>
|
|
904
|
+
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> resBS = rs.<a class="code" href="classSVF_1_1RelationSolver.html#a98f7e3ae9f43aea178d77a58ac8e927f">BS</a>(inv, phi);</div>
|
|
905
|
+
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="comment">// 0:[1,10] 1:[1,10] 2:[1,1]</span></div>
|
|
906
|
+
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  assert(resRSY == resBS && resBS == resBilateral && <span class="stringliteral">"inconsistency occurs"</span>);</div>
|
|
907
|
+
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> r : resRSY.<a class="code" href="classSVF_1_1AbstractState.html#a4e4525823fd31c718216c698ed6e0a06">getVarToVal</a>())</div>
|
|
908
|
+
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  {</div>
|
|
909
|
+
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << r.first << <span class="stringliteral">" "</span> << r.second.getInterval() << <span class="stringliteral">"\n"</span>;</div>
|
|
910
|
+
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  }</div>
|
|
911
|
+
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="comment">// ground truth</span></div>
|
|
912
|
+
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <a class="code" href="classSVF_1_1AbstractState.html#ab8e7d112c380f0c3fe66b487af90c03e">AbstractState::VarToAbsValMap</a> intendedRes = {{0, <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(1, 10)},</div>
|
|
913
|
+
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  {1, <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(1, 10)},</div>
|
|
914
|
+
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  {2, <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(1, 1)}</div>
|
|
915
|
+
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  };</div>
|
|
916
|
+
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  assert(AbstractState::eqVarToValMap(resBS.<a class="code" href="classSVF_1_1AbstractState.html#a4e4525823fd31c718216c698ed6e0a06">getVarToVal</a>(), intendedRes) && <span class="stringliteral">"inconsistency occurs"</span>);</div>
|
|
917
|
+
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  }</div>
|
|
921
918
|
</div><!-- fragment -->
|
|
922
919
|
</div>
|
|
923
920
|
</div>
|
|
@@ -944,47 +941,47 @@ Static Public Member Functions</h2></td></tr>
|
|
|
944
941
|
</table>
|
|
945
942
|
</div><div class="memdoc">
|
|
946
943
|
|
|
947
|
-
<p class="definition">Definition at line <a class="el" href="ae_8cpp_source.html#
|
|
948
|
-
<div class="fragment"><div class="line"><a name="
|
|
949
|
-
<div class="line"><a name="
|
|
950
|
-
<div class="line"><a name="
|
|
951
|
-
<div class="line"><a name="
|
|
952
|
-
<div class="line"><a name="
|
|
953
|
-
<div class="line"><a name="
|
|
954
|
-
<div class="line"><a name="
|
|
955
|
-
<div class="line"><a name="
|
|
956
|
-
<div class="line"><a name="
|
|
957
|
-
<div class="line"><a name="
|
|
958
|
-
<div class="line"><a name="
|
|
959
|
-
<div class="line"><a name="
|
|
960
|
-
<div class="line"><a name="
|
|
961
|
-
<div class="line"><a name="
|
|
962
|
-
<div class="line"><a name="
|
|
963
|
-
<div class="line"><a name="
|
|
964
|
-
<div class="line"><a name="
|
|
965
|
-
<div class="line"><a name="
|
|
966
|
-
<div class="line"><a name="
|
|
967
|
-
<div class="line"><a name="
|
|
968
|
-
<div class="line"><a name="
|
|
969
|
-
<div class="line"><a name="
|
|
970
|
-
<div class="line"><a name="
|
|
971
|
-
<div class="line"><a name="
|
|
972
|
-
<div class="line"><a name="
|
|
973
|
-
<div class="line"><a name="
|
|
974
|
-
<div class="line"><a name="
|
|
975
|
-
<div class="line"><a name="
|
|
976
|
-
<div class="line"><a name="
|
|
977
|
-
<div class="line"><a name="
|
|
978
|
-
<div class="line"><a name="
|
|
979
|
-
<div class="line"><a name="
|
|
980
|
-
<div class="line"><a name="
|
|
981
|
-
<div class="line"><a name="
|
|
982
|
-
<div class="line"><a name="
|
|
983
|
-
<div class="line"><a name="
|
|
984
|
-
<div class="line"><a name="
|
|
985
|
-
<div class="line"><a name="
|
|
986
|
-
<div class="line"><a name="
|
|
987
|
-
<div class="line"><a name="
|
|
944
|
+
<p class="definition">Definition at line <a class="el" href="ae_8cpp_source.html#l00428">428</a> of file <a class="el" href="ae_8cpp_source.html">ae.cpp</a>.</p>
|
|
945
|
+
<div class="fragment"><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  {</div>
|
|
946
|
+
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"test3_2 start\n"</span>;</div>
|
|
947
|
+
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> itv;</div>
|
|
948
|
+
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <a class="code" href="classSVF_1_1RelExeState.html">RelExeState</a> relation;</div>
|
|
949
|
+
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="comment">// var0 := [1, 1000];</span></div>
|
|
950
|
+
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  relation[0] = <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"0"</span>);</div>
|
|
951
|
+
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  itv[0] = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(1, 1000);</div>
|
|
952
|
+
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="comment">// var1 := var0;</span></div>
|
|
953
|
+
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  relation[1] =</div>
|
|
954
|
+
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"1"</span>) == <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"0"</span>);</div>
|
|
955
|
+
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  itv[1] = itv[0];</div>
|
|
956
|
+
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="comment">// var2 := var1 / var0;</span></div>
|
|
957
|
+
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  relation[2] = <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"2"</span>) ==</div>
|
|
958
|
+
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"1"</span>) / <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"0"</span>);</div>
|
|
959
|
+
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  itv[2] = itv[1] / itv[0];</div>
|
|
960
|
+
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="comment">// Test extract sub vars</span></div>
|
|
961
|
+
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<u32_t></a> res;</div>
|
|
962
|
+
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  relation.<a class="code" href="classSVF_1_1RelExeState.html#a3393f160508c33e68ebedd042d1d296f">extractSubVars</a>(relation[2], res);</div>
|
|
963
|
+
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  assert(res == <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<u32_t></a>({0, 1, 2}) && <span class="stringliteral">"inconsistency occurs"</span>);</div>
|
|
964
|
+
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> inv = itv.<a class="code" href="classSVF_1_1AbstractState.html#ae9897b85e3cb2dc675d3a2df76c44878">sliceState</a>(res);</div>
|
|
965
|
+
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <a class="code" href="classSVF_1_1RelationSolver.html">RelationSolver</a> rs;</div>
|
|
966
|
+
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>& relExpr = relation[2] && relation[1];</div>
|
|
967
|
+
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>& initExpr = rs.<a class="code" href="classSVF_1_1RelationSolver.html#a04f145c44a67ebda99ccc5a3081239ff">gamma_hat</a>(inv);</div>
|
|
968
|
+
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>& phi = (relExpr && initExpr).simplify();</div>
|
|
969
|
+
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> resRSY = rs.<a class="code" href="classSVF_1_1RelationSolver.html#a0bc76a5f96dab54e1c9678312579d51a">RSY</a>(inv, phi);</div>
|
|
970
|
+
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> resBilateral = rs.<a class="code" href="classSVF_1_1RelationSolver.html#a23c59e437950b139dde49f11eb45b63a">bilateral</a>(inv, phi);</div>
|
|
971
|
+
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> resBS = rs.<a class="code" href="classSVF_1_1RelationSolver.html#a98f7e3ae9f43aea178d77a58ac8e927f">BS</a>(inv, phi);</div>
|
|
972
|
+
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <span class="comment">// 0:[1,1000] 1:[1,1000] 2:[1,1]</span></div>
|
|
973
|
+
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  assert(resRSY == resBS && resBS == resBilateral && <span class="stringliteral">"inconsistency occurs"</span>);</div>
|
|
974
|
+
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> r : resRSY.<a class="code" href="classSVF_1_1AbstractState.html#a4e4525823fd31c718216c698ed6e0a06">getVarToVal</a>())</div>
|
|
975
|
+
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  {</div>
|
|
976
|
+
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << r.first << <span class="stringliteral">" "</span> << r.second.getInterval() << <span class="stringliteral">"\n"</span>;</div>
|
|
977
|
+
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  }</div>
|
|
978
|
+
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="comment">// ground truth</span></div>
|
|
979
|
+
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <a class="code" href="classSVF_1_1AbstractState.html#ab8e7d112c380f0c3fe66b487af90c03e">AbstractState::VarToAbsValMap</a> intendedRes = {{0, <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(1, 1000)},</div>
|
|
980
|
+
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  {1, <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(1, 1000)},</div>
|
|
981
|
+
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  {2, <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(1, 1)}</div>
|
|
982
|
+
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  };</div>
|
|
983
|
+
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  assert(AbstractState::eqVarToValMap(resBS.<a class="code" href="classSVF_1_1AbstractState.html#a4e4525823fd31c718216c698ed6e0a06">getVarToVal</a>(), intendedRes) && <span class="stringliteral">"inconsistency occurs"</span>);</div>
|
|
984
|
+
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  }</div>
|
|
988
985
|
</div><!-- fragment -->
|
|
989
986
|
</div>
|
|
990
987
|
</div>
|
|
@@ -1011,46 +1008,46 @@ Static Public Member Functions</h2></td></tr>
|
|
|
1011
1008
|
</table>
|
|
1012
1009
|
</div><div class="memdoc">
|
|
1013
1010
|
|
|
1014
|
-
<p class="definition">Definition at line <a class="el" href="ae_8cpp_source.html#
|
|
1015
|
-
<div class="fragment"><div class="line"><a name="
|
|
1016
|
-
<div class="line"><a name="
|
|
1017
|
-
<div class="line"><a name="
|
|
1018
|
-
<div class="line"><a name="
|
|
1019
|
-
<div class="line"><a name="
|
|
1020
|
-
<div class="line"><a name="
|
|
1021
|
-
<div class="line"><a name="
|
|
1022
|
-
<div class="line"><a name="
|
|
1023
|
-
<div class="line"><a name="
|
|
1024
|
-
<div class="line"><a name="
|
|
1025
|
-
<div class="line"><a name="
|
|
1026
|
-
<div class="line"><a name="
|
|
1027
|
-
<div class="line"><a name="
|
|
1028
|
-
<div class="line"><a name="
|
|
1029
|
-
<div class="line"><a name="
|
|
1030
|
-
<div class="line"><a name="
|
|
1031
|
-
<div class="line"><a name="
|
|
1032
|
-
<div class="line"><a name="
|
|
1033
|
-
<div class="line"><a name="
|
|
1034
|
-
<div class="line"><a name="
|
|
1035
|
-
<div class="line"><a name="
|
|
1036
|
-
<div class="line"><a name="
|
|
1037
|
-
<div class="line"><a name="
|
|
1038
|
-
<div class="line"><a name="
|
|
1039
|
-
<div class="line"><a name="
|
|
1040
|
-
<div class="line"><a name="
|
|
1041
|
-
<div class="line"><a name="
|
|
1042
|
-
<div class="line"><a name="
|
|
1043
|
-
<div class="line"><a name="
|
|
1044
|
-
<div class="line"><a name="
|
|
1045
|
-
<div class="line"><a name="
|
|
1046
|
-
<div class="line"><a name="
|
|
1047
|
-
<div class="line"><a name="
|
|
1048
|
-
<div class="line"><a name="
|
|
1049
|
-
<div class="line"><a name="
|
|
1050
|
-
<div class="line"><a name="
|
|
1051
|
-
<div class="line"><a name="
|
|
1052
|
-
<div class="line"><a name="
|
|
1053
|
-
<div class="line"><a name="
|
|
1011
|
+
<p class="definition">Definition at line <a class="el" href="ae_8cpp_source.html#l00470">470</a> of file <a class="el" href="ae_8cpp_source.html">ae.cpp</a>.</p>
|
|
1012
|
+
<div class="fragment"><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  {</div>
|
|
1013
|
+
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"test3_3 start\n"</span>;</div>
|
|
1014
|
+
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> itv;</div>
|
|
1015
|
+
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <a class="code" href="classSVF_1_1RelExeState.html">RelExeState</a> relation;</div>
|
|
1016
|
+
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="comment">// var0 := [1, 10000];</span></div>
|
|
1017
|
+
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  relation[0] = <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"0"</span>);</div>
|
|
1018
|
+
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  itv[0] = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(1, 10000);</div>
|
|
1019
|
+
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="comment">// var1 := var0;</span></div>
|
|
1020
|
+
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  relation[1] =</div>
|
|
1021
|
+
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"1"</span>) == <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"0"</span>);</div>
|
|
1022
|
+
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  itv[1] = itv[0];</div>
|
|
1023
|
+
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="comment">// var2 := var1 / var0;</span></div>
|
|
1024
|
+
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  relation[2] = <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"2"</span>) ==</div>
|
|
1025
|
+
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"1"</span>) / <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"0"</span>);</div>
|
|
1026
|
+
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  itv[2] = itv[1] / itv[0];</div>
|
|
1027
|
+
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="comment">// Test extract sub vars</span></div>
|
|
1028
|
+
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<u32_t></a> res;</div>
|
|
1029
|
+
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  relation.<a class="code" href="classSVF_1_1RelExeState.html#a3393f160508c33e68ebedd042d1d296f">extractSubVars</a>(relation[2], res);</div>
|
|
1030
|
+
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  assert(res == <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<u32_t></a>({0, 1, 2}) && <span class="stringliteral">"inconsistency occurs"</span>);</div>
|
|
1031
|
+
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> inv = itv.<a class="code" href="classSVF_1_1AbstractState.html#ae9897b85e3cb2dc675d3a2df76c44878">sliceState</a>(res);</div>
|
|
1032
|
+
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <a class="code" href="classSVF_1_1RelationSolver.html">RelationSolver</a> rs;</div>
|
|
1033
|
+
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>& relExpr = relation[2] && relation[1];</div>
|
|
1034
|
+
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>& initExpr = rs.<a class="code" href="classSVF_1_1RelationSolver.html#a04f145c44a67ebda99ccc5a3081239ff">gamma_hat</a>(inv);</div>
|
|
1035
|
+
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>& phi = (relExpr && initExpr).simplify();</div>
|
|
1036
|
+
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> resRSY = <a class="code" href="classSymblicAbstractionTest.html#a96a651463812ee4cdb597926ba3dc1cf">RSY_time</a>(inv, phi, rs);</div>
|
|
1037
|
+
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> resBilateral = <a class="code" href="classSymblicAbstractionTest.html#ad9539ad539a0e3848b7ad1d65ebe81fe">Bilateral_time</a>(inv, phi, rs);</div>
|
|
1038
|
+
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> resBS = <a class="code" href="classSymblicAbstractionTest.html#a00618d1c3ca0c30883aad8f95e9f9f30">BS_time</a>(inv, phi, rs);</div>
|
|
1039
|
+
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="comment">// 0:[1,10000] 1:[1,10000] 2:[1,1]</span></div>
|
|
1040
|
+
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  assert(resRSY == resBS && resBS == resBilateral && <span class="stringliteral">"inconsistency occurs"</span>);</div>
|
|
1041
|
+
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> r : resRSY.<a class="code" href="classSVF_1_1AbstractState.html#a4e4525823fd31c718216c698ed6e0a06">getVarToVal</a>())</div>
|
|
1042
|
+
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  {</div>
|
|
1043
|
+
<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << r.first << <span class="stringliteral">" "</span> << r.second.getInterval() << <span class="stringliteral">"\n"</span>;</div>
|
|
1044
|
+
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  }</div>
|
|
1045
|
+
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <span class="comment">// ground truth</span></div>
|
|
1046
|
+
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <a class="code" href="classSVF_1_1AbstractState.html#ab8e7d112c380f0c3fe66b487af90c03e">AbstractState::VarToAbsValMap</a> intendedRes = {{0, <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(1, 10000)},</div>
|
|
1047
|
+
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  {1, <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(1, 10000)},</div>
|
|
1048
|
+
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  {2, <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(1, 1)}</div>
|
|
1049
|
+
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  };</div>
|
|
1050
|
+
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  }</div>
|
|
1054
1051
|
</div><!-- fragment -->
|
|
1055
1052
|
</div>
|
|
1056
1053
|
</div>
|
|
@@ -1077,47 +1074,47 @@ Static Public Member Functions</h2></td></tr>
|
|
|
1077
1074
|
</table>
|
|
1078
1075
|
</div><div class="memdoc">
|
|
1079
1076
|
|
|
1080
|
-
<p class="definition">Definition at line <a class="el" href="ae_8cpp_source.html#
|
|
1081
|
-
<div class="fragment"><div class="line"><a name="
|
|
1082
|
-
<div class="line"><a name="
|
|
1083
|
-
<div class="line"><a name="
|
|
1084
|
-
<div class="line"><a name="
|
|
1085
|
-
<div class="line"><a name="
|
|
1086
|
-
<div class="line"><a name="
|
|
1087
|
-
<div class="line"><a name="
|
|
1088
|
-
<div class="line"><a name="
|
|
1089
|
-
<div class="line"><a name="
|
|
1090
|
-
<div class="line"><a name="
|
|
1091
|
-
<div class="line"><a name="
|
|
1092
|
-
<div class="line"><a name="
|
|
1093
|
-
<div class="line"><a name="
|
|
1094
|
-
<div class="line"><a name="
|
|
1095
|
-
<div class="line"><a name="
|
|
1096
|
-
<div class="line"><a name="
|
|
1097
|
-
<div class="line"><a name="
|
|
1098
|
-
<div class="line"><a name="
|
|
1099
|
-
<div class="line"><a name="
|
|
1100
|
-
<div class="line"><a name="
|
|
1101
|
-
<div class="line"><a name="
|
|
1102
|
-
<div class="line"><a name="
|
|
1103
|
-
<div class="line"><a name="
|
|
1104
|
-
<div class="line"><a name="
|
|
1105
|
-
<div class="line"><a name="
|
|
1106
|
-
<div class="line"><a name="
|
|
1107
|
-
<div class="line"><a name="
|
|
1108
|
-
<div class="line"><a name="
|
|
1109
|
-
<div class="line"><a name="
|
|
1110
|
-
<div class="line"><a name="
|
|
1111
|
-
<div class="line"><a name="
|
|
1112
|
-
<div class="line"><a name="
|
|
1113
|
-
<div class="line"><a name="
|
|
1114
|
-
<div class="line"><a name="
|
|
1115
|
-
<div class="line"><a name="
|
|
1116
|
-
<div class="line"><a name="
|
|
1117
|
-
<div class="line"><a name="
|
|
1118
|
-
<div class="line"><a name="
|
|
1119
|
-
<div class="line"><a name="
|
|
1120
|
-
<div class="line"><a name="
|
|
1077
|
+
<p class="definition">Definition at line <a class="el" href="ae_8cpp_source.html#l00511">511</a> of file <a class="el" href="ae_8cpp_source.html">ae.cpp</a>.</p>
|
|
1078
|
+
<div class="fragment"><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  {</div>
|
|
1079
|
+
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"test3_4 start\n"</span>;</div>
|
|
1080
|
+
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> itv;</div>
|
|
1081
|
+
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <a class="code" href="classSVF_1_1RelExeState.html">RelExeState</a> relation;</div>
|
|
1082
|
+
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <span class="comment">// var0 := [1, 100000];</span></div>
|
|
1083
|
+
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  relation[0] = <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"0"</span>);</div>
|
|
1084
|
+
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  itv[0] = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(1, 100000);</div>
|
|
1085
|
+
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="comment">// var1 := var0;</span></div>
|
|
1086
|
+
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  relation[1] =</div>
|
|
1087
|
+
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"1"</span>) == <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"0"</span>);</div>
|
|
1088
|
+
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  itv[1] = itv[0];</div>
|
|
1089
|
+
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <span class="comment">// var2 := var1 / var0;</span></div>
|
|
1090
|
+
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  relation[2] = <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"2"</span>) ==</div>
|
|
1091
|
+
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"1"</span>) / <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"0"</span>);</div>
|
|
1092
|
+
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  itv[2] = itv[1] / itv[0];</div>
|
|
1093
|
+
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <span class="comment">// Test extract sub vars</span></div>
|
|
1094
|
+
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<u32_t></a> res;</div>
|
|
1095
|
+
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  relation.<a class="code" href="classSVF_1_1RelExeState.html#a3393f160508c33e68ebedd042d1d296f">extractSubVars</a>(relation[2], res);</div>
|
|
1096
|
+
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  assert(res == <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<u32_t></a>({0, 1, 2}) && <span class="stringliteral">"inconsistency occurs"</span>);</div>
|
|
1097
|
+
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> inv = itv.<a class="code" href="classSVF_1_1AbstractState.html#ae9897b85e3cb2dc675d3a2df76c44878">sliceState</a>(res);</div>
|
|
1098
|
+
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <a class="code" href="classSVF_1_1RelationSolver.html">RelationSolver</a> rs;</div>
|
|
1099
|
+
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>& relExpr = relation[2] && relation[1];</div>
|
|
1100
|
+
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>& initExpr = rs.<a class="code" href="classSVF_1_1RelationSolver.html#a04f145c44a67ebda99ccc5a3081239ff">gamma_hat</a>(inv);</div>
|
|
1101
|
+
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>& phi = (relExpr && initExpr).simplify();</div>
|
|
1102
|
+
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> resRSY = <a class="code" href="classSymblicAbstractionTest.html#a96a651463812ee4cdb597926ba3dc1cf">RSY_time</a>(inv, phi, rs);</div>
|
|
1103
|
+
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> resBilateral = <a class="code" href="classSymblicAbstractionTest.html#ad9539ad539a0e3848b7ad1d65ebe81fe">Bilateral_time</a>(inv, phi, rs);</div>
|
|
1104
|
+
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> resBS = <a class="code" href="classSymblicAbstractionTest.html#a00618d1c3ca0c30883aad8f95e9f9f30">BS_time</a>(inv, phi, rs);</div>
|
|
1105
|
+
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <span class="comment">// 0:[1,100000] 1:[1,100000] 2:[1,1]</span></div>
|
|
1106
|
+
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  assert(resRSY == resBS && resBS == resBilateral && <span class="stringliteral">"inconsistency occurs"</span>);</div>
|
|
1107
|
+
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> r : resRSY.<a class="code" href="classSVF_1_1AbstractState.html#a4e4525823fd31c718216c698ed6e0a06">getVarToVal</a>())</div>
|
|
1108
|
+
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  {</div>
|
|
1109
|
+
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << r.first << <span class="stringliteral">" "</span> << r.second.getInterval() << <span class="stringliteral">"\n"</span>;</div>
|
|
1110
|
+
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  }</div>
|
|
1111
|
+
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  <span class="comment">// ground truth</span></div>
|
|
1112
|
+
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  <a class="code" href="classSVF_1_1AbstractState.html#ab8e7d112c380f0c3fe66b487af90c03e">AbstractState::VarToAbsValMap</a> intendedRes = {{0, <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(1, 100000)},</div>
|
|
1113
|
+
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  {1, <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(1, 100000)},</div>
|
|
1114
|
+
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  {2, <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(1, 1)}</div>
|
|
1115
|
+
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  };</div>
|
|
1116
|
+
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  assert(AbstractState::eqVarToValMap(resBS.<a class="code" href="classSVF_1_1AbstractState.html#a4e4525823fd31c718216c698ed6e0a06">getVarToVal</a>(), intendedRes) && <span class="stringliteral">"inconsistency occurs"</span>);</div>
|
|
1117
|
+
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  }</div>
|
|
1121
1118
|
</div><!-- fragment -->
|
|
1122
1119
|
</div>
|
|
1123
1120
|
</div>
|
|
@@ -1144,50 +1141,50 @@ Static Public Member Functions</h2></td></tr>
|
|
|
1144
1141
|
</table>
|
|
1145
1142
|
</div><div class="memdoc">
|
|
1146
1143
|
|
|
1147
|
-
<p class="definition">Definition at line <a class="el" href="ae_8cpp_source.html#
|
|
1148
|
-
<div class="fragment"><div class="line"><a name="
|
|
1149
|
-
<div class="line"><a name="
|
|
1150
|
-
<div class="line"><a name="
|
|
1151
|
-
<div class="line"><a name="
|
|
1152
|
-
<div class="line"><a name="
|
|
1153
|
-
<div class="line"><a name="
|
|
1154
|
-
<div class="line"><a name="
|
|
1155
|
-
<div class="line"><a name="
|
|
1156
|
-
<div class="line"><a name="
|
|
1157
|
-
<div class="line"><a name="
|
|
1158
|
-
<div class="line"><a name="
|
|
1159
|
-
<div class="line"><a name="
|
|
1160
|
-
<div class="line"><a name="
|
|
1161
|
-
<div class="line"><a name="
|
|
1162
|
-
<div class="line"><a name="
|
|
1163
|
-
<div class="line"><a name="
|
|
1164
|
-
<div class="line"><a name="
|
|
1165
|
-
<div class="line"><a name="
|
|
1166
|
-
<div class="line"><a name="
|
|
1167
|
-
<div class="line"><a name="
|
|
1168
|
-
<div class="line"><a name="
|
|
1169
|
-
<div class="line"><a name="
|
|
1170
|
-
<div class="line"><a name="
|
|
1171
|
-
<div class="line"><a name="
|
|
1172
|
-
<div class="line"><a name="
|
|
1173
|
-
<div class="line"><a name="
|
|
1174
|
-
<div class="line"><a name="
|
|
1175
|
-
<div class="line"><a name="
|
|
1176
|
-
<div class="line"><a name="
|
|
1177
|
-
<div class="line"><a name="
|
|
1178
|
-
<div class="line"><a name="
|
|
1179
|
-
<div class="line"><a name="
|
|
1180
|
-
<div class="line"><a name="
|
|
1181
|
-
<div class="line"><a name="
|
|
1182
|
-
<div class="line"><a name="
|
|
1183
|
-
<div class="line"><a name="
|
|
1184
|
-
<div class="line"><a name="
|
|
1185
|
-
<div class="line"><a name="
|
|
1186
|
-
<div class="line"><a name="
|
|
1187
|
-
<div class="line"><a name="
|
|
1188
|
-
<div class="line"><a name="
|
|
1189
|
-
<div class="line"><a name="
|
|
1190
|
-
<div class="line"><a name="
|
|
1144
|
+
<p class="definition">Definition at line <a class="el" href="ae_8cpp_source.html#l00553">553</a> of file <a class="el" href="ae_8cpp_source.html">ae.cpp</a>.</p>
|
|
1145
|
+
<div class="fragment"><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  {</div>
|
|
1146
|
+
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"test4_1 start\n"</span>;</div>
|
|
1147
|
+
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> itv;</div>
|
|
1148
|
+
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <a class="code" href="classSVF_1_1RelExeState.html">RelExeState</a> relation;</div>
|
|
1149
|
+
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <span class="comment">// var0 := [0, 10];</span></div>
|
|
1150
|
+
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  relation[0] = <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"0"</span>);</div>
|
|
1151
|
+
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  itv[0] = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 10);</div>
|
|
1152
|
+
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  <span class="comment">// var1 := var0;</span></div>
|
|
1153
|
+
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  relation[1] =</div>
|
|
1154
|
+
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"1"</span>) == <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"0"</span>);</div>
|
|
1155
|
+
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  itv[1] = itv[0];</div>
|
|
1156
|
+
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  <span class="comment">// var2 := var1 / var0;</span></div>
|
|
1157
|
+
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  relation[2] = <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"2"</span>) ==</div>
|
|
1158
|
+
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"1"</span>) / <a class="code" href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">getContext</a>().int_const(<span class="stringliteral">"0"</span>);</div>
|
|
1159
|
+
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  itv[2] = itv[1] / itv[0];</div>
|
|
1160
|
+
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  <span class="comment">// Test extract sub vars</span></div>
|
|
1161
|
+
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<u32_t></a> res;</div>
|
|
1162
|
+
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  relation.<a class="code" href="classSVF_1_1RelExeState.html#a3393f160508c33e68ebedd042d1d296f">extractSubVars</a>(relation[2], res);</div>
|
|
1163
|
+
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  assert(res == <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<u32_t></a>({0, 1, 2}) && <span class="stringliteral">"inconsistency occurs"</span>);</div>
|
|
1164
|
+
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> inv = itv.<a class="code" href="classSVF_1_1AbstractState.html#ae9897b85e3cb2dc675d3a2df76c44878">sliceState</a>(res);</div>
|
|
1165
|
+
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <a class="code" href="classSVF_1_1RelationSolver.html">RelationSolver</a> rs;</div>
|
|
1166
|
+
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>& relExpr = relation[2] && relation[1];</div>
|
|
1167
|
+
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>& initExpr = rs.<a class="code" href="classSVF_1_1RelationSolver.html#a04f145c44a67ebda99ccc5a3081239ff">gamma_hat</a>(inv);</div>
|
|
1168
|
+
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>& phi = (relExpr && initExpr).simplify();</div>
|
|
1169
|
+
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  <span class="comment">// IntervalExeState resRSY = rs.RSY(inv, phi);</span></div>
|
|
1170
|
+
<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"rsy done\n"</span>;</div>
|
|
1171
|
+
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <span class="comment">// IntervalExeState resBilateral = rs.bilateral(inv, phi);</span></div>
|
|
1172
|
+
<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"bilateral done\n"</span>;</div>
|
|
1173
|
+
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> resBS = rs.<a class="code" href="classSVF_1_1RelationSolver.html#a98f7e3ae9f43aea178d77a58ac8e927f">BS</a>(inv, phi);</div>
|
|
1174
|
+
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"bs done\n"</span>;</div>
|
|
1175
|
+
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  <span class="comment">// 0:[0,10] 1:[0,10] 2:[-00,+00]</span></div>
|
|
1176
|
+
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  <span class="comment">// assert(resRSY == resBS && resBS == resBilateral);</span></div>
|
|
1177
|
+
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> r : resBS.<a class="code" href="classSVF_1_1AbstractState.html#a4e4525823fd31c718216c698ed6e0a06">getVarToVal</a>())</div>
|
|
1178
|
+
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  {</div>
|
|
1179
|
+
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << r.first << <span class="stringliteral">" "</span> << r.second.getInterval() << <span class="stringliteral">"\n"</span>;</div>
|
|
1180
|
+
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  }</div>
|
|
1181
|
+
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <span class="comment">// ground truth</span></div>
|
|
1182
|
+
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  <a class="code" href="classSVF_1_1AbstractState.html#ab8e7d112c380f0c3fe66b487af90c03e">AbstractState::VarToAbsValMap</a> intendedRes = {{0, <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 10)},</div>
|
|
1183
|
+
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  {1, <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 10)},</div>
|
|
1184
|
+
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  {2, <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(IntervalValue::minus_infinity(), IntervalValue::plus_infinity())}</div>
|
|
1185
|
+
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  };</div>
|
|
1186
|
+
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  assert(AbstractState::eqVarToValMap(resBS.<a class="code" href="classSVF_1_1AbstractState.html#a4e4525823fd31c718216c698ed6e0a06">getVarToVal</a>(), intendedRes) && <span class="stringliteral">"inconsistency occurs"</span>);</div>
|
|
1187
|
+
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  }</div>
|
|
1191
1188
|
</div><!-- fragment -->
|
|
1192
1189
|
</div>
|
|
1193
1190
|
</div>
|
|
@@ -1215,26 +1212,26 @@ Static Public Member Functions</h2></td></tr>
|
|
|
1215
1212
|
</div><div class="memdoc">
|
|
1216
1213
|
<p>top</p>
|
|
1217
1214
|
|
|
1218
|
-
<p class="definition">Definition at line <a class="el" href="ae_8cpp_source.html#
|
|
1219
|
-
<div class="fragment"><div class="line"><a name="
|
|
1220
|
-
<div class="line"><a name="
|
|
1221
|
-
<div class="line"><a name="
|
|
1222
|
-
<div class="line"><a name="
|
|
1223
|
-
<div class="line"><a name="
|
|
1224
|
-
<div class="line"><a name="
|
|
1225
|
-
<div class="line"><a name="
|
|
1226
|
-
<div class="line"><a name="
|
|
1227
|
-
<div class="line"><a name="
|
|
1228
|
-
<div class="line"><a name="
|
|
1229
|
-
<div class="line"><a name="
|
|
1230
|
-
<div class="line"><a name="
|
|
1231
|
-
<div class="line"><a name="
|
|
1232
|
-
<div class="line"><a name="
|
|
1233
|
-
<div class="line"><a name="
|
|
1234
|
-
<div class="line"><a name="
|
|
1235
|
-
<div class="line"><a name="
|
|
1236
|
-
<div class="line"><a name="
|
|
1237
|
-
<div class="line"><a name="
|
|
1215
|
+
<p class="definition">Definition at line <a class="el" href="ae_8cpp_source.html#l00598">598</a> of file <a class="el" href="ae_8cpp_source.html">ae.cpp</a>.</p>
|
|
1216
|
+
<div class="fragment"><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  {</div>
|
|
1217
|
+
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  <a class="code" href="classSymblicAbstractionTest.html">SymblicAbstractionTest</a> saTest;</div>
|
|
1218
|
+
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  saTest.<a class="code" href="classSymblicAbstractionTest.html#acc4852ec2f03ec67e39c67629275cdf5">testRelExeState1_1</a>();</div>
|
|
1219
|
+
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  saTest.<a class="code" href="classSymblicAbstractionTest.html#a0316fb86d1751ecacf5845ca07764f40">testRelExeState1_2</a>();</div>
|
|
1220
|
+
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  </div>
|
|
1221
|
+
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  saTest.<a class="code" href="classSymblicAbstractionTest.html#a32fbde1fbb997be55abfdc308de68fc1">testRelExeState2_1</a>();</div>
|
|
1222
|
+
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  saTest.<a class="code" href="classSymblicAbstractionTest.html#a40b9879a5465f960bbd4fad6654304aa">testRelExeState2_2</a>();</div>
|
|
1223
|
+
<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  saTest.<a class="code" href="classSymblicAbstractionTest.html#a7c319b15dd3bd82a7c805ba6dd60beab">testRelExeState2_3</a>();</div>
|
|
1224
|
+
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  <span class="comment">// saTest.testRelExeState2_4(); /// 10000</span></div>
|
|
1225
|
+
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  <span class="comment">// saTest.testRelExeState2_5(); /// 100000</span></div>
|
|
1226
|
+
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  </div>
|
|
1227
|
+
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  saTest.<a class="code" href="classSymblicAbstractionTest.html#ac3016e7a57f46af01d20de7e785a4cce">testRelExeState3_1</a>();</div>
|
|
1228
|
+
<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  saTest.<a class="code" href="classSymblicAbstractionTest.html#a56541a5e9bc61f092ee3c48700f00bf7">testRelExeState3_2</a>();</div>
|
|
1229
|
+
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  <span class="comment">// saTest.testRelExeState3_3(); /// 10000</span></div>
|
|
1230
|
+
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  <span class="comment">// saTest.testRelExeState3_4(); /// 100000</span></div>
|
|
1231
|
+
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  </div>
|
|
1232
|
+
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"start top\n"</span>;</div>
|
|
1233
|
+
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  saTest.<a class="code" href="classSymblicAbstractionTest.html#a986b2278abd2ee64507fa769a66c999c">testRelExeState4_1</a>(); </div>
|
|
1234
|
+
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  }</div>
|
|
1238
1235
|
</div><!-- fragment -->
|
|
1239
1236
|
</div>
|
|
1240
1237
|
</div>
|
|
@@ -1243,35 +1240,34 @@ Static Public Member Functions</h2></td></tr>
|
|
|
1243
1240
|
</ul>
|
|
1244
1241
|
</div><!-- contents -->
|
|
1245
1242
|
<div class="ttc" id="aclassSymblicAbstractionTest_html_a40b9879a5465f960bbd4fad6654304aa"><div class="ttname"><a href="classSymblicAbstractionTest.html#a40b9879a5465f960bbd4fad6654304aa">SymblicAbstractionTest::testRelExeState2_2</a></div><div class="ttdeci">void testRelExeState2_2()</div><div class="ttdef"><b>Definition:</b> <a href="ae_8cpp_source.html#l00214">ae.cpp:214</a></div></div>
|
|
1246
|
-
<div class="ttc" id="aclassSymblicAbstractionTest_html_a56541a5e9bc61f092ee3c48700f00bf7"><div class="ttname"><a href="classSymblicAbstractionTest.html#a56541a5e9bc61f092ee3c48700f00bf7">SymblicAbstractionTest::testRelExeState3_2</a></div><div class="ttdeci">void testRelExeState3_2()</div><div class="ttdef"><b>Definition:</b> <a href="ae_8cpp_source.html#
|
|
1243
|
+
<div class="ttc" id="aclassSymblicAbstractionTest_html_a56541a5e9bc61f092ee3c48700f00bf7"><div class="ttname"><a href="classSymblicAbstractionTest.html#a56541a5e9bc61f092ee3c48700f00bf7">SymblicAbstractionTest::testRelExeState3_2</a></div><div class="ttdeci">void testRelExeState3_2()</div><div class="ttdef"><b>Definition:</b> <a href="ae_8cpp_source.html#l00428">ae.cpp:428</a></div></div>
|
|
1247
1244
|
<div class="ttc" id="aclassSymblicAbstractionTest_html_acc4852ec2f03ec67e39c67629275cdf5"><div class="ttname"><a href="classSymblicAbstractionTest.html#acc4852ec2f03ec67e39c67629275cdf5">SymblicAbstractionTest::testRelExeState1_1</a></div><div class="ttdeci">void testRelExeState1_1()</div><div class="ttdef"><b>Definition:</b> <a href="ae_8cpp_source.html#l00103">ae.cpp:103</a></div></div>
|
|
1248
1245
|
<div class="ttc" id="aclassSymblicAbstractionTest_html_ab41926db0c2711a98319c8d544c7c7e2"><div class="ttname"><a href="classSymblicAbstractionTest.html#ab41926db0c2711a98319c8d544c7c7e2">SymblicAbstractionTest::getContext</a></div><div class="ttdeci">static z3::context & getContext()</div><div class="ttdef"><b>Definition:</b> <a href="ae_8cpp_source.html#l00056">ae.cpp:56</a></div></div>
|
|
1249
1246
|
<div class="ttc" id="aclassSymblicAbstractionTest_html"><div class="ttname"><a href="classSymblicAbstractionTest.html">SymblicAbstractionTest</a></div><div class="ttdef"><b>Definition:</b> <a href="ae_8cpp_source.html#l00049">ae.cpp:49</a></div></div>
|
|
1250
|
-
<div class="ttc" id="aclassSVF_1_1RelationSolver_html_a0df88638c5e3f8cd56d34088b96199f1"><div class="ttname"><a href="classSVF_1_1RelationSolver.html#a0df88638c5e3f8cd56d34088b96199f1">SVF::RelationSolver::bilateral</a></div><div class="ttdeci">IntervalESBase bilateral(const IntervalESBase &domain, const Z3Expr &phi, u32_t descend_check=0)</div><div class="ttdef"><b>Definition:</b> <a href="RelationSolver_8cpp_source.html#l00036">RelationSolver.cpp:36</a></div></div>
|
|
1251
1247
|
<div class="ttc" id="aclassSymblicAbstractionTest_html_a0316fb86d1751ecacf5845ca07764f40"><div class="ttname"><a href="classSymblicAbstractionTest.html#a0316fb86d1751ecacf5845ca07764f40">SymblicAbstractionTest::testRelExeState1_2</a></div><div class="ttdeci">void testRelExeState1_2()</div><div class="ttdef"><b>Definition:</b> <a href="ae_8cpp_source.html#l00137">ae.cpp:137</a></div></div>
|
|
1252
1248
|
<div class="ttc" id="anamespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set< Key, Hash, KeyEqual, Allocator > Set</div><div class="ttdef"><b>Definition:</b> <a href="GeneralType_8h_source.html#l00096">GeneralType.h:96</a></div></div>
|
|
1253
|
-
<div class="ttc" id="
|
|
1254
|
-
<div class="ttc" id="
|
|
1249
|
+
<div class="ttc" id="aclassSymblicAbstractionTest_html_ac3016e7a57f46af01d20de7e785a4cce"><div class="ttname"><a href="classSymblicAbstractionTest.html#ac3016e7a57f46af01d20de7e785a4cce">SymblicAbstractionTest::testRelExeState3_1</a></div><div class="ttdeci">void testRelExeState3_1()</div><div class="ttdef"><b>Definition:</b> <a href="ae_8cpp_source.html#l00386">ae.cpp:386</a></div></div>
|
|
1250
|
+
<div class="ttc" id="aclassSVF_1_1RelationSolver_html_a0bc76a5f96dab54e1c9678312579d51a"><div class="ttname"><a href="classSVF_1_1RelationSolver.html#a0bc76a5f96dab54e1c9678312579d51a">SVF::RelationSolver::RSY</a></div><div class="ttdeci">AbstractState RSY(const AbstractState &domain, const Z3Expr &phi)</div><div class="ttdef"><b>Definition:</b> <a href="RelationSolver_8cpp_source.html#l00114">RelationSolver.cpp:114</a></div></div>
|
|
1251
|
+
<div class="ttc" id="aclassSymblicAbstractionTest_html_a96a651463812ee4cdb597926ba3dc1cf"><div class="ttname"><a href="classSymblicAbstractionTest.html#a96a651463812ee4cdb597926ba3dc1cf">SymblicAbstractionTest::RSY_time</a></div><div class="ttdeci">AbstractState RSY_time(AbstractState &inv, const Z3Expr &phi, RelationSolver &rs)</div><div class="ttdef"><b>Definition:</b> <a href="ae_8cpp_source.html#l00066">ae.cpp:66</a></div></div>
|
|
1255
1252
|
<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>
|
|
1256
|
-
<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>
|
|
1257
1253
|
<div class="ttc" id="aclassSymblicAbstractionTest_html_a32fbde1fbb997be55abfdc308de68fc1"><div class="ttname"><a href="classSymblicAbstractionTest.html#a32fbde1fbb997be55abfdc308de68fc1">SymblicAbstractionTest::testRelExeState2_1</a></div><div class="ttdeci">void testRelExeState2_1()</div><div class="ttdef"><b>Definition:</b> <a href="ae_8cpp_source.html#l00172">ae.cpp:172</a></div></div>
|
|
1258
|
-
<div class="ttc" id="
|
|
1259
|
-
<div class="ttc" id="
|
|
1260
|
-
<div class="ttc" id="
|
|
1254
|
+
<div class="ttc" id="aclassSVF_1_1AbstractState_html_ab8e7d112c380f0c3fe66b487af90c03e"><div class="ttname"><a href="classSVF_1_1AbstractState.html#ab8e7d112c380f0c3fe66b487af90c03e">SVF::AbstractState::VarToAbsValMap</a></div><div class="ttdeci">Map< u32_t, AbstractValue > VarToAbsValMap</div><div class="ttdef"><b>Definition:</b> <a href="AbstractState_8h_source.html#l00059">AbstractState.h:59</a></div></div>
|
|
1255
|
+
<div class="ttc" id="aclassSVF_1_1AbstractState_html_ae9897b85e3cb2dc675d3a2df76c44878"><div class="ttname"><a href="classSVF_1_1AbstractState.html#ae9897b85e3cb2dc675d3a2df76c44878">SVF::AbstractState::sliceState</a></div><div class="ttdeci">AbstractState sliceState(Set< u32_t > &sl)</div><div class="ttdoc">Copy some values and return a new IntervalExeState.</div><div class="ttdef"><b>Definition:</b> <a href="AbstractState_8h_source.html#l00156">AbstractState.h:156</a></div></div>
|
|
1256
|
+
<div class="ttc" id="aclassSymblicAbstractionTest_html_a00618d1c3ca0c30883aad8f95e9f9f30"><div class="ttname"><a href="classSymblicAbstractionTest.html#a00618d1c3ca0c30883aad8f95e9f9f30">SymblicAbstractionTest::BS_time</a></div><div class="ttdeci">AbstractState BS_time(AbstractState &inv, const Z3Expr &phi, RelationSolver &rs)</div><div class="ttdef"><b>Definition:</b> <a href="ae_8cpp_source.html#l00090">ae.cpp:90</a></div></div>
|
|
1261
1257
|
<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>
|
|
1262
|
-
<div class="ttc" id="aclassSVF_1_1RelationSolver_html_a657af041f883e7b1a3f9892453a2c4cf"><div class="ttname"><a href="classSVF_1_1RelationSolver.html#a657af041f883e7b1a3f9892453a2c4cf">SVF::RelationSolver::RSY</a></div><div class="ttdeci">IntervalESBase RSY(const IntervalESBase &domain, const Z3Expr &phi)</div><div class="ttdef"><b>Definition:</b> <a href="RelationSolver_8cpp_source.html#l00114">RelationSolver.cpp:114</a></div></div>
|
|
1263
1258
|
<div class="ttc" id="aclassSVF_1_1RelationSolver_html"><div class="ttname"><a href="classSVF_1_1RelationSolver.html">SVF::RelationSolver</a></div><div class="ttdef"><b>Definition:</b> <a href="RelationSolver_8h_source.html#l00038">RelationSolver.h:38</a></div></div>
|
|
1259
|
+
<div class="ttc" id="aclassSVF_1_1AbstractState_html"><div class="ttname"><a href="classSVF_1_1AbstractState.html">SVF::AbstractState</a></div><div class="ttdef"><b>Definition:</b> <a href="AbstractState_8h_source.html#l00054">AbstractState.h:54</a></div></div>
|
|
1260
|
+
<div class="ttc" id="aclassSymblicAbstractionTest_html_ad9539ad539a0e3848b7ad1d65ebe81fe"><div class="ttname"><a href="classSymblicAbstractionTest.html#ad9539ad539a0e3848b7ad1d65ebe81fe">SymblicAbstractionTest::Bilateral_time</a></div><div class="ttdeci">AbstractState Bilateral_time(AbstractState &inv, const Z3Expr &phi, RelationSolver &rs)</div><div class="ttdef"><b>Definition:</b> <a href="ae_8cpp_source.html#l00078">ae.cpp:78</a></div></div>
|
|
1261
|
+
<div class="ttc" id="aclassSVF_1_1RelationSolver_html_a98f7e3ae9f43aea178d77a58ac8e927f"><div class="ttname"><a href="classSVF_1_1RelationSolver.html#a98f7e3ae9f43aea178d77a58ac8e927f">SVF::RelationSolver::BS</a></div><div class="ttdeci">AbstractState BS(const AbstractState &domain, const Z3Expr &phi)</div><div class="ttdef"><b>Definition:</b> <a href="RelationSolver_8cpp_source.html#l00269">RelationSolver.cpp:269</a></div></div>
|
|
1264
1262
|
<div class="ttc" id="aclassSVF_1_1RelExeState_html_a3393f160508c33e68ebedd042d1d296f"><div class="ttname"><a href="classSVF_1_1RelExeState.html#a3393f160508c33e68ebedd042d1d296f">SVF::RelExeState::extractSubVars</a></div><div class="ttdeci">void extractSubVars(const Z3Expr &expr, Set< u32_t > &res)</div><div class="ttdoc">Extract sub SVFVar IDs of a Z3Expr.</div><div class="ttdef"><b>Definition:</b> <a href="RelExeState_8cpp_source.html#l00045">RelExeState.cpp:45</a></div></div>
|
|
1265
|
-
<div class="ttc" id="
|
|
1263
|
+
<div class="ttc" id="aclassSVF_1_1RelationSolver_html_a23c59e437950b139dde49f11eb45b63a"><div class="ttname"><a href="classSVF_1_1RelationSolver.html#a23c59e437950b139dde49f11eb45b63a">SVF::RelationSolver::bilateral</a></div><div class="ttdeci">AbstractState bilateral(const AbstractState &domain, const Z3Expr &phi, u32_t descend_check=0)</div><div class="ttdef"><b>Definition:</b> <a href="RelationSolver_8cpp_source.html#l00036">RelationSolver.cpp:36</a></div></div>
|
|
1264
|
+
<div class="ttc" id="aclassSVF_1_1AbstractState_html_a4e4525823fd31c718216c698ed6e0a06"><div class="ttname"><a href="classSVF_1_1AbstractState.html#a4e4525823fd31c718216c698ed6e0a06">SVF::AbstractState::getVarToVal</a></div><div class="ttdeci">const VarToAbsValMap & getVarToVal() const</div><div class="ttdoc">get var2val map</div><div class="ttdef"><b>Definition:</b> <a href="AbstractState_8h_source.html#l00238">AbstractState.h:238</a></div></div>
|
|
1266
1265
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs()</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00050">SVFUtil.h:50</a></div></div>
|
|
1267
1266
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a05dc00b2bd9a8176aae31b6cfffe725d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a05dc00b2bd9a8176aae31b6cfffe725d">SVF::SVFUtil::sucMsg</a></div><div class="ttdeci">std::string sucMsg(const std::string &msg)</div><div class="ttdoc">Returns successful message by converting a string into green string output.</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00053">SVFUtil.cpp:53</a></div></div>
|
|
1268
|
-
<div class="ttc" id="aclassSymblicAbstractionTest_html_ad6525df45acfeb1c9c31fc54219a4217"><div class="ttname"><a href="classSymblicAbstractionTest.html#ad6525df45acfeb1c9c31fc54219a4217">SymblicAbstractionTest::Bilateral_time</a></div><div class="ttdeci">IntervalESBase Bilateral_time(IntervalESBase &inv, const Z3Expr &phi, RelationSolver &rs)</div><div class="ttdef"><b>Definition:</b> <a href="ae_8cpp_source.html#l00078">ae.cpp:78</a></div></div>
|
|
1269
1267
|
<div class="ttc" id="aclassSVF_1_1RelExeState_html"><div class="ttname"><a href="classSVF_1_1RelExeState.html">SVF::RelExeState</a></div><div class="ttdef"><b>Definition:</b> <a href="RelExeState_8h_source.html#l00039">RelExeState.h:39</a></div></div>
|
|
1270
|
-
<div class="ttc" id="
|
|
1271
|
-
<div class="ttc" id="aclassSymblicAbstractionTest_html_a986b2278abd2ee64507fa769a66c999c"><div class="ttname"><a href="classSymblicAbstractionTest.html#a986b2278abd2ee64507fa769a66c999c">SymblicAbstractionTest::testRelExeState4_1</a></div><div class="ttdeci">void testRelExeState4_1()</div><div class="ttdef"><b>Definition:</b> <a href="ae_8cpp_source.html#l00556">ae.cpp:556</a></div></div>
|
|
1272
|
-
<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 & 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>
|
|
1273
|
-
<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< Key, Value, Hash, KeyEqual, Allocator > Map</div><div class="ttdef"><b>Definition:</b> <a href="GeneralType_8h_source.html#l00101">GeneralType.h:101</a></div></div>
|
|
1268
|
+
<div class="ttc" id="aclassSymblicAbstractionTest_html_a986b2278abd2ee64507fa769a66c999c"><div class="ttname"><a href="classSymblicAbstractionTest.html#a986b2278abd2ee64507fa769a66c999c">SymblicAbstractionTest::testRelExeState4_1</a></div><div class="ttdeci">void testRelExeState4_1()</div><div class="ttdef"><b>Definition:</b> <a href="ae_8cpp_source.html#l00553">ae.cpp:553</a></div></div>
|
|
1274
1269
|
<div class="ttc" id="aclassSymblicAbstractionTest_html_a7c319b15dd3bd82a7c805ba6dd60beab"><div class="ttname"><a href="classSymblicAbstractionTest.html#a7c319b15dd3bd82a7c805ba6dd60beab">SymblicAbstractionTest::testRelExeState2_3</a></div><div class="ttdeci">void testRelExeState2_3()</div><div class="ttdef"><b>Definition:</b> <a href="ae_8cpp_source.html#l00257">ae.cpp:257</a></div></div>
|
|
1270
|
+
<div class="ttc" id="aclassSVF_1_1RelationSolver_html_a04f145c44a67ebda99ccc5a3081239ff"><div class="ttname"><a href="classSVF_1_1RelationSolver.html#a04f145c44a67ebda99ccc5a3081239ff">SVF::RelationSolver::gamma_hat</a></div><div class="ttdeci">Z3Expr gamma_hat(const AbstractState &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>
|
|
1275
1271
|
<!-- start footer part -->
|
|
1276
1272
|
<hr class="footer"/><address class="footer"><small>
|
|
1277
1273
|
Generated by  <a href="http://www.doxygen.org/index.html">
|