argotorg / argotorg/solidity

SMTChecker: Use SMT-LIB interface instead of solvers' APIs

Open
#14,891 1 comment 1 reaction 1 assignee Claimed by @blishko View on GitHub
smt
Dominant language
C++
Stars
25.7k
Forks
6.2k
Avg merge
2d 19h
Merged PRs (30d)
29

Description

This is an issue to keep track on the progress of replacing the usage of solvers' APIs with a unified way of using SMT-LIB interface.

My previous attempt to tackle this is in a PR draft #14369.
However, the task is too large to address in a single PR.
Thus we break it down to smaller steps:
We need to be able to parse responses of the solvers, which means we need to implement a parser for (a reasonable subset of) SMT-LIB format. Then we can support production of invariants and counterexample when using Eldarica.
Afterwards, we can add support for Z3 through SMT-LIB interface. If that works correctly, we can eventually remove Z3 as a library.

```[tasklist]
### Tasks
- [x] Add support for parsing SMT-LIB
- [x] Add support for invariants from Eldarica
- [ ] https://github.com/ethereum/solidity/issues/15706
- [x] Support Z3 through SMT-LIB interface
- [x] Switch completely to SMT-LIB interface and drop solvers' libraries
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.