Open
Description
The backend does not support symbols with the anywhere
attribute. These symbols are like constructors, except they do not have no-confusion axioms with certain other constructors, based on user-defined anywhere
rules. Because certain no-confusion axioms are missing, we cannot unify anywhere
symbols as constructors, or indeed, at all. It is not our goal to support anywhere
symbols, but here is what would be required:
- Modify the frontend to omit
no-confusion
axioms between pairs of symbols related byanywhere
rules, but to include the others. Note that the relation between symbols is transitive, i.e. ifa
is related tob
, andb
is related toc
by anywhere rules, thena
is also related toc
. - Modify the backend to recognize (from the
no-confusion
axioms) which constructor-like symbols are not subject to confusion, instead of requiring that all constructors be free constructors. - Modify the backend to emit a warning when it is asked to unify two symbols subject to confusion. The backend will already terminate with an error if the incomplete unification prevents applying a rule.
- Eventually, if necessary, modify the frontend to emit modified
no-confusion
axioms based on the user-definedanywhere
rules, and modify the backend to apply these as needed. - Eventually, if necessary, modify the backend to apply user-defined
anywhere
rules during unification to symbols that may be confused