Open
Description
To improve the simplification mechanism of the backend, we require the addition of a syntactic
attribute in simplifications, which takes a list of positive integers. These integers would then indicate to the backend that the corresponding clauses in the requires
should be checked only syntactically. Two examples of this would be:
rule X <=Int Y => X <Int Y
requires notBool (X ==Int Y)
[simplification, syntactic(1)]
and
rule X <=Int Y => true
requires X <=Int Z
andBool Z <=Int Y
[simplification, concrete(Y, Z), syntactic(1)]
Note that, in the second example, there is a symbolic variable Z
introduced in the first clause that is not present in the LHS. This appears to be supported by the front-end if the corresponding module is marked as [symbolic]
. Optionally, we would like such variables to be supported also if the clause in they first appear is marked as syntactic.