Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Performance issue #24

Closed
Gy-Hu opened this issue Mar 17, 2025 · 8 comments
Closed

Performance issue #24

Gy-Hu opened this issue Mar 17, 2025 · 8 comments

Comments

@Gy-Hu
Copy link
Contributor

Gy-Hu commented Mar 17, 2025

For this case, ic3ref can solve <1s, but rIC3 cannot solve in minutes.

I haven't found the reason yet.

wrapper_add_w8.aig.txt

@gipsyh
Copy link
Owner

gipsyh commented Mar 20, 2025

The result given by IC3ref is unsafe, but I couldn’t find a bug using BMC. I suspect there might be a bug in IC3ref.

However, at the moment, rIC3 is indeed unable to solve this case, so improvements are definitely needed.

@zhanghongce
Copy link

zhanghongce commented Mar 28, 2025

Hi Yuheng, I'm reading the pull request: #25 and try to figure out what it is about.
Is it a change from checking $F_{last} \wedge bad$ to $F_{last} \wedge T \wedge bad_{next}$ ?
And is it related to this issue?

@gipsyh
Copy link
Owner

gipsyh commented Mar 28, 2025

Hi Professor Zhang, as you said, #25 changes from "finding bad in the last frame" to "finding a predecessor of bad in the last frame each time." This change is related to this issue, but it still does not resolve this case. Further analysis may be needed.

@gipsyh
Copy link
Owner

gipsyh commented Mar 28, 2025

Perhaps unrolling further so that the solver looks for the predecessor of the predecessor of bad instead of the predecessor of bad might be effective. I will try this later.

@zhanghongce
Copy link

zhanghongce commented Mar 28, 2025

Hi Yuheng, I suspect that the bug in IC3ref is related to how assumptions are handled. If I use ABC to fold the assumptions and give it to IC3ref aigain, IC3ref will not report any counterexample. I think Guangyu should open an issue in the repo of IC3ref (though I doubt if Aaron will fix it, because the last commit was 10 years ago).

Regarding the performance, in my opinion, this is in general a hard case for IC3, because its inductive invariant seems to be very large if it is expressed just using the latches without additional variables. Additionally, there happens to be no good internal signals to use either 😔

@gipsyh
Copy link
Owner

gipsyh commented Mar 29, 2025

Hi Professor Zhang, Lingfeng Zhu @zhfffy once found a bug in IC3ref and provided a detailed description in the attachment. I guess this might be the cause of the issue.

IC3Ref前继泛化方式的Bug及优化(1).pdf

@gipsyh
Copy link
Owner

gipsyh commented Mar 29, 2025

Regarding the performance, in my opinion, this is in general a hard case for IC3, because its inductive invariant seems to be very large if it is expressed just using the latches without additional variables. Additionally, there happens to be no good internal signals to use either 😔

Perhaps constructing new signals is necessary to resolve this issue.

@Gy-Hu
Copy link
Contributor Author

Gy-Hu commented Mar 29, 2025

@gipsyh yuheng, thanks for your sharing!! Since this is not the issue related to rIC3, I close this issue now.

@Gy-Hu Gy-Hu closed this as completed Mar 29, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants