Open RaoMukkamala opened 9 years ago
I was also getting high-order quantification error. This is a snippet that the tool generates for the temporal test case:
one sig root
{ r_c0_A : c0_A -> State }
{ one t: State <: first |
(infinite and all t':t.*next | all c : (**@**r_c0_A.t'.@r_c0_B.t').@r_c0_C.t' | one c.@r_c0_D.t')
one t: State <: first |
(some t':t.*next | some (@r_c0_A.t'.@r_c0_B.t').@r_c0_C.t') }
If I remove "@" marked with stars then it works.
Issue is that root clafer is introduced in generator stage, not desugaring. So path from root to A does not get the necessary "this". In other words, in root level constraint reference to A should be resolved to "this.A" - same as in subclafers.
See the last constraint in this desugared test case:
0 .. * c0_A 0 .. * {
0 .. * c0_B 0 .. * {
0 .. * c0_C 0 .. * {
0 .. * c0_D 0 .. 1 {
}
}
[G one this . c0_C . c0_D]
}
[G (all c : this . c0_B . c0_C | one c . c0_D)]
}
[G (all c : c0_A . c0_B . c0_C | one c . c0_D)] [F some c0_A . c0_B . c0_C]assert [G (all c : c0_A . c0_B . c0_C | some c . c0_D)]
This looks quite complex; I will try to understand this for our meeting today.
Notes:
The constraint language is not fully supported in assertions.
In the above test case the assertion fails with the following error message Error message: