Skip to content
This repository has been archived by the owner on Aug 29, 2024. It is now read-only.

Add support for mutual recursion between the BV and the boolean fragment #68

Open
hargoniX opened this issue May 13, 2024 · 1 comment

Comments

@hargoniX
Copy link
Collaborator

hargoniX commented May 13, 2024

If we want to support features like if statements efficiently it is necessary to process theory terms that consist e.g. of some BV logic which contains a boolean term which contains again further BV logic etc. The main connective here is BitVec.ofBool.

@hargoniX
Copy link
Collaborator Author

Idea: As we preprocess, for each subterm of the form BitVec.ofBool x that we encounter we add the following statements to the context:

  • x -> BitVec.ofBool x = 1
  • !x -> BitVec.ofBool x = 0
    This must also be recursive within x as it might contain further BitVec logic.

The bv_unsat logic will pick up BitVec.ofBool x as an atom and thus recognize and encode these theorems properly.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant