-
Notifications
You must be signed in to change notification settings - Fork 35
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
Exports for the format TRS + small improvement to HRS export #1028
base: master
Are you sure you want to change the base?
Conversation
Hi Thiago. Here are a few first questions/remarks:
|
We can conclude confluence of R by Newman's Lemma and then confluence of R + beta using the orthogonal combinations criterion. However, I forgot to add that R must also be left-linear in order to apply this last criterion.
Indeed, but I was wondering whether we actually use this export to check confluence of multiple files at the same time. The use case that I have in mind is to check confluence/termination of a base file defining the theory over which we want to work, and in the ideal case only this file should declare rewrite rules (though this is not the case with all encodings, for instance in the case of Coq each inductive generates new rewrite rules). If we want to support this I propose that we use a less intrusive way of removing clashes, for instance adding a natural number after the name which increases by one for each file, and is separated from the rest of the name by a character that names should not use. |
Adding integers does not allow tracing back symbols and rewrite rules. It should be easy to identify in the output what comes from the input.
|
There is indeed a trade-off between readability and what you said. However, I think it is problematic when the names of the symbols are so big that the file becomes unreadable, and we are not able to see if the output really corresponds to the input. We could also add a comment in the output file saying
The function for printing terms is also different: a metavariable |
I have now put back qualified names, and removed the afsm export as I don't need it anymore |
This provides an export for the TRS format used by checkers such as Aprove. It can be used to check SN without beta, and only works for rewrite systems that satisfy the property that all LHSs and RHSs are fully-applied patterns (this is way beta is not covered). This is useful for checking confluence: if R is left-linear and locally confluent without using beta to close critical pairs and moreover R is SN then R+beta is confluent.
This also makes a small improvement to the HRS export: now bound variables are prefixed by
*
instead of$
, given that SOL and CSI^ho do not support the character$
in names but both support*
.