Repository navigation
Remove the pySMT backend - #115
Merged
Merged
Conversation
solving="pysmt" was reachable only from Python, not from the CLI, and had four open bugs (#61, #90, #92, #93). The SMT-LIB backend (-s smt) covers the same solvers through solvers.toml. PySMT is no longer a requirement. The tests that used pySMT's z3 to check the encoding now use the SMT-LIB generator with the z3 binary (z3_generator and z3_check in conftest). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0177AhE9SXm3iJ1KP8GTSk6o
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
jkhav
approved these changes
Oct 27, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Removes the pySMT backend (
synthesis(solving="pysmt")) and the PySMT requirement.Why: the backend was reachable only from Python (the CLI's
-snever offered it), and it had four open bugs. The SMT-LIB backend (-s smt) drives the same solvers throughsolvers.toml.Closes #61, closes #90, closes #92, closes #93.
Changes
src/generator.py: allmode == "pysmt"branches are removed. The default mode is nowsmtlib.src/synth.py:solvingaccepts onlysmt,milporgurobi;"pysmt"raisesValueError.src/parser.py: the branches that read pySMT model values (is_true(),constant_value()) are removed. The other backends give bool, int, float or str.src/complex/*.py: unused pySMT imports are removed.requirements.txt:PySMTis dropped.z3-solverstays, because itsz3binary is one of the solvers CI detects.Tests
test_pysmt_*intest_solver_config.py,test_solver_errors.pyandtest_solver_processes.pytest_float_k_reaches_pysmt_as_an_integerz3_generator()andz3_check()helpers inconftest.py:test_generator.pyfilter_modelintest_pareto.pyVector.to_realintest_simulator.pyimport pysmtblocked: 780 passed and 3 failed. The 3 failures are the cvc5-parametrized tests, which fail only because cvc5 isn't installed on that machine (Invalid solver: cvc5). CI downloads cvc5.🤖 Generated with Claude Code
https://claude.ai/code/session_0177AhE9SXm3iJ1KP8GTSk6o