PySMT 0.9.6.dev57__py2.py3-none-any.whl → 0.9.7.dev101__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. {PySMT-0.9.6.dev57.dist-info → PySMT-0.9.7.dev101.dist-info}/METADATA +2 -2
  2. {PySMT-0.9.6.dev57.dist-info → PySMT-0.9.7.dev101.dist-info}/RECORD +39 -37
  3. {PySMT-0.9.6.dev57.dist-info → PySMT-0.9.7.dev101.dist-info}/WHEEL +1 -1
  4. pysmt/__init__.py +1 -1
  5. pysmt/cmd/check_version.py +7 -5
  6. pysmt/cmd/install.py +9 -9
  7. pysmt/cmd/installers/__init__.py +4 -3
  8. pysmt/cmd/installers/base.py +11 -10
  9. pysmt/cmd/installers/cvcfive.py +42 -0
  10. pysmt/cmd/installers/msat.py +2 -2
  11. pysmt/cmd/installers/yices.py +18 -25
  12. pysmt/cmd/installers/z3.py +3 -50
  13. pysmt/configuration.py +1 -1
  14. pysmt/constants.py +9 -0
  15. pysmt/factory.py +10 -4
  16. pysmt/smtlib/parser/__init__.py +8 -0
  17. pysmt/solvers/btor.py +69 -32
  18. pysmt/solvers/cvcfive.py +548 -0
  19. pysmt/solvers/yices.py +129 -112
  20. pysmt/test/configs/config1.ini +1 -1
  21. pysmt/test/examples.py +6 -0
  22. pysmt/test/smtlib/parser_utils.py +5 -2
  23. pysmt/test/test_array.py +16 -7
  24. pysmt/test/test_bv_simplification.py +4 -2
  25. pysmt/test/test_cnf.py +2 -1
  26. pysmt/test/{test_cvc4_quantifiers.py → test_cvc_quantifiers.py} +7 -7
  27. pysmt/test/test_nia.py +10 -10
  28. pysmt/test/test_nlira.py +5 -2
  29. pysmt/test/test_portfolio.py +11 -11
  30. pysmt/test/test_qe.py +2 -2
  31. pysmt/test/test_rewritings.py +1 -1
  32. pysmt/test/test_simplify.py +2 -2
  33. pysmt/test/test_solving.py +18 -17
  34. {PySMT-0.9.6.dev57.dist-info → PySMT-0.9.7.dev101.dist-info}/LICENSE +0 -0
  35. {PySMT-0.9.6.dev57.dist-info → PySMT-0.9.7.dev101.dist-info}/NOTICE +0 -0
  36. {PySMT-0.9.6.dev57.dist-info → PySMT-0.9.7.dev101.dist-info}/entry_points.txt +0 -0
  37. {PySMT-0.9.6.dev57.dist-info → PySMT-0.9.7.dev101.dist-info}/top_level.txt +0 -0
  38. /pysmt/cmd/installers/{cvc4.py → cvcfour.py} +0 -0
  39. /pysmt/solvers/{cvc4.py → cvcfour.py} +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: PySMT
3
- Version: 0.9.6.dev57
3
+ Version: 0.9.7.dev101
4
4
  Summary: A solver-agnostic library for SMT Formulae manipulation and solving
5
5
  Home-page: http://www.pysmt.org
6
6
  Author: PySMT Team
@@ -32,7 +32,7 @@ The following solvers are supported through native APIs:
32
32
 
33
33
  * MathSAT (http://mathsat.fbk.eu/)
34
34
  * Z3 (https://github.com/Z3Prover/z3/)
35
- * CVC4 (http://cvc4.cs.nyu.edu/web/)
35
+ * cvc5 (https://cvc5.github.io/)
36
36
  * Yices 2 (http://yices.csl.sri.com/)
37
37
  * CUDD (http://vlsi.colorado.edu/~fabio/CUDD/)
38
38
  * PicoSAT (http://fmv.jku.at/picosat/)
@@ -1,11 +1,11 @@
1
- pysmt/__init__.py,sha256=BCVExXFbWveaWauCg0YHlhhPdRrz8cc8a2G-crw4Ej8,1597
1
+ pysmt/__init__.py,sha256=neZixcmV1yOJ5om9jVHwtLQlnyHeWQ5CSKXgSXkriZc,1598
2
2
  pysmt/__main__.py,sha256=rR-MV1QtLYqtVoJyY3m5B5Iz-lua0-5o6YSB0W4lKy8,1085
3
- pysmt/configuration.py,sha256=MUIhnwCs-R8BIEPAu80GKlnX70RZLsyYvkIcnQFJAWU,4539
4
- pysmt/constants.py,sha256=l5obyz_O3gGbTaGaNWXgxNKuCobZNkHFrWTHWrr-qMw,4844
3
+ pysmt/configuration.py,sha256=q4Ncd6f2d0VZUpyQAOR8sTPlTodgDnYhUBeRgYYXqTE,4539
4
+ pysmt/constants.py,sha256=QelM9r5fGWSq8UNjjYoEJK2FaLHRr4Z9NZxzjeajEWA,5249
5
5
  pysmt/decorators.py,sha256=hBIKVkHlT0QD7H5yGmJIqn2MOafAZM-S2wPLvS2eB4c,3964
6
6
  pysmt/environment.py,sha256=rdaxQ0uwmMPmcW4d5WnTYAyHNSCpRTgzRLaXQccG5-4,6522
7
7
  pysmt/exceptions.py,sha256=uG3FochPO1Y18cv1lXUjQtNbW-qZKd68zqs8oo2OEF4,4420
8
- pysmt/factory.py,sha256=iNag-fUAdm6lA4f_3Z6IKhV1FG-9MnPD47HPAlBMoxQ,23923
8
+ pysmt/factory.py,sha256=6QFbob7LV3x8uT4w2nG_rHqXWCqbwNg5oCUMPhpnwmY,24107
9
9
  pysmt/fnode.py,sha256=zKZP4yda8JxK6AXW3vCasRLYsLH5NzK_2Bjiy5ogtqo,33256
10
10
  pysmt/formula.py,sha256=baexe5-GgrG7z_qH3Wb9s8XQqFcBgyLXnv8Rik5t2YY,43318
11
11
  pysmt/logics.py,sha256=yJ1Yv24dVj4LlpnbspgcRT1t5e65RmvGas_bdHOGCAA,28774
@@ -21,18 +21,19 @@ pysmt/type_checker.py,sha256=g5Mbh42ZxsjtLHnS0qizYLZ3kH3bMtNkIuyiZtTuinE,13273
21
21
  pysmt/typing.py,sha256=GioU08mUxqsjFmmAYfBYj51mmJoBcFZDunc-t99QKng,17714
22
22
  pysmt/utils.py,sha256=t13jG-E8kQNxG_JmS79GDy3SnBohSobwjJTjZHFf3fE,2302
23
23
  pysmt/cmd/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
- pysmt/cmd/check_version.py,sha256=ZGCZNEsUPzQ8b_yMNfBRNzp40yDqagWgQ-pNAh7Z54k,2366
25
- pysmt/cmd/install.py,sha256=l-DJnshvI8_vvDrjkmEZN3duekBSJV6uAHC10H8G4Ic,10202
24
+ pysmt/cmd/check_version.py,sha256=yeY_USo11j60iLjpNcAvq5gAj2i43IiOWcP1dwJS3Rw,2352
25
+ pysmt/cmd/install.py,sha256=l3a-eBhsBIKvR1PEeNM9WYvQH46Ie8vUOzzh6VmWVzs,10239
26
26
  pysmt/cmd/shell.py,sha256=ww1juthvLnJQciVHWxYvTJaA5W3-Np0ORfESyePF0bI,4333
27
- pysmt/cmd/installers/__init__.py,sha256=mcX_yjJR-OX4OXWRV26rblVs-RIbGsiNM4vuRbUYynY,1094
28
- pysmt/cmd/installers/base.py,sha256=ifgq7lLaAhEsFe7d_p5x0xlcrrZDEF0Z7apnS07q_I4,12723
27
+ pysmt/cmd/installers/__init__.py,sha256=nHJaEXfCpsEkzBy0NL91P9extUda6jb0u88nwPYTvGo,1170
28
+ pysmt/cmd/installers/base.py,sha256=1usHiBHrIBam9BlbVKG-6F52KPsIkJBeghkd_ckh-8U,12811
29
29
  pysmt/cmd/installers/bdd.py,sha256=Qq8YlYAVvxUqNXjoOlH9_Lhj4cj6WEt7HuhbSiF_L6k,2539
30
30
  pysmt/cmd/installers/btor.py,sha256=0fsCJEKqQ_Y4HURYNct-F3ui8Zsk5qd4Gp0AWRXAUBo,4067
31
- pysmt/cmd/installers/cvc4.py,sha256=uBZkKIX4gZEMfjrhrparUSDydMcvGIGZM2Y8JYD0GzE,3916
32
- pysmt/cmd/installers/msat.py,sha256=Z_WQcjQ0Gkl_3Hc6XkvEQZAUg5GAqgL1oWtvxFx5qC4,5422
31
+ pysmt/cmd/installers/cvcfive.py,sha256=PRSuEd2_y2qQO0G3gUGtCsKB2PMV40C1WwjpgbJkefE,1493
32
+ pysmt/cmd/installers/cvcfour.py,sha256=uBZkKIX4gZEMfjrhrparUSDydMcvGIGZM2Y8JYD0GzE,3916
33
+ pysmt/cmd/installers/msat.py,sha256=euWgHJO9IBbb6Bpf2vQlQoJ6tfRy9TstT0o9LRyedS8,5418
33
34
  pysmt/cmd/installers/pico.py,sha256=XJpVbY5YHboL3OEMBvjwv8QwKdJ7Y62Blb78tEGyMxU,3141
34
- pysmt/cmd/installers/yices.py,sha256=qGWAvOXWDrSgeCKgQrl4G1OOT8PytKJss1u2svVo_FE,3312
35
- pysmt/cmd/installers/z3.py,sha256=OvWy2Qu3N2JqF-3fnhRk84IeuUI8krnCQFhnUGimtHE,3334
35
+ pysmt/cmd/installers/yices.py,sha256=M99P641jqGtAWOgQpAQzt4T1KwmSClw1VDEETzsSZe0,3010
36
+ pysmt/cmd/installers/z3.py,sha256=5wP6O-a602-y1cuEyr22bkdWnOWHx8bIaPQ24xDtxX8,1386
36
37
  pysmt/smtlib/__init__.py,sha256=JXBHtcb4Lv-Sb8whc9JuGbRH2EBLWwtLUh3PL9HhNE8,650
37
38
  pysmt/smtlib/annotations.py,sha256=BKL6CbUTVFxT-PojRNetfcPtor9ExAOzcxng0Ic25-k,4167
38
39
  pysmt/smtlib/commands.py,sha256=RG0swe9N0r4i7TuiivjKbalm8pBeULDLd5TG9lAdy0U,1940
@@ -40,12 +41,13 @@ pysmt/smtlib/printers.py,sha256=jjX3qAHdbRd5BkKfMcjIrV305f43TDyZY0FwGFrEQRM,2455
40
41
  pysmt/smtlib/script.py,sha256=4tATsRYDavjz1DVKXzfVVZxVXYOtBRhh4Ya0Ng4XxHY,13387
41
42
  pysmt/smtlib/solver.py,sha256=dWBzYBuYDVyCsQI1KlqndxpqX4xHQUDcHAuefwbHv24,7987
42
43
  pysmt/smtlib/utils.py,sha256=XNp7mW1DB6cZRtQhkAOTR-xrwYaGDBEcF3Q-edKDeU8,2043
43
- pysmt/smtlib/parser/__init__.py,sha256=OzRgPJXGkmihZHmr_aELDlIKzHGHF5wGl6U5DB2wpM0,4482
44
+ pysmt/smtlib/parser/__init__.py,sha256=Tgl8AAjZPmCrABGmKRSC4Yu634mn8r22qn18M3u-pfk,4771
44
45
  pysmt/smtlib/parser/parser.py,sha256=3eMEhW6t2XHSK_1EkGmjB4ZWrg6kWgfwVDVcyOxyWS0,58387
45
46
  pysmt/solvers/__init__.py,sha256=JXBHtcb4Lv-Sb8whc9JuGbRH2EBLWwtLUh3PL9HhNE8,650
46
47
  pysmt/solvers/bdd.py,sha256=my3398_-8Rkqy1pluzZa7_12qsA43ARbs8-YAPqdMWs,15938
47
- pysmt/solvers/btor.py,sha256=N7_JuCdEznLjWlj8Yj2TNCmNbIIcdxPSb66F6P289bA,23813
48
- pysmt/solvers/cvc4.py,sha256=odWm_MAgoPlhOf6gaarZQAqQS4fN-8PH-xGIYaiErQE,24538
48
+ pysmt/solvers/btor.py,sha256=DFBnYsa4oG8GC58UWvKf6FHwVK9AmnOQ8ytrEaYlZbI,25295
49
+ pysmt/solvers/cvcfive.py,sha256=z8o4VxrZBC6sdb_JYTWfRS3BXdWJPznakN3k7rD4EY8,21073
50
+ pysmt/solvers/cvcfour.py,sha256=odWm_MAgoPlhOf6gaarZQAqQS4fN-8PH-xGIYaiErQE,24538
49
51
  pysmt/solvers/eager.py,sha256=Py2_XaFj7YIOotH3Zv14JhmyLiZPTxKwzLuLztFqNIs,3297
50
52
  pysmt/solvers/interpolation.py,sha256=PYvn81xp5or_p3wE4-ReI5OMY06s7nzuNvM0zs9_XyI,1851
51
53
  pysmt/solvers/msat.py,sha256=34PJPLIMZZmrhtq1N-L3qm38cI_I0kBWe-K_xMeDb5Q,54967
@@ -55,19 +57,19 @@ pysmt/solvers/portfolio.py,sha256=OrWMzlFugE9wsKSKGolwsB6atadkt0nE_3e3TGg-3k8,91
55
57
  pysmt/solvers/qelim.py,sha256=Fjy54lbyIKahAzGajhaihXYQyYn97h83Ud2er-zjwcw,4822
56
58
  pysmt/solvers/smtlib.py,sha256=6gGq-UdCVrrdmliCNl2RByyn5qMqBtVVDP_sB2jXiQ8,8998
57
59
  pysmt/solvers/solver.py,sha256=lOOdtGKWaWdqQDLSUDS-GunZ60EeKJAYIVfmeimzuy0,17663
58
- pysmt/solvers/yices.py,sha256=O7WcknXXSF2t0gopM7GP3udkwQzThkRjtHutEOLREeE,23348
60
+ pysmt/solvers/yices.py,sha256=ZU3iqj29oKnqDnDnPnfKvS1QBAGEMecrQgZ14qRsoUQ,24489
59
61
  pysmt/solvers/z3.py,sha256=_XMiY04kJVdpyfBSN8p5qPaEsCjZ60uBr4na55Vcq1k,40768
60
62
  pysmt/test/__init__.py,sha256=9YsAQOuHVQ4N8MzKN9U0eAfRjPiKBVH_D_xV1MJZjkg,4985
61
- pysmt/test/examples.py,sha256=eyf-bNP7NrvP9j1RfnQYR2dlnXLPRzV1SGERVfvKGbM,39104
62
- pysmt/test/test_array.py,sha256=5ohIVh9UH9ajhg3elsFXqaxcRfHOuTaorE7IfsruYek,5788
63
+ pysmt/test/examples.py,sha256=XymEXLmIZxMtS9qTfzrXYbi4DBaMTgPzd_ijKh1H2aM,39485
64
+ pysmt/test/test_array.py,sha256=OypmqKf_ciigxK1X_W2b9sm0EWOA3wqH376QXt7oGCM,6237
63
65
  pysmt/test/test_back.py,sha256=3O7XTx4WfuizjT7-yueZq6oGG-uqovkie7R3A5GklTk,3372
64
66
  pysmt/test/test_bdd.py,sha256=GsFiq0YQd3exbN9k2fCurKZlvDl3H2VAucYc9tKGKEc,6195
65
67
  pysmt/test/test_bv.py,sha256=-pnOgslpMAeK9US4f_z4CU8LK0ZmDr-yceS1u1kwgps,12284
66
- pysmt/test/test_bv_simplification.py,sha256=R7cdr_Ob2TAQF-NG0Z3JtKApBif9e893xhWa0kX6Kbc,14511
67
- pysmt/test/test_cnf.py,sha256=eeIhziVmAI2Q8wFKlj0zkdMSvM_GKtu1-Up8nY_2cRk,3369
68
+ pysmt/test/test_bv_simplification.py,sha256=gbXcSyjM9I9Zxlu5n43a66fW3RomarP2_DEj6IzYQTc,14637
69
+ pysmt/test/test_cnf.py,sha256=_pYNU9y06o5dJNK3zg7TINDHjI6FMduSayn7fyyxVp0,3363
68
70
  pysmt/test/test_configuration.py,sha256=uyCmS8-cdeI844TGqmzHBlFPtHBJhT_mKrrWJUF0AN0,3757
69
71
  pysmt/test/test_constants.py,sha256=wdqc9duJ8Ykt1LCxy2CL3Mt_7Gal5-bCVL7QT5GHS3s,4618
70
- pysmt/test/test_cvc4_quantifiers.py,sha256=iFGkqpsHoDBgSS2VFTi9siT6fq9-ieipkpr_cIrA7xY,1851
72
+ pysmt/test/test_cvc_quantifiers.py,sha256=a40NDyPKNynVpqq9M5pDTR8qFL_EumR8whw8escxP4I,1850
71
73
  pysmt/test/test_dwf.py,sha256=nQubO2IYjW3NnRjNz3xkhpXgK_5coZp9uZ_U-ElmFRw,2850
72
74
  pysmt/test/test_eager_model.py,sha256=hF9V8wQYXVeyW2Bo4sACa98xeJtfOMYjMvjWMHQaGag,3662
73
75
  pysmt/test/test_env.py,sha256=tshVfiKotjMUNXl0RCo7-itTnVJimWGPyMkuGHX_B6I,4118
@@ -81,28 +83,28 @@ pysmt/test/test_lira.py,sha256=1B4y1y2U-5CttF6h22tniJkAedUDIwjp1Ad0_Ha_s-8,2175
81
83
  pysmt/test/test_logics.py,sha256=Nppv0G7z0XIE8wHyWI3F04Vy1PY2iMVwvjyDcYBeS8A,6980
82
84
  pysmt/test/test_models.py,sha256=npqGoF-3DgAw0DTx6se32ZEZRFBJDcnkppzgyjLDbps,2748
83
85
  pysmt/test/test_native_qe.py,sha256=RGZgwbpAkPBTjIqcCbOkZ_nQXIDZ4Fznrr7Ldx6oA38,3439
84
- pysmt/test/test_nia.py,sha256=bYi1P3IVDPpsAKqMyV90wP-73lb_TgJCpOAj9RY2B_g,6500
85
- pysmt/test/test_nlira.py,sha256=T3d657oZeTP8wNkU_PdJOjywELnQT04B36OoMoVkokg,4795
86
+ pysmt/test/test_nia.py,sha256=x51d0X5jnZnxTPvPLrlD0WilunZ5uNrDU4vWY78_xpU,6640
87
+ pysmt/test/test_nlira.py,sha256=s2sTnkgYNxikMxyKkR9_0GJoRr017Dm7Bx8dbqgRpyw,4957
86
88
  pysmt/test/test_oracles.py,sha256=cHBPTUoi9cPmIvR-DG4bbzohOaBdUJzpKLoQXImxS_c,5615
87
- pysmt/test/test_portfolio.py,sha256=CNLuCfnf6PEAMJzLOiFTgm1-7qaEpGzafdoQwPvd2AY,7133
89
+ pysmt/test/test_portfolio.py,sha256=k0Jdrdr-EX-BVCxqYNUS3YjC77aCpzzdhezjB8U3OCM,7125
88
90
  pysmt/test/test_printing.py,sha256=iKOSUrA3aOsG27RQ84fXNqsUGmVHcGgN8mt05ThVGAw,8749
89
- pysmt/test/test_qe.py,sha256=hX81DSq_05xti3e6f0KTHgYMAbd-sSYG6gSN3ds-cLI,7136
91
+ pysmt/test/test_qe.py,sha256=k8zYX-lcij0ua9yuRXl7wErUklEgLSEh68QDpV8J9xs,7157
90
92
  pysmt/test/test_regressions.py,sha256=OHBptJUWQnUkXT17VH4z9Qea0QQeUF2v4sw_RYyottE,20119
91
- pysmt/test/test_rewritings.py,sha256=EZDYoFG965bxUy8CxzZRYAwPrZFQdZd509zQI6gU0Z4,15625
93
+ pysmt/test/test_rewritings.py,sha256=1eeseDwZyQD2VrOFBABXHTYJFJOXszP4olbCNeLcwfA,15607
92
94
  pysmt/test/test_shannon_expansion.py,sha256=yaiZuB24wj1Zi-KdzRTmWuzAVaF9bQ603uto7zi6XBs,3082
93
- pysmt/test/test_simplify.py,sha256=EdBm2rGD9OzQ2t7cuWjO0oUvSsni6gWHi4GvGTxogls,7620
95
+ pysmt/test/test_simplify.py,sha256=ckQn_DUxVvGspaRNZmSPHkudhpUlG5K2w6C0wDqhL1w,7620
94
96
  pysmt/test/test_size.py,sha256=p3aqCMHfBiGLxvF0P8hE-PRQTT8VMPIJCjblq8Txh1w,3261
95
- pysmt/test/test_solving.py,sha256=P7dH4q_VxOELH6KH59h0Bpgz8CUsziiPdjhQQqQTGbo,24829
97
+ pysmt/test/test_solving.py,sha256=8x9dNHbICFzHmCLZDR_Nnm3ScRal6seGoRRA89uOB4w,24906
96
98
  pysmt/test/test_sorts.py,sha256=erfInyPH91WVB8JBUYLteTo5X5skKKP3vEXdUUKC-YE,6033
97
99
  pysmt/test/test_string.py,sha256=Y6VBfkLNKuePo8-HIzcwBH3eaYj0i-k1Y8tpFyw03zw,8096
98
100
  pysmt/test/test_typechecker.py,sha256=obrRf5LSkrZjw2Kn7B4WNWVUykE7c9tU3jW-dEteHBs,6977
99
101
  pysmt/test/test_unsat_cores.py,sha256=J-ip4SInZ9l96NCsLsKmvIiSI04hKpdyrPeKRh6b6aM,6563
100
102
  pysmt/test/test_walker_ext.py,sha256=4x6Ew522P_0fLpKRIL0_0igB4I3_VrWWA4juuqolhag,3522
101
103
  pysmt/test/test_walkers.py,sha256=AKVMvEUtMBht08bE1vCMaeMtdgGa6j_weDSHz_9Br3Q,9481
102
- pysmt/test/configs/config1.ini,sha256=qq5n3Y92zVrB2OPIQWsNZ--e9xZz2lptEA5WxTBYJks,224
104
+ pysmt/test/configs/config1.ini,sha256=MAXPN6VVW-S7jpWmglMPN5a3JYgorTqKAF6cmfohMpo,224
103
105
  pysmt/test/configs/config_bad.ini,sha256=AOiZPmUcmAjVXOd5Bp4_euaYJG8EfccBy5iKUEcbxz8,88
104
106
  pysmt/test/smtlib/__init__.py,sha256=JXBHtcb4Lv-Sb8whc9JuGbRH2EBLWwtLUh3PL9HhNE8,650
105
- pysmt/test/smtlib/parser_utils.py,sha256=MpK9opJa3jPF-IsT7Bf79ihMXmwk7nL-b-k_ab2MU_8,8434
107
+ pysmt/test/smtlib/parser_utils.py,sha256=1e1AnrVgHbjL-nKGz-vbJfvECMc2iNEnAwCEi1cia4o,8635
106
108
  pysmt/test/smtlib/test_annotations.py,sha256=AyL8tZUMySQgUOmT8UPB_dnEglWCOo5EXM6kQxL_I3o,6209
107
109
  pysmt/test/smtlib/test_fuzzed.py,sha256=pswc1F2ngXMZo-laFOs6pXnDg69JMfGPx1vMTsXdAX0,2124
108
110
  pysmt/test/smtlib/test_generic_wrapper.py,sha256=Gn_cWynRWAFqUcAWpRgmJlkkwHcqdnARZN0-blRwM-Q,7869
@@ -126,10 +128,10 @@ pysmt/walkers/dag.py,sha256=pUdVTZx7CQyjrAb6jMfmsqS07J4kiDqHU8R4_9UvwkQ,5352
126
128
  pysmt/walkers/generic.py,sha256=q1j1T2RvCeJn1PM0H5d8vNV4FTYAEQgT7h8X5DJhDf8,4534
127
129
  pysmt/walkers/identitydag.py,sha256=f_D5qA198ayd3QO4u59fBX1RS_UiSBnPeV9O3ULvQv0,8737
128
130
  pysmt/walkers/tree.py,sha256=WIWN9IM0riWkaD40iP4Tt3BCN21iSdE1S7gRZqy56SU,2846
129
- PySMT-0.9.6.dev57.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
130
- PySMT-0.9.6.dev57.dist-info/METADATA,sha256=Wb4HLDmueg7wgTKByMmQn4a3gojJSLuD0HY9ksbwlyw,1620
131
- PySMT-0.9.6.dev57.dist-info/NOTICE,sha256=Ns-Jsa6nbqZUiTEEAM6HqioSZIxQ2RCJzxoBlWQaUfc,601
132
- PySMT-0.9.6.dev57.dist-info/WHEEL,sha256=-G_t0oGuE7UD0DrSpVZnq1hHMBV9DD2XkS5v7XpmTnk,110
133
- PySMT-0.9.6.dev57.dist-info/entry_points.txt,sha256=si0hIk-v3V35G3p8QGINoQ4QW-v4RYDRqj-asgyCgeM,58
134
- PySMT-0.9.6.dev57.dist-info/top_level.txt,sha256=NwHQbpTaZMEvjIUdC0bvvj-WUyULe-nt-opK3YQNRMk,6
135
- PySMT-0.9.6.dev57.dist-info/RECORD,,
131
+ PySMT-0.9.7.dev101.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
132
+ PySMT-0.9.7.dev101.dist-info/METADATA,sha256=Wvv5mXKVeky59iJ5yE0y4fIROQ6NJACTrg5LaPZ0NFo,1617
133
+ PySMT-0.9.7.dev101.dist-info/NOTICE,sha256=Ns-Jsa6nbqZUiTEEAM6HqioSZIxQ2RCJzxoBlWQaUfc,601
134
+ PySMT-0.9.7.dev101.dist-info/WHEEL,sha256=DZajD4pwLWue70CAfc7YaxT1wLUciNBvN_TTcvXpltE,110
135
+ PySMT-0.9.7.dev101.dist-info/entry_points.txt,sha256=si0hIk-v3V35G3p8QGINoQ4QW-v4RYDRqj-asgyCgeM,58
136
+ PySMT-0.9.7.dev101.dist-info/top_level.txt,sha256=NwHQbpTaZMEvjIUdC0bvvj-WUyULe-nt-opK3YQNRMk,6
137
+ PySMT-0.9.7.dev101.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.42.0)
2
+ Generator: bdist_wheel (0.43.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py2-none-any
5
5
  Tag: py3-none-any
pysmt/__init__.py CHANGED
@@ -16,7 +16,7 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- VERSION = (0, 9, 6, "dev", 57)
19
+ VERSION = (0, 9, 7, "dev", 101)
20
20
 
21
21
  # Try to provide human-readable version of latest commit for dev versions
22
22
  # E.g. v0.5.1-4-g49a49f2-wip
@@ -41,6 +41,11 @@ def check_version(module):
41
41
  import pyboolector
42
42
  version = "OK" # Just checking if import succeeds
43
43
 
44
+ elif module == "cvc5":
45
+ import cvc5
46
+ solver = cvc5.Solver()
47
+ version = solver.getVersion().decode('ascii')
48
+
44
49
  elif module == "cvc4":
45
50
  import CVC4
46
51
  version = CVC4.Configuration_getVersionString()
@@ -50,11 +55,8 @@ def check_version(module):
50
55
  version = picosat.picosat_version()
51
56
 
52
57
  elif module == "yices":
53
- import yicespy
54
- v = yicespy.__dict__['__YICES_VERSION']
55
- m = yicespy.__dict__['__YICES_VERSION_MAJOR']
56
- p = yicespy.__dict__['__YICES_VERSION_PATCHLEVEL']
57
- version = "%d.%d.%d" % (v, m, p)
58
+ import yices_api
59
+ version = yices_api.yices_python_version
58
60
  else:
59
61
  print("Invalid argument '%s'" % module)
60
62
  exit(-2)
pysmt/cmd/install.py CHANGED
@@ -20,8 +20,8 @@ import platform
20
20
  from collections import namedtuple
21
21
 
22
22
  from pysmt.cmd.installers import MSatInstaller, Z3Installer, PicoSATInstaller
23
- from pysmt.cmd.installers import CVC4Installer, YicesInstaller, BtorInstaller
24
- from pysmt.cmd.installers import CuddInstaller
23
+ from pysmt.cmd.installers import CVC5Installer, YicesInstaller, BtorInstaller
24
+ from pysmt.cmd.installers import CuddInstaller, CVC4Installer
25
25
  from pysmt.cmd.installers.base import solver_install_site
26
26
 
27
27
  from pysmt.environment import get_env
@@ -32,13 +32,13 @@ from pysmt import __version__ as pysmt_version
32
32
  Installer = namedtuple("Installer",
33
33
  ["InstallerClass", "version", "extra_params"])
34
34
  INSTALLERS = [
35
- Installer(MSatInstaller, "5.6.7", {}),
35
+ Installer(MSatInstaller, "5.6.10", {}),
36
+ Installer(CVC5Installer, "1.1.2", {}),
36
37
  Installer(CVC4Installer, "1.7-prerelease",
37
38
  {"git_version" : "391ab9df6c3fd9a3771864900c1718534c1e4666"}),
38
- Installer(Z3Installer, "4.8.17", {"osx": "10.16"}),
39
- Installer(YicesInstaller, "2.6.2",
40
- {"yicespy_version": "f0768ffeec15ea310f830d10878971c9998454ac"}),
41
- Installer(BtorInstaller, "3.2.1", {}),
39
+ Installer(Z3Installer, "4.13.0", {}),
40
+ Installer(YicesInstaller, "2.6.4", {"yices_api_version": "1.1.5"}),
41
+ Installer(BtorInstaller, "3.2.3", {}),
42
42
  Installer(PicoSATInstaller, "965",
43
43
  {"pypicosat_minor_version" : "1708010052"}),
44
44
  Installer(CuddInstaller, "2.0.3",
@@ -56,7 +56,7 @@ def get_requested_solvers():
56
56
  keys = requested_solvers_str.split(",")
57
57
  requested_solvers = [x.lower().strip() for x in keys]
58
58
  if "all" in requested_solvers:
59
- requested_solvers = [x.InstallerClass.SOLVER for x in INSTALLERS]
59
+ requested_solvers = [x.InstallerClass.SOLVER for x in INSTALLERS if x != "cvc4"]
60
60
  return requested_solvers
61
61
 
62
62
 
@@ -206,7 +206,7 @@ def main():
206
206
  all_solvers = options.all_solvers
207
207
  for i in INSTALLERS:
208
208
  name = i.InstallerClass.SOLVER
209
- if all_solvers or getattr(options, name):
209
+ if (all_solvers and name != "cvc4") or getattr(options, name):
210
210
  solvers_to_install.append(i)
211
211
 
212
212
  # Env variable controlling the solvers to be installed or checked
@@ -14,11 +14,12 @@
14
14
 
15
15
  from pysmt.cmd.installers.msat import MSatInstaller
16
16
  from pysmt.cmd.installers.z3 import Z3Installer
17
- from pysmt.cmd.installers.cvc4 import CVC4Installer
17
+ from pysmt.cmd.installers.cvcfive import CVC5Installer
18
+ from pysmt.cmd.installers.cvcfour import CVC4Installer
18
19
  from pysmt.cmd.installers.yices import YicesInstaller
19
20
  from pysmt.cmd.installers.btor import BtorInstaller
20
21
  from pysmt.cmd.installers.pico import PicoSATInstaller
21
22
  from pysmt.cmd.installers.bdd import CuddInstaller
22
23
 
23
- assert MSatInstaller and Z3Installer and CVC4Installer and YicesInstaller
24
- assert BtorInstaller and PicoSATInstaller and CuddInstaller
24
+ assert MSatInstaller and Z3Installer and CVC5Installer and YicesInstaller
25
+ assert BtorInstaller and PicoSATInstaller and CuddInstaller and CVC4Installer
@@ -98,7 +98,7 @@ class SolverInstaller(object):
98
98
 
99
99
  def download(self):
100
100
  """Downloads the archive from one of the mirrors"""
101
- if not os.path.exists(self.archive_path):
101
+ if self.archive_path and not os.path.exists(self.archive_path):
102
102
  for turn in range(self.trials_404):
103
103
  for i, link in enumerate(self.download_links()):
104
104
  try:
@@ -115,15 +115,16 @@ class SolverInstaller(object):
115
115
 
116
116
  def unpack(self):
117
117
  """Unpacks the archive"""
118
- path = self.archive_path
119
- if path.endswith(".zip"):
120
- SolverInstaller.unzip(path, directory=self.base_dir)
121
- elif path.endswith(".tar.bz2"):
122
- SolverInstaller.untar(path, directory=self.base_dir, mode='r:bz2')
123
- elif path.endswith(".tar.gz"):
124
- SolverInstaller.untar(path, directory=self.base_dir)
125
- else:
126
- raise ValueError("Unsupported archive for extraction: %s" % path)
118
+ if self.archive_path:
119
+ path = self.archive_path
120
+ if path.endswith(".zip"):
121
+ SolverInstaller.unzip(path, directory=self.base_dir)
122
+ elif path.endswith(".tar.bz2"):
123
+ SolverInstaller.untar(path, directory=self.base_dir, mode='r:bz2')
124
+ elif path.endswith(".tar.gz"):
125
+ SolverInstaller.untar(path, directory=self.base_dir)
126
+ else:
127
+ raise ValueError("Unsupported archive for extraction: %s" % path)
127
128
 
128
129
  def compile(self):
129
130
  """Performs the compilation if needed"""
@@ -0,0 +1,42 @@
1
+ # Copyright 2014 Andrea Micheli and Marco Gario
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ from __future__ import absolute_import
15
+
16
+ import os
17
+ import sys
18
+ import multiprocessing
19
+
20
+ from pysmt.cmd.installers.base import SolverInstaller
21
+
22
+
23
+ class CVC5Installer(SolverInstaller):
24
+
25
+ SOLVER = "cvc5"
26
+
27
+ def __init__(self, install_dir, bindings_dir, solver_version,
28
+ mirror_link=None, git_tag='master'):
29
+ SolverInstaller.__init__(self, install_dir=install_dir,
30
+ bindings_dir=bindings_dir,
31
+ solver_version=solver_version,
32
+ mirror_link=mirror_link)
33
+
34
+ def move(self):
35
+ pass
36
+
37
+ def compile(self):
38
+ print(self.bindings_dir)
39
+ SolverInstaller.run_python("-m pip install --upgrade --target=%s cvc5==%s" % (self.bindings_dir, self.solver_version))
40
+
41
+ def get_installed_version(self):
42
+ return self.get_installed_version_script(self.bindings_dir, "cvc5")
@@ -103,10 +103,10 @@ class MSatInstaller(SolverInstaller):
103
103
  if f.endswith(".so") or f.endswith(".dll") or f.endswith(".dylib"):
104
104
  SolverInstaller.mv(os.path.join(libdir, f), self.bindings_dir)
105
105
 
106
- # Fix issue in MathSAT 5.5.1 linking to incorrect directory on OSX
106
+ # Fix issue in MathSAT 5.6.10 linking to incorrect directory on OSX
107
107
  if self.os_name == "darwin":
108
108
  soname = glob.glob(self.bindings_dir + "/_mathsat*.so")[0]
109
- old_path = "/Users/alb/src/build_mathsat5/opt/libmathsat.dylib"
109
+ old_path = "/Users/alb/src/release/build/libmathsat.dylib"
110
110
  new_path = "%s/libmathsat.dylib" % self.bindings_dir
111
111
  SolverInstaller.run("install_name_tool -change %s %s %s" %
112
112
  (old_path, new_path, soname))
@@ -23,7 +23,7 @@ class YicesInstaller(SolverInstaller):
23
23
  SOLVER = "yices"
24
24
 
25
25
  def __init__(self, install_dir, bindings_dir, solver_version,
26
- mirror_link=None, yicespy_version='HEAD'):
26
+ mirror_link=None, yices_api_version=None):
27
27
 
28
28
  archive_name = "Yices-%s.tar.gz" % (solver_version)
29
29
  native_link = "https://github.com/SRI-CSL/yices2/archive/{archive_name}"
@@ -34,29 +34,9 @@ class YicesInstaller(SolverInstaller):
34
34
  native_link=native_link,
35
35
  mirror_link=mirror_link)
36
36
 
37
+ self.yices_api_version = yices_api_version
37
38
  self.extract_path = os.path.join(self.base_dir, "yices2-Yices-%s" % self.solver_version)
38
- self.yices_path = os.path.join(self.bindings_dir, "yices_bin")
39
- self.yicespy_git_version = yicespy_version
40
-
41
- def install_yicespy(self):
42
- yicespy_git_version = self.yicespy_git_version
43
- yicespy_base_name = "yicespy"
44
- yicespy_archive_name = "%s.tar.gz" % yicespy_base_name
45
- yicespy_archive = os.path.join(self.base_dir, yicespy_archive_name)
46
- yicespy_dir_path = os.path.join(self.base_dir,
47
- yicespy_base_name + "-" + yicespy_git_version)
48
-
49
- yicespy_download_link = "https://codeload.github.com/pysmt/yicespy/tar.gz/%s" % (yicespy_git_version)
50
- SolverInstaller.do_download(yicespy_download_link, yicespy_archive)
51
-
52
- SolverInstaller.clean_dir(yicespy_dir_path)
53
-
54
- SolverInstaller.untar(yicespy_archive, self.base_dir)
55
- # Build yicespy
56
- SolverInstaller.run_python("setup.py --yices-dir=%s -- build_ext bdist_wheel --dist-dir=%s " % (self.yices_path, self.base_dir),
57
- directory=yicespy_dir_path)
58
- wheel_file = glob.glob(os.path.join(self.base_dir, "yicespy") + "*.whl")[0]
59
- SolverInstaller.unzip(wheel_file, self.bindings_dir)
39
+ self.yices_path = os.path.join(self.base_dir, "yices_bin")
60
40
 
61
41
  def compile(self):
62
42
  # Prepare an empty folder for installing yices
@@ -69,8 +49,21 @@ class YicesInstaller(SolverInstaller):
69
49
  SolverInstaller.run("make", directory=self.extract_path)
70
50
  SolverInstaller.run("make install", directory=self.extract_path)
71
51
 
72
- self.install_yicespy()
73
-
52
+ if self.yices_api_version is None:
53
+ SolverInstaller.run_python("-m pip install --upgrade --target=%s yices" % self.bindings_dir)
54
+ else:
55
+ SolverInstaller.run_python("-m pip install --upgrade --target=%s yices==%s" % (self.bindings_dir, self.yices_api_version))
56
+
57
+ libdir = os.path.join(self.yices_path, "lib")
58
+ yices_api_file = os.path.join(self.bindings_dir, "yices_api.py")
59
+ with open(yices_api_file, 'r') as f:
60
+ lines = f.readlines()
61
+ if "sys.stderr.write" in lines[215]:
62
+ lines.pop(215)
63
+ if "else" in lines[226]:
64
+ lines.insert(226, " if _loadYicesFromPath('%s', libyicespath):\n return\n" % libdir)
65
+ with open(yices_api_file, 'w') as f:
66
+ f.write("".join(lines))
74
67
 
75
68
  def get_installed_version(self):
76
69
  return self.get_installed_version_script(self.bindings_dir, "yices")
@@ -24,62 +24,15 @@ class Z3Installer(SolverInstaller):
24
24
  SOLVER = "z3"
25
25
 
26
26
  def __init__(self, install_dir, bindings_dir, solver_version,
27
- mirror_link=None, osx=None, git_version=None, commit=None):
28
- arch = self.architecture
29
- if arch == "x86_64":
30
- arch = "x64"
31
-
32
- system = self.os_name
33
- if system == "linux":
34
- system = "glibc-2.31"
35
- elif system == "darwin":
36
- system = "osx-%s" % osx
37
- elif system == "windows":
38
- system = "win"
39
-
40
- if git_version is None:
41
- # Stable versions template
42
- if commit:
43
- archive_name = "z3-%s.%s-%s-%s.zip" % (solver_version, commit, arch, system)
44
- else:
45
- archive_name = "z3-%s-%s-%s.zip" % (solver_version, arch, system)
46
- native_link = "https://github.com/Z3Prover/z3/releases/download/z3-" + solver_version + "/{archive_name}"
47
- # print(native_link)
48
- else:
49
- # Nightly build template
50
- archive_name = "z3-%s.%s-%s-%s.zip" % (solver_version, git_version, arch, system)
51
- native_link = "https://github.com/pysmt/Z3bin/blob/master/nightly/{archive_name}?raw=true"
27
+ mirror_link=None):
52
28
 
53
29
  SolverInstaller.__init__(self, install_dir=install_dir,
54
30
  bindings_dir=bindings_dir,
55
31
  solver_version=solver_version,
56
- archive_name=archive_name,
57
- native_link=native_link,
58
32
  mirror_link=mirror_link)
59
33
 
60
- def move(self):
61
- bpath = os.path.join(self.extract_path, "bin")
62
- libfiles = []
63
- if self.os_name == "linux":
64
- libfiles += glob.glob(bpath + '/*.so')
65
- elif self.os_name == "darwin":
66
- libfiles += glob.glob(bpath + '/*.a')
67
- libfiles += glob.glob(bpath + '/*.dylib')
68
- elif self.os_name == "windows":
69
- libfiles += glob.glob(bpath + '/*.dll')
70
- libfiles += glob.glob(bpath + '/*.lib')
71
-
72
- SolverInstaller.mv(os.path.join(bpath, "python/z3"), self.bindings_dir)
73
-
74
- # z3 will check for shared libraries in z3/lib, before builtins.Z3_LIB_DIRS,
75
- # and Z3_LIBRARY_PATH env var lookup (or OS-level LD_LIBRARY_PATH)
76
- # (see z3/z3core.py)
77
- libpath = os.path.join(self.bindings_dir, "z3/lib/")
78
- if not os.path.exists(libpath):
79
- os.mkdir(libpath)
80
-
81
- for f in libfiles:
82
- SolverInstaller.mv(f, libpath)
34
+ def compile(self):
35
+ SolverInstaller.run_python("-m pip install --upgrade --target=%s z3-solver==%s" % (self.bindings_dir, self.solver_version))
83
36
 
84
37
  def get_installed_version(self):
85
38
  return self.get_installed_version_script(self.bindings_dir, "z3")
pysmt/configuration.py CHANGED
@@ -21,7 +21,7 @@ The following is an example of configuration file.
21
21
 
22
22
  [global]
23
23
  use_infix_notation: true
24
- solver_preference_list: msat z3 cvc4 z3-smt mathsat-smt
24
+ solver_preference_list: msat z3 cvc5 z3-smt mathsat-smt
25
25
 
26
26
  [smtlibsolver z3-smt]
27
27
  command: z3 -smt2 -in
pysmt/constants.py CHANGED
@@ -182,6 +182,15 @@ if USE_Z3:
182
182
  def __hash__(self):
183
183
  return hash(self.sexpr())
184
184
 
185
+ def __del__(self):
186
+ # This might be a small memory leak, but it seems that Z3 does not
187
+ # like subclassing z3.z3num.Numeral
188
+ #
189
+ # For some reason, it performs a double free, we need to investigate
190
+ # if this is a pysmt issue or a z3 issue. For now, we accept the
191
+ # minimal memory leak of the algebraic constants
192
+ pass
193
+
185
194
  else:
186
195
  class Numeral(object):
187
196
  """Represents a Number (Algebraic)"""
pysmt/factory.py CHANGED
@@ -38,8 +38,8 @@ from pysmt.solvers.qelim import (ShannonQuantifierEliminator,
38
38
  from pysmt.solvers.solver import SolverOptions
39
39
  from pysmt.solvers.portfolio import Portfolio
40
40
 
41
- DEFAULT_SOLVER_PREFERENCE_LIST = ['msat', 'z3', 'cvc4', 'yices', 'btor',
42
- 'picosat', 'bdd']
41
+ DEFAULT_SOLVER_PREFERENCE_LIST = ['msat', 'z3', 'cvc5', 'yices', 'btor',
42
+ 'picosat', 'bdd', 'cvc4']
43
43
  DEFAULT_QELIM_PREFERENCE_LIST = ['z3', 'msat_fm', 'msat_lw', 'bdd',
44
44
  'shannon', 'selfsub']
45
45
  DEFAULT_INTERPOLATION_PREFERENCE_LIST = ['msat']
@@ -230,7 +230,13 @@ class Factory(object):
230
230
  pass
231
231
 
232
232
  try:
233
- from pysmt.solvers.cvc4 import CVC4Solver
233
+ from pysmt.solvers.cvcfive import CVC5Solver
234
+ installed_solvers['cvc5'] = CVC5Solver
235
+ except SolverAPINotFound:
236
+ pass
237
+
238
+ try:
239
+ from pysmt.solvers.cvcfour import CVC4Solver
234
240
  installed_solvers['cvc4'] = CVC4Solver
235
241
  except SolverAPINotFound:
236
242
  pass
@@ -598,7 +604,7 @@ class Factory(object):
598
604
  # If PYSMT_SOLVER is "None" (literal None), the preference list will be empty
599
605
  #
600
606
  # Otherwise PYSMT_SOLVER is treated as a comma-separated list: e.g.
601
- # "msat, z3, cvc4"
607
+ # "msat, z3, cvc5"
602
608
  #
603
609
  import os
604
610
  ENV_SOLVER_LIST = os.environ.get("PYSMT_SOLVER")
@@ -90,6 +90,14 @@ else:
90
90
  else:
91
91
  import pyximport._pyximport3 as pyximport
92
92
 
93
+ if not hasattr(pyximport, "build_module"):
94
+ import sys
95
+ if sys.version_info < (3, 5):
96
+ # _pyximport3 module requires at least Python 3.5
97
+ import pyximport._pyximport2 as pyximport
98
+ else:
99
+ import pyximport._pyximport3 as pyximport
100
+
93
101
  pyx = pyximport.install()
94
102
  pyximport.uninstall(*pyx)
95
103
  build_dir = os.path.join(os.path.expanduser('~'), '.pyxbld')