argotorg / argotorg/solidity

[SMTChecker] Contract invariants - simplify expressions

Open
#11,464 2 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.