Skip to content

Comments

Fix CEX when --pseudo-init-prop is enabled#519

Merged
Po-Chun-Chien merged 1 commit intomainfrom
fix-pseudo-init-cex
Jan 30, 2026
Merged

Fix CEX when --pseudo-init-prop is enabled#519
Po-Chun-Chien merged 1 commit intomainfrom
fix-pseudo-init-cex

Conversation

@Po-Chun-Chien
Copy link
Collaborator

The pseudo-init transformation introduces an 1-step delay at the beginning, so we need to remove the first element of the cex.

The pseudo-init transformation introduces an 1-step delay at the beginning,
so we need to remove the first element of the cex.
@Po-Chun-Chien
Copy link
Collaborator Author

Po-Chun-Chien commented Jan 29, 2026

Here's a simple Btor2 example from which you could observe the differences in the CEX.

When using 309e07a (latest main):

$ ./pono --witness -e ic3ia diamond_2-1.btor2 
sat
b0
#0
@0
0 00000000000000000000000000000001 !{$(in_main#0)<$(in___VERIFIER_nondet_uint#0)<h#<__VERIFIER_nondet_uint.return>>>}@0
1 00000000000000000000000000000000 %{$(in_main#0)<main.return>}#1@0
@1
0 00000000000000000000000000000000 !{$(in_main#0)<$(in___VERIFIER_nondet_uint#0)<h#<__VERIFIER_nondet_uint.return>>>}@1
1 00000000000000000000000000000000 %{$(in_main#0)<main.return>}#1@1
@2
0 00000000000000000000000000000000 !{$(in_main#0)<$(in___VERIFIER_nondet_uint#0)<h#<__VERIFIER_nondet_uint.return>>>}@2
1 00000000000000000000000000000000 %{$(in_main#0)<main.return>}#1@2
@3
0 00000000000000000000000000000000 !{$(in_main#0)<$(in___VERIFIER_nondet_uint#0)<h#<__VERIFIER_nondet_uint.return>>>}@3
1 00000000000000000000000000000000 %{$(in_main#0)<main.return>}#1@3
.
$ ./pono --witness -e ic3ia --pseudo-init-prop diamond_2-1.btor2 
sat
b0
#0
@0
0 00000000000000000000000000000000 !{$(in_main#0)<$(in___VERIFIER_nondet_uint#0)<h#<__VERIFIER_nondet_uint.return>>>}@0
1 00000000000000000000000000000000 %{$(in_main#0)<main.return>}#1@0
@1
0 00000000000000000000000000000001 !{$(in_main#0)<$(in___VERIFIER_nondet_uint#0)<h#<__VERIFIER_nondet_uint.return>>>}@1
1 00000000000000000000000000000000 %{$(in_main#0)<main.return>}#1@1
@2
0 00000000000000000000000000000000 !{$(in_main#0)<$(in___VERIFIER_nondet_uint#0)<h#<__VERIFIER_nondet_uint.return>>>}@2
1 00000000000000000000000000000000 %{$(in_main#0)<main.return>}#1@2
@3
0 00000000000000000000000000000000 !{$(in_main#0)<$(in___VERIFIER_nondet_uint#0)<h#<__VERIFIER_nondet_uint.return>>>}@3
1 00000000000000000000000000000000 %{$(in_main#0)<main.return>}#1@3
@4
0 00000000000000000000000000000000 !{$(in_main#0)<$(in___VERIFIER_nondet_uint#0)<h#<__VERIFIER_nondet_uint.return>>>}@4
1 00000000000000000000000000000000 %{$(in_main#0)<main.return>}#1@4
.

Copy link
Member

@CyanoKobalamyne CyanoKobalamyne left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, LGTM!

@Po-Chun-Chien Po-Chun-Chien merged commit b19eafb into main Jan 30, 2026
6 checks passed
@Po-Chun-Chien Po-Chun-Chien deleted the fix-pseudo-init-cex branch January 30, 2026 11:17
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

Successfully merging this pull request may close these issues.

2 participants