Examples
========

This directory contains examples to get you started using pySMT. Suggested order:

1. `basic.py </examples/basic.py>`_ : First example of the README
2. `puzzle.py </examples/puzzle.py>`_ : Hello World word puzzle
3. `infix_notation.py </examples/infix_notation.py>`_ : Hello World word puzzle using infix-notation
4. `combine_solvers.py </examples/combine_solvers.py>`_ : Combine multiple solvers to solve the same
5. `model_checking.py </examples/model_checking.py>`_ : Model-Checking an infinite state system (BMC+K-Induction) in ~150 lines
6. `allsat.py </examples/allsat.py>`_ : How to access functionalities of solvers not currently wrapped by pySMT.
7. `generic_smtlib.py </examples/generic_smtlib.py>`_ : Shows how to use any SMT-LIB complaint SMT solver
8. `efsmt.py </examples/efsmt.py>`_ : Shows how to combine two different solvers to solve an Exists Forall problem.
9. `allsmt.py </examples/allsmt.py>`_ : How to detect the logic of a formula and perform model enumeration.
10. `sudoku/ </examples/sudoku/>`_ : Solves sudoku problems using a simple encoding using either QF_LIA or QF_BV
11. `parallel.py </examples/parallel.py>`_ : Shows how to use multi-processing to perform parallel and asynchronous solving
12. `smtlib.py </examples/smtlib.py>`_ : Demonstrates how to perform SMT-LIB parsing, dumping and extension
13. `einstein.py </examples/einstein.py>`_ : Shows the use of UNSAT Core as debugging tools
14. `xor.py </examples/xor.py>`_ : Equivalence checking of XOR rewriting using BitVectors
15. `qe.py </examples/qe.py>`_ : Quantifier Elimination of an LRA formula
16. `theory_combination.py </examples/theory_combination.py>`_ : Combine multiple theories (Array, BitVectors, Integer, and Reals) in the same formula
17. `portfolio.py </examples/portfolio.py>`_ : Portfolio solving
18. `strings.py </examples/strings.py>`_ : Example on the theory of Strings
