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

Implement UF/DT theory restrictions #36

Merged
merged 6 commits into from Apr 29, 2020
Merged

Implement UF/DT theory restrictions #36

merged 6 commits into from Apr 29, 2020

Conversation

Gbury
Copy link
Owner

@Gbury Gbury commented Apr 27, 2020

This is still WIP, but contains quite a few changes:

  • the typechecker and typing loop are adapted to reject declarations that do not respect the restrictions imposed by the (lack of) UF/DT theories
  • some additions to error reporting which is missing a few cases (still in progress)
  • the representation of smtlib logic is a bit more structured now, restrictions are transformed into a set of features represented as field of a record
  • the parsing of smtlib logic is made a bit more strict by taking into account:
    • the order in which theories can appear in a logic name
    • the fact the a theory can not be repeated in a logic name

This last point probably some review/comment by @bobot , who should be more knowledgeable about whether it is correct/reasonable; the idea was to not allow to parse logic such as LIABVQF_ANIRA, which the current code happily parses, even though it's not really a valid theory declaration (it's incoherent with respect to arithmetic for instance).

@bobot
Copy link
Contributor

bobot commented Apr 27, 2020

Are you sure of the A for array just after QF_? Do you have a source? Otherwise refusing LIANIRA is good.

@Gbury
Copy link
Owner Author

Gbury commented Apr 28, 2020

Well, I mostly looked at all the logics listed on http://smtlib.cs.uiowa.edu/logics.shtml , which contains QF_ABV , QF_AUFBV, QF_ALIA and QF_AUFLIA, so it seems that the array theory can indeed occur after a QF_, or did I miss something ?

@bobot
Copy link
Contributor

bobot commented Apr 28, 2020

This list of logic is not exhaustive. However the code of CVC4 give you reason. There are some hacks to accept some commutation, we accept more of them.

EDIT: clarify

@Gbury
Copy link
Owner Author

Gbury commented Apr 29, 2020

Ok, so this should be fine to merge ?

@Gbury
Copy link
Owner Author

Gbury commented Apr 29, 2020

I'll merge, but don't hesitate to open issues if there are more logics that should be supported.

@Gbury Gbury merged commit 0d17af7 into master Apr 29, 2020
@Gbury Gbury deleted the theory_restriction branch August 2, 2022 14:46
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.

None yet

2 participants