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

BV/Int propagations #824

Closed
bclement-ocp opened this issue Sep 15, 2023 · 0 comments · Fixed by #1154
Closed

BV/Int propagations #824

bclement-ocp opened this issue Sep 15, 2023 · 0 comments · Fixed by #1154
Assignees
Milestone

Comments

@bclement-ocp
Copy link
Collaborator

When we have (dis|in)equalities between int2bv / bv2nat terms we should propagate the relevant information to the other theory. For instance, if we have bv2nat(x) = bv2nat(y), we should be able to learn x = y. This is the relational version of #801 (which is about computing int2bv / bv2nat values when their argument is known).

See also #749 for an incomplete implementation of this.

bclement-ocp added a commit to bclement-ocp/alt-ergo that referenced this issue Nov 23, 2023
This is a follow-up to OCamlPro#954

Somehow convinced myself that the cases where we perform simplifications
were fine because we would only be simplifying into a subterm, but that
is obviously not the case due to negation. Let's just do the safe thing
and always return the original term with the appropriate equalities.

All of this code should be removed in favor of doing these computations
in the relations instead anyways, which would make sure we always treat
[bv2nat] in the same way for literals and after substitution (see also
OCamlPro#824 )
bclement-ocp added a commit to bclement-ocp/alt-ergo that referenced this issue Nov 24, 2023
This is a follow-up to OCamlPro#954

Somehow convinced myself that the cases where we perform simplifications
were fine because we would only be simplifying into a subterm, but that
is obviously not the case due to negation. Let's just do the safe thing
and always return the original term with the appropriate equalities.

All of this code should be removed in favor of doing these computations
in the relations instead anyways, which would make sure we always treat
[bv2nat] in the same way for literals and after substitution (see also
OCamlPro#824 )
bclement-ocp added a commit to bclement-ocp/alt-ergo that referenced this issue Nov 24, 2023
This is a follow-up to OCamlPro#954

Somehow convinced myself that the cases where we perform simplifications
were fine because we would only be simplifying into a subterm, but that
is obviously not the case due to negation. Let's just do the safe thing
and always return the original term with the appropriate equalities.

All of this code should be removed in favor of doing these computations
in the relations instead anyways, which would make sure we always treat
[bv2nat] in the same way for literals and after substitution (see also
OCamlPro#824 )
bclement-ocp added a commit that referenced this issue Nov 24, 2023
This is a follow-up to #954

Somehow convinced myself that the cases where we perform simplifications
were fine because we would only be simplifying into a subterm, but that
is obviously not the case due to negation. Let's just do the safe thing
and always return the original term with the appropriate equalities.

All of this code should be removed in favor of doing these computations
in the relations instead anyways, which would make sure we always treat
[bv2nat] in the same way for literals and after substitution (see also
#824 )
@bclement-ocp bclement-ocp added this to the 2.6.0 milestone Jul 11, 2024
@bclement-ocp bclement-ocp linked a pull request Jul 11, 2024 that will close this issue
@bclement-ocp bclement-ocp self-assigned this Jul 22, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
1 participant