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

feat(BV): Add support for bv2nat/int2bv normal forms #1154

Merged
merged 5 commits into from
Aug 20, 2024

Commits on Aug 19, 2024

  1. feat(BV): Add support for bv2nat/int2bv normal forms

    Currently, Alt-Ergo knows the value of [bv2nat] and [int2bv] on
    constants. We also perform some simplifications during semantic value
    creation; however, these simplifications are not integrated into the
    rest of the solver. For instance, we know that [bv2nat(x @ y)] is equal
    to [bv2nat(x) * 2^n + bv2nat(y)] (where [n] is the bit-width of [y]),
    but we don't know that [z] is equal to the same under the hypothesis
    that [z = x @ y].
    
    This patch moves these simplifications to the [Bitv_rel] module, making
    them an integral part of the solving process. Since we can't compute
    [bv2nat] (or [int2bv]) of an arbitrary semantic value, we generate fresh
    variables to represent them when needed.
    bclement-ocp committed Aug 19, 2024
    Configuration menu
    Copy the full SHA
    742cd36 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    3308a0f View commit details
    Browse the repository at this point in the history
  3. Update CHANGES

    bclement-ocp committed Aug 19, 2024
    Configuration menu
    Copy the full SHA
    d947412 View commit details
    Browse the repository at this point in the history
  4. Clarifications

    bclement-ocp committed Aug 19, 2024
    Configuration menu
    Copy the full SHA
    9290d34 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    edd544a View commit details
    Browse the repository at this point in the history