[SMTChecker] Contract invariants - simplify expressions
Open
smt
- Dominant language
- C++
- Stars
- 25.7k
- Forks
- 6.2k
- Avg merge
- 2d 19h
- Merged PRs (30d)
- 29
Description
From https://github.com/ethereum/solidity/pull/11451
Some of the reported expressions have the following patterns which could be simplified:
```
(* (- 1) x) => -x
!(x >= y) => (x < y)
(x >= y && x <= y) => x = y
(x - y >= 0 && x - y <= 0) => x = y
```
Contributor guide
Research direction
Start with the SMTChecker context and the linked pull request 11451, then trace how contract-invariant expressions produce the reported forms. Check each listed equivalence and consider the work complete when those expressions are emitted in their simplified forms.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp, solidity
- Domain
- compilers
- Issue type
- Refactor
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100